Jonkman Microblog
  • Login
Show Navigation
  • Public

    • Public
    • Network
    • Groups
    • Popular
    • People

Notices by Nolan (nolan@toot.cafe), page 31

  1. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 16:24:52 EDT Nolan Nolan
    • Super Genius Stuff

    @mdm It may be my eyes deceiving me, but that looks like just an opacity filter? Compare to Firefox and Chrome, which ought to look similar. Here's a screenshot of that same profile in Edge 17 and Safari 11, which do support backdrop-filter. https://toot.cafe/media/dBNqy3nYiSpdV1bBNrg https://toot.cafe/media/Q1ANWPjRvOo2ELVk4ms

    In conversation Tuesday, 17-Apr-2018 16:24:52 EDT from toot.cafe permalink
  2. 💾 sophia_park.dmg (sophia@cybre.space)'s status on Tuesday, 17-Apr-2018 14:45:00 EDT 💾 sophia_park.dmg 💾 sophia_park.dmg

    Mozilla just put out an Internet Health Report with a whole section on decentralisation, as well as an article on centralised social media. The fediverse does not exist in it https://internethealthreport.org/2018/social-media-giants-facebook-tencent-google-reign/

    In conversation Tuesday, 17-Apr-2018 14:45:00 EDT from cybre.space permalink Repeated by nolan

    Attachments

    1. File without filename could not get a thumbnail source.
      Social media giants Facebook, Tencent, Google reign
      By Kasia Odrozek
      Social media giants Facebook, Tencent, Google reign
  3. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 14:48:54 EDT Nolan Nolan
    • Rain 🚱
    • 🥑🥑🥑🥑🥑

    @paeneultima @grainloom Yeah, agree it's a bit painful atm. On the backlog. :) https://github.com/nolanlawson/pinafore/issues/11

    In conversation Tuesday, 17-Apr-2018 14:48:54 EDT from toot.cafe permalink

    Attachments

    1. Invalid filename.
      Easier instance switching · Issue #11 · nolanlawson/pinafore
      from GitHub
      Right now you have to go into the settings to switch instances, but it'd be nice if you could do it from the home page.
  4. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 14:46:50 EDT Nolan Nolan
    • Mx. Sina
    • Cafe Robbie

    @sina @Alamantus I took a look at Mastodon's own dark theme and it appears to use black-on-white for textboxes as well… So this may have been intentional. I didn't actually write the dark themes though. :)

    In conversation Tuesday, 17-Apr-2018 14:46:50 EDT from toot.cafe permalink
  5. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 14:39:56 EDT Nolan Nolan
    • Cafe Robbie

    @Alamantus Welcome! ☕

    In conversation Tuesday, 17-Apr-2018 14:39:56 EDT from toot.cafe permalink
  6. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 14:38:06 EDT Nolan Nolan
    • rowan

    @rowan Done! :sadglasses:

    In conversation Tuesday, 17-Apr-2018 14:38:06 EDT from toot.cafe permalink
  7. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 14:36:53 EDT Nolan Nolan
    • Super Genius Stuff

    @mdm Sometimes the trajectories are similar because we're both largely tied to the OS. So my hunch about backdrop-filter is that it was easy for us to implement, since we only have to implement it for Windows, and ditto for Safari who only really needs to worry about iOS/macOS.

    Although the WebKit team does also still maintain Windows/Linux versions IIRC, so not sure how that figures into their prioritization. It'd be interesting to see if Epiphany browser on Linux supports backdrop-filter. 😊

    In conversation Tuesday, 17-Apr-2018 14:36:53 EDT from toot.cafe permalink
  8. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 11:37:51 EDT Nolan Nolan

    BTW I have nothing against CSS-in-JS as an authoring format; it just never made much sense to me as a format to actually deploy in production. The browser has to parse the CSS twice (once as JS strings, once as CSS), which is a perf cost. Also it makes CSP for inline CSS difficult.

    In conversation Tuesday, 17-Apr-2018 11:37:51 EDT from toot.cafe permalink
  9. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 11:35:26 EDT Nolan Nolan

    Looks like mini-css-extract-plugin may be the Webpack async CSS behavior I've been dreaming of. It works by extracting CSS as (get this) actual CSS files! https://github.com/webpack-contrib/mini-css-extract-plugin

    That means no more CSS-in-JS, which has already shaved ~70kB off of Pinafore's total JS size. Also there aren't dozens of inline <style> tags, meaning I might be able to eventually restrict inline CSS via CSP. https://github.com/nolanlawson/pinafore/pull/145

    In conversation Tuesday, 17-Apr-2018 11:35:26 EDT from toot.cafe permalink

    Attachments

    1. Invalid filename.
      better JS size and async CSS with mini-css-extract-plugin by nolanlawson · Pull Request #145 · nolanlawson/pinafore
      from GitHub
      This uses mini-css-extract-plugin to shave about 70kB off the total combined size of all JS chunks, by (gasp!) using actual CSS files instead of embedding everything in JS. Unfortunately the older ...
  10. Nolan (nolan@toot.cafe)'s status on Tuesday, 17-Apr-2018 11:20:36 EDT Nolan Nolan
    • Elias MÃ¥rtenson

    @loke Did you revoke the token for your login to the instance? If you look in the Dev Tools in the network tab you may see what the actual network error was.

    In conversation Tuesday, 17-Apr-2018 11:20:36 EDT from toot.cafe permalink
  11. Nolan (nolan@toot.cafe)'s status on Monday, 16-Apr-2018 19:37:12 EDT Nolan Nolan
    • Kit Redgrave 🕯

    @KitRedgrave It depends. Sometimes stuff should run in parallel, so it makes sense not to `await` in serial. E.g. here's an example from Pinafore where I want to kick off a network request early, but then also wait on a local IndexedDB call: https://github.com/nolanlawson/pinafore/blob/7b848db140b3766cdb8f55eee174ac4acf3cce28/routes/_utils/sync.js#L1-L18

    In conversation Monday, 16-Apr-2018 19:37:12 EDT from toot.cafe permalink

    Attachments

    1. Invalid filename.
      nolanlawson/pinafore
      from GitHub
      pinafore - Alternative web client for Mastodon
  12. Jag Talon (jag@toot.cafe)'s status on Monday, 16-Apr-2018 16:15:10 EDT Jag Talon Jag Talon
    • Rachel Nabors

    We were out for a bit, but now we're back with a new episode! Here we interview @rachelnabors in Seattle.

    I really enjoyed interviewing her because the breadth of knowledge that she has in tech is incredible. Don't miss out on this one!

    https://itunes.apple.com/us/podcast/friends-talk-frontend/id1190447982

    In conversation Monday, 16-Apr-2018 16:15:10 EDT from toot.cafe permalink Repeated by nolan
  13. Nolan (nolan@toot.cafe)'s status on Monday, 16-Apr-2018 17:47:31 EDT Nolan Nolan
    • Rain 🚱

    @grainloom The pictures are sometimes kinda big, so I did this as a compromise. Maybe I should make the header visible when you hover the non-frosted area though, hmmmm...

    In conversation Monday, 16-Apr-2018 17:47:31 EDT from toot.cafe permalink
  14. Nolan (nolan@toot.cafe)'s status on Sunday, 15-Apr-2018 01:59:22 EDT Nolan Nolan
    • Maxime

    #Pinafore v0.2.0 is out!

    - new "Sorcery" theme by @mlcdf
    - block/unblock accounts
    - mute/unmute accounts
    - CSP for better security
    - fix emojos in CWs
    - perf and UI fixes

    Release notes: https://github.com/nolanlawson/pinafore/releases/tag/v0.2.0 https://toot.cafe/media/HoUCsRuVey9LKqTe-HY

    In conversation Sunday, 15-Apr-2018 01:59:22 EDT from toot.cafe permalink
  15. Nolan (nolan@toot.cafe)'s status on Thursday, 12-Apr-2018 03:10:29 EDT Nolan Nolan

    Oh and also #Pinafore now deploys to https://dev.pinafore.social on every GitHub commit, meaning you can test bleeding-edge stuff there. We've also got Travis tests set up though, so hopefully stuff shouldn't be too broken.

    It's starting to feel like a real open-source project! :blobaww: Travis badges and tests and everything. Good time for me to call it a night.

    In conversation Thursday, 12-Apr-2018 03:10:29 EDT from toot.cafe permalink
  16. Nolan (nolan@toot.cafe)'s status on Monday, 09-Apr-2018 22:45:03 EDT Nolan Nolan

    To upgrade Pinafore:

    1. Go to the app store
    2. Accept 200 permissions
    3. Download a 30MB binary

    Just kidding! Refresh your browser until https://pinafore.social/settings/about says you're on version 0.1.2. #ItsJustAWebsite 😉

    In conversation Monday, 09-Apr-2018 22:45:03 EDT from toot.cafe permalink
  17. Nolan (nolan@toot.cafe)'s status on Monday, 09-Apr-2018 11:42:16 EDT Nolan Nolan
    in reply to
    • ElfLord aka "Bone Daddy"

    Pinafore is an alternative web client for Mastodon that I'm releasing today. The goal is to make a lightweight standalone web app that can plug into multiple instances, with a UI focused on speed and simplicity.

    Pinafore is still beta-quality in places, but it's already the main client @ElfLord and I have been using for the past few weeks. I've been working on it since the start of this year. Hope y'all like it. 😊

    In conversation Monday, 09-Apr-2018 11:42:16 EDT from toot.cafe permalink
  18. Nolan (nolan@toot.cafe)'s status on Monday, 09-Apr-2018 11:37:17 EDT Nolan Nolan

    New blog post: "Introducing Pinafore for Mastodon" https://nolanlawson.com/2018/04/09/introducing-pinafore-for-mastodon/

    In conversation Monday, 09-Apr-2018 11:37:17 EDT from toot.cafe permalink

    Attachments

    1. Invalid filename.
      Introducing Pinafore for Mastodon
      By Nolan Lawson from Read the Tea Leaves

      Today I’m happy to announce a project I’ve been quietly working on for some time: Pinafore. Pinafore is an alternative web client for Mastodon, which looks like this:

      Here are some of its features:

      • Speed. Pinafore is built on Svelte, meaning it’s faster and lighter-weight[1] than most web apps.
      • Simplicity. Single-column layout, easy-to-read text, and large images.
      • Multi-account support. Log in to multiple instances and set a custom theme for each one.
      • Works offline. Recently-viewed timelines are fully browsable offline.
      • PWA. Pinafore is a Progressive Web App, so you can add it to your phone’s home screen and it will work like a native app.
      • Private. All communication is private between your browser and your instance. No ads or third-party trackers.

      Pinafore is still beta quality, but I’m releasing it now to get early feedback. Of course it’s also open-source, so feel free to browse the source code.

      In the rest of this post, I want to share a bit about the motivation behind Pinafore, as well as some technical details about how it works.

      If you don’t care about technical details, you can skip to pinafore.social or read the user guide.

      The need for speed

      I love the Mastodon web app, and I’ve even contributed code to it. It’s a PWA, it’s responsive, and it works well across multiple devices. But eventually, I felt like I could make something interesting by rewriting the frontend from scratch. I had a few main goals.

      First off, I wanted the UI to be fast even on low-end laptops or phones. For Pinafore, my litmus test was whether it could work well on a Nexus 5 (released in 2013).

      Having set the bar that high, I made some hard choices to squeeze out better performance:

      • For the framework, I chose Sapper and Svelte because they offer state-of-the-art performance, essentially compiling to vanilla JavaScript.
      • To be resilient on slow connections, or Lie-Fi, or when offline altogether, Pinafore stores data locally in IndexedDB.
      • To use less memory, Pinafore keeps only a fraction of its UI state in memory (most is stored in IndexedDB), and it uses a fully virtual list to reduce the number of DOM nodes.

      Other design decisions that impacted performance:

      • Uses the native system font
      • Uses the built-in emoji (except for custom emoji)
      • Uses mostly simple, flat CSS class selectors
      • Uses CSS Grid to avoid unnecessary wrapper divs

      I also chose to only support modern browsers – the latest versions of Chrome, Edge, Firefox, and Safari. Because of this, Pinafore is able to directly ship modern JavaScript instead of using something like Babel to compile down to a more bloated ES5 format. It also loads a minimum of polyfills, and only for those browsers that need them.

      Privacy is key

      Thanks to the magic of CORS, Pinafore is an almost purely client-side web app[2]. When you use the Pinafore website, your browser communicates directly with your instance’s public API, just like a native app would. The only job of the pinafore.social server is to serve up HTML, CSS, and JavaScript.

      This not only makes the implementation simpler: it also guarantees privacy. You don’t have to trust Pinafore to keep your data safe, because it never handles it in the first place! All user data is stored in your browser, and logging out of your instance simply deletes it.

      And even if you don’t trust the Pinafore server, it’s an open-source project, so you can always run it locally. Like the Mastodon project itself, I gave it an AGPL license, so you can host it yourself as long as you make the modified source code available.

      Q & A

      What’s with the name?

      Pinafore is named after my favorite Gilbert and Sullivan play. If you’re unfamiliar, this bit from The Simpsons is a great intro.

      Does it work without JavaScript?

      Pinafore’s landing page works without JavaScript for SEO reasons, but the app itself requires JavaScript. Although Server-Side Rendering (SSR) is possible, it would require storing user data on Pinafore’s servers, and so I chose to avoid it.

      Why are you trying to compete with Mastodon?

      Pinafore doesn’t compete with Mastodon; it complements it. Mastodon has a very open API, which is what allows for the flourishing of mobile apps, command-line tools, and even web clients like halcyon.social or Pinafore itself.

      One of my goals with Pinafore is to take a bit of the pressure off the Mastodon project to try to be all things to all people. There are lots of demands on Mastodon to make small UI tweaks to suit various users’ preferences, which is a major source of contention, and also partly the motivation for forks like glitch-soc.

      But ideally, the way a user engages with their Mastodon instance should be up to that user. As a user, if I want a different background color or for images to be rendered differently, then why should I wait for the Mastodon maintainers or my admin to make that change? I use whatever mobile app I like, so why should the web UI be any different?

      As Eugen has said, the web UI is just one application out of many. And I don’t even intend for Pinafore to replace the web UI. There are various features in that UI that I have no plans to implement, such as administration tools, moderation tools, and complex multi-column scenarios. Plus, the web UI is the landing page for each instance, and an opportunity for those instances to be creative and express themselves.

      Why didn’t you implement <x feature>?

      As with any project, I prioritized some features at the expense of others. Some of these decisions were based on design goals, whereas others were just to get a working beta out the door. I have a list of goals and non-goals in the project README, as well as a roadmap for basic feature parity with the Mastodon web UI.

      Why didn’t you use the ActivityPub client-to-server API?

      ActivityPub defines both a server-to-server and a client-to-server API, but Mastodon only supports the former. Also, Mastodon’s client-to-server API is supported by other projects like Pleroma, so for now, it’s the most practical choice.

      What’s your business model?

      None. I wrote Pinafore for fun, out of love for the Mastodon project.

      How can I chip in?

      I’m a privileged white dude living in a developed country who works for a large tech company. I don’t need any donations. Please donate to Eugen instead so he can continue making Mastodon better!

      Thanks!

      If you’ve read this far, give Pinafore a try and tell me what you think.

      Footnotes

      1. Measuring the size of the JavaScript payload after gzip when loading the home feed on a desktop browser, I recorded 333KB for Pinafore, 1.01MB for mastodon.social, and 2.25MB for twitter.com.

      2. For the purpose of readable URLs, some minor routing logic is done on the server-side. For instance, account IDs, status IDs, instance names, and hashtags may be sent to the server as part of the URL. But on modern browsers, this will only occur if you explicitly navigate to a page with that URL and the Service Worker hasn’t already been activated, or you hard-refresh. In the vast majority of cases, the Service Worker should handle these URLs, and thus even this light metadata is not sent to the server.

  19. Nolan (nolan@toot.cafe)'s status on Wednesday, 04-Apr-2018 15:33:00 EDT Nolan Nolan

    "Why Have We Soured on the 'Devil’s Advocate'?" by Nitsuh Abebe https://www.nytimes.com/2018/04/03/magazine/why-have-we-soured-on-the-devils-advocate.html

    This is a good piece on why it's so hard to have reasoned debates online.

    In conversation Wednesday, 04-Apr-2018 15:33:00 EDT from toot.cafe permalink
  20. Nolan (nolan@toot.cafe)'s status on Monday, 02-Apr-2018 18:46:24 EDT Nolan Nolan
    • moderatrix jess

    @jessiscah24 I think `npm install --verbose` should give you more info? `ws` is websockets, maybe it has a native dependency or something that is failing.

    In conversation Monday, 02-Apr-2018 18:46:24 EDT from toot.cafe permalink
  • After
  • Before
  • Help
  • About
  • FAQ
  • TOS
  • Privacy
  • Source
  • Version
  • Contact

Jonkman Microblog is a social network, courtesy of SOBAC Microcomputer Services. It runs on GNU social, version 1.2.0-beta5, available under the GNU Affero General Public License.

Creative Commons Attribution 3.0 All Jonkman Microblog content and data are available under the Creative Commons Attribution 3.0 license.

Switch to desktop site layout.