Take

Later posts →

Brent Simmons: More on the Default Feeds Issue

I’m trying to figure out what bothers me. I think there are two things.

One is just that the App Store has always seemed rather arbitrary. The guidelines don’t even have to change for unseen policies to change, and it’s impossible to know in advance if a thing you’re doing will be okay and stay okay. (Recall that NetNewsWire has been doing the same thing with default feeds for 18 years.)

This gets really tiring, because every time we submit an app — even just a bug-fix release, like 5.0.1 is — I have to deal with the anxiety as I wonder what’s going to happen this time.

The other issue is a little harder to explain, but it goes like this:

If a site provides a public feed, it’s reasonable to assume that RSS readers might include that feed in some kind of discovery mechanism — they might even include it as a default. This is the public, open web, after all.

Now, if NetNewsWire were presenting itself as the official app version of Daring Fireball, for instance, then that would be dishonest. But it’s not, and that’s quite clear.

To nevertheless require documentation here is for Apple to use overly-fussy legal concerns in order to infantilize an app developer who can, and does, and rather would, take care of these things himself.

In other words: lay off, I want to say. I’m an adult with good judgment and I’ve already dealt with this issue, and it’s mine to deal with.

I have been complaining about the App Store since its inception, but it's worth repeating that it's not just dolts like me who don't like it. It's arbitrary in ways that defeat its purpose, demean its constituents and take for itself the crown of only responsible grown-up. Responsible grown-ups bring up and infuse their kids with values, yes, but would walk on burning embers to give them the freedom to do with their lives what they want. Extracting new rules from the same list of information and applying it suddenly and unevenly is capricious.

It would take an incredible balancing act to actually run an app store well. Apple has done the best job of it so far, but it's still a tire fire that inhibits applications legitimate developers want to write. These events are not representative of every app review process ever, but they are representative of what happens when you have an app review process and you live in the real world. It doesn't have to happen in most of the cases to be a disgrace and an impediment.

Saagar Jha: Why we at $FAMOUS_COMPANY Switched to $HYPED_TECHNOLOGY

A slightly less complimentary, but no less true, take on today's theme.

(Also, that decision to allow Markdown in titles is coming out in force right out of the gates.)

Tom MacWright: Second-guessing the modern web

The emerging norm for web development is to build a React single-page application, with server rendering. The two key elements of this architecture are something like:

  1. The main UI is built & updated in JavaScript using React or something similar.
  2. The backend is an API that that application makes requests against.

This idea has really swept the internet. It started with a few major popular websites and has crept into corners like marketing sites and blogs.

It's hard to quote just one bit but there's a lot in here. React (and many single-page application architectures) is a good fit for managing a certain level of complexity as long as you don't ask of it more than it can deliver.

For simple things, you can often get it done with simpler solutions. Take has no visible JavaScript if you're just visiting the site as it is. That's not a dogmatic decision – if I need to bring in JavaScript for compelling functionality I will, but there's no need for that at present. I'm writing this into a post editor right on the front page, with Markdown rendered live as I type, and the JavaScript and CSS to support it is being conditionally included when I'm visiting the site.

I love the basic idea behind React, which is to solve the inevitable problem anyone who tried to "just hook together" functionality using jQuery ran into, which is drift and divergence in UI logic. Doing iterative things to bodge something into just the right state from all over the place, and getting things done right up until the point where you start cursing your own love for expediency.

But React comes with the associated mess every JavaScript framework comes with. It's not the language as such (even though it has perhaps the worst standard library design sighted by reliable witnesses), it's that you have to use ten tonnes of slow-moving, complex infrastructure to build a pipeline for module loading and code splitting and minification and source maps, not to mention cross-compiling down to the revision of the language people can actually run. And it's the kind of thing that you don't do exactly the same on all projects, and the whole world moves enough that you can't really just crib a version from another project, because if there isn't a new language feature or technique you want to use, there's damn sure a new version of the bundler which promises to fix some inherent corner case you keep running into.

To their credit, the React team has made create-react-app which is a command line tool to generate, wrap and maintain a known good configuration of one such solution, but to configure it you have to "eject" from the ecosystem, and at that point you're in the same place you were. Angular also comes with a command line tool for related but not identical reasons, and it's emblematic of the problem and the culture. Pulling down a stack of paper that would reach your ceiling a few times over is not seen as an issue.

Even if snapping your finger and getting everything tooling-related working was possible, which I'm sure it is at Facebook where React is developed, the next round of problems arise, which is that having flipped the world on its head, you now have to find, develop, document and cohere a new set of solutions to all related problems, like, oh, fetching data and handling the evolution of state, which are inherent problems in all projects where React solves anything.

Dan Abramov of the React team and creator of Redux (which I also like) describes the issue from Tom's post as straddling the server-client divide and requiring a holistic solution, which may be true, but pretty much locks everyone into running JavaScript on the server (or the React team into providing server-side parts for all major server-side frameworks), and preferably committing yourself to ancillary technologies like GraphQL. One of my big problems with React is much bigger with GraphQL – that normal use cases like "authenticating", "mutating data" or "understanding how the hell you implement something that if unconstrained can basically cause you to need to generate arbitrary queries on your server" are tackled only incidentally and hand-wavily, and can never be thorough enough, seeing as how GraphQL is a specification instead of a library.

There are many things that can be done with JavaScript that make so-called single-page applications worth thinking about. And it's easy to see everyone who questions the state-of-the-art as either grumps or web haters. But Tom's post shines a light on the spectrum of solutions and serves as a good reminder that simple solutions can be the most appropriate and that React has a long way to go before all parts of using it are as attractively coined as the core, which was rooted in an actual problem, observation and mitigation that brings many of us in to begin with.

I believe in the web as a platform that is uniquely suited for many things, but also as a stack of technologies whose characteristics and limitations should be understood and respected to achieve the best result. Focusing on scaffolding and tooling and reworking revolutionary internals in order for brief code samples to become more powerful risks missing that the extra effort to support this process is a significant cognitive and operational load for everyone who uses the framework, and plants the expectation for newcomers that it's okay for 5000 things to go on behind your back, which is poisonous to learning and an impediment to problem solving.

Titles

Titles of entries are weird. In many places they're supposed to be "that entry from X named Y". You pick something good and that's it, nothing's ever supposed to have that name again – what programmers call "namespacing". I'm trying to let a title just become a headline here, and there may be dozens of entries with that title. Not in the same day, mind you. But maybe recurring.

(Except that this could be the definite answer here to why titles are then even weirder on Take than in many other places. I'm not saying I'll turn the car around if that ever happens, just that I'm trying not to let finding the perfect title hold stuff up.)

Odd

One of the things that rub me sideways about iPadOS or iOS or some of Apple's newer platforms is that there are always dozens of modes that you are supposed to support. Be it split view or scenes/windows or whatever, it shows up as some new abstraction that recontextualizes what's already there and sets some new parameter for how something works.

Maybe that's the only way it can happen, both in terms of introducing a new concept and allowing for the nitty-gritty details to work out in a sound way. But it still feels odd, most of the time. It feels like asking people to absorb additional layers of architecture all the time in some sort of endless layer cake, where perfection and "good citizenship" is only ever temporary, and you better have a lot of free time at your disposal. And if you're lucky, it gets announced ahead of time, and not just hotpatched into the GM seed when the latest device is announced.

Retro Game Mechanics Explained

YouTube is full of deep dives into many subjects, and this channel is particularly thorough and educational and goes into both precise detail and answering practical questions, like "how come the right edge of the screen looks glitchy in Super Mario Bros. 3?".

Baker's dilemma

So far, this site is fried, not baked. I would love to bake it, but even more so, I would love to be able to type stuff into it and have it show up soon. Minimizing friction and all that. And my esoteric metadata and reticence towards implementing a standard posting API makes using a weblog posting app unlikely.

Right now, every time a post is added or edited or removed, a change is made to the database (SQLite), all the entries are read into memory and massaged into a form that will make pretty much any query fast (like maintaining ordered lists of post IDs and a dictionary of post IDs to everything about that post), and the previous instance of this form is atomically swapped out. This is slow-and-dumb, but it's not slow-and-dumb enough to make all this take measurable time, even on the Turing's bookend of a server this runs on, and it only happens when changes are actually made which is almost never. And showing a post never goes to the database/disk, it just consults this massaged form and does data structure things, which gains a lot of performance back, since that happens way more than changes.

Eventually my preference will be to have every popular thing that can be served baked up front, and when a change happens, to have the baked things that are affected re-baked. This gets tricky when next/prev links are involved, or when deleting a post shifts all subsequent pages, if you're doing this to post-list-pages too.

Typefaces

I changed the font from Faustina to PT Serif. PT Serif looks a bit too high brow, but Faustina looked a bit too cheap. I kept trucking because I thought it was because using a serif for body text is out of my comfort zone, but I realized I just wasn't happy with it.

I would have loved to have used Poly, but it has no bold weight, which could be a problem.

The logotype is set in the dynamic Pique. It looks swooping and dynamic (unlike me) and brashly swiftly bold (there we go).

No zoo

I understand the point that not everyone want to have their own web sites. Everyone who thought the advent of the web meant people would own their own domains and set up their own weblogs were living in a bubble. It's not that people don't have them, of course. I just mean people people.

Last summer I listened to one of my dad's friends talk about keeping up with some of his acquaintances and some people in a club of sorts of shared interests. To him, for that purpose, Facebook is the best thing since sliced bread because it lets him do that. He can operate a computer and especially a phone well enough to do that, and he's really positive about it.

I'm guessing he's heard about what Facebook does and doesn't care, because he's not willing to put any effort into it. If it's there and it works, lovely. Making an effort to replace it with something else: son, are you kidding me? I don't know anything about that stuff, and I want to talk to a dozen people who don't either.

There's a lot more people like him than like the people who want to have their own web sites. Probably by a factor of hundreds.

Of course, the people who make Facebooks are way less than the people who make web sites too. It's not a completely hopeless calculus. Someone could still come along with something better and steal them away and ruin Facebook's day. But the Diaspora-like people who expect those people to give a damn about decentralization and federation and hooking things up are living on entirely separate planes of existence.

I'm being unfair – some of them are talking about privacy and agency and control instead of focusing on technology, and that can move people too, but only some people sometimes. Right now, people who care have brains that are on fire and in constant pain, and people who don't don't understand what the fuss is about.

They need to speak in the language of "how do we let you do something you couldn't do before" if they want people who spend most their day not thinking about this at all to have a reason to move. (Or in the words of jwz, "how will this software get him laid". There's a disclaimer there which is almost haunting, but I guess it underlines what out-Facebooking Facebook entails.)

Me, I'm just happy to be able to have something outside of Facebook and outside of Twitter, outside of the zoo of everyone else combined with whatever today's monetization strategy calls for. To me, not being an animal in their zoo is important. But not everyone thinks like that, or sees Facebook or Twitter like that.

We're probably far more likely to see Facebook out-Facebooked by something that's a bit more convenient but with a far more horrible backside than we are by seeing it replaced by something someone like me, or someone like the Diaspora people. If you think I don't like Facebook, I'm walking city blocks around TikTok. (You know, just to end on a positive note.)

Those that belong to the emperor

The original goal was to have no tags or categories or such. Well. No. That's like saying the original goal for a meal was to have no éclairs in it. The original goal was to have as little as possible here, so there would be as little as possible to "fill in", and so it would be okay for what was there to be there. Each thing added is one more threshold, and the thing is to have as few thresholds as possible so that I would actually write.

Maybe some organization will become necessary in the future. No such plans right now though.

Cable

People are leaving cable and their 8000 channel packages behind. No one wants to see more than two or five or nine, of course, and the three most wanted are introduced in the third most expensive, second most expensive and most expensive tiers. Some people would say that this is what you do when you have something people want and that this is how a market is supposed to work – I'd say this is what people do when there are oligopolies.

But I don't really care about cable. What I care about is that what it's being replaced with – ISPs, streaming services and so on – end up replicating the worst bits. Now you have exclusives on different streaming services instead, and have to pay monthly tithes to them instead of to cable companies. It's still an improvement I guess, because there are plenty of things not locked down to them. But if you look at these constructions and see a broken model, it's like seeing an alcoholic making their way home after a lot of fuss, looking like they're on the home stretch, producing a flask from their jacket, taking a swig and promptly diving off the side of the road into a warm nettle embrace.

I guess technical freedom is one thing and "business realities" are another.

One CMS later

I'm now copying the entries I've written so far into the... spartan but custom-made CMS. I get live Markdown previews for the title and the text - the title because the title can include Markdown too, mostly because of links.

There's a plain text version of the title for various uses (like the title bar or feeds). There are both Atom and JSON feeds, and they include the formatted version of the title. They also just plain include every entry, despite what I said before.

There's no search yet. There's paging. There's no date-based index pages; if you cut off the URL components from the permalink it will go to the last known instant for what remains of the date and rewind until it finds a post, and if not, it'll throw you back to the front page. If you go to an entry in a URL that isn't the canonical URL, like 2020/5/10 instead of 2020/05/10, it throws you to the canonical version, because damn it.

I just want to get this up and running so I can have something stable to work with.

Brent Simmons: The Ideal iPhone App First-Run Experience Is None At All

Here’s me: when I download an app with a first-run tutorial, I try to find a way to short-circuit it and get to the actual app. If I can’t, I just race through it, knowing I wouldn’t have remembered any of it anyway.

Either I can figure out the app later or I can’t.

One of the biggest issues is that it's all up-front. Show helpful arrows in context – have an intelligently put together blank slate and most problems just evaporate.

Ceremony

When I used to write, it used to always have to feel like it was a big, coherent idea that I could loop around and break up and contextualize, and that at least I felt like I had a new subtle handle on. But often that subtleness would derail without me noticing, and I would end up writing some variant of the same thing over and over.

Everything would also have this heavy air of something substantial, as if writing for the thing that someone would pick up and say "hey, this is great". That did happen, sometimes, but it was worse-than-lottery odds, and that's a hard way to live but an easy way to get disappointed. And writing for "hits" isn't conducive to great thinking.

Here I want to make the writing itself the ceremony. The act of thinking a thought, capturing it briskly and hopefully crisply and then posting it. I have taught myself that it's important that stuff is posted/out there. Chances are it would be good for me to unlearn it, and I have tried to, which caused the heady ceremony of the things I did write to rise even more.

I don't do much in this world, and one of the only things I do is think, and everyone else is writing and sharing their thoughts much more, and I feel left behind if I don't get to do that too. Sharing is therapy for me.

CMSes

I have a habit of liking or wanting solutions that are halfway in-between two established ways of doing something. Any programmatic web site is basically a factory for similarly-shaped objects, but CMSes are even more rigid and cookie-cutter (since otherwise the additional structure it provides wouldn't work well), and often don't even use the extra power that putting things in a big database could give you.

Right now I'm typing these first entries into a text editor to try to get the size and flavor down, but I want to write a custom CMS just for this very soon. I'm thinking the Atom feed will collect entries by the day or something, to avoid flooding people – or it'll just have many entries.

DuckDuckGo

I tried DuckDuckGo for a few months, to see if I could get away from Google. The search results for many of my searches, it being based on Bing, were complete non-sequiturs. It's worth giving up relative perfection and settle for something less, but it was getting ridiculous. I have switched back.

Nova

Take was born in Nova, which is good and a definite improvement on Coda but still pretty quirky.

Tim Bray: Leaving Amazon + Follow-up

Tim Bray is brave and does what you do if you're in that position and you care. He also handled himself gracefully and didn't let big media make him the story instead of the events (and his summary of them).

Giving many people jobs where they work their bodies to the bone and can't catch their breath or go to the bathroom is not a point of pride. If you're one of the world's largest companies, you have no excuse not to pay them a living wage and allow them luxuries like breathing. If you can't afford to pay people living wages or turn it down to a sane workload without undoing your business, you are by definition running an operation you should not be allowed to be running. When a company makes its money this way, it is evil and exploitative.

Established unions don't always do what they're supposed to, but trying to keep people from organizing is fighting a war against your own employees.

Light

No analytics, no pixels, no tracking, no ads, no caring about browsers people wouldn't pick for themselves. Fit on a floppy, load in a jiffy (both many times over).

Many reasons why

To express myself.

To test my own thoughts.

To write.

To do "micro" things, without being in ecosystems and environments I don't like and aren't designed as vehicles for coherent thoughts.

Many small things

I want Take to be many small things.

I have opinions about many things, and I want to express them. In a cultural climate where everyone reacts to everything everywhere, I want to exist.

I want to unlearn my sense of occasion, write what I think and get it out there. Some people will disagree and others won't care; it's all okay.

Purple

The color scheme of Take is purple. I am partial to blue, gray and slate. Purple and lavender are close cousins, work well and are different to me.

Purple is also the color a link turns when you click it.

Take

Welcome to Take, where I can give my take on things.

Starting over

An idea becomes a sketch, a sketch becomes a real thing, a real thing becomes a habit.

Human brains are made to seek patterns, and human minds are made to crave structure. Structure frames a narrative within which to be creative.

Human brains, minds and instincts are made to remember, to learn, to iterate on what has gone before, to develop eagerly the ideas of yesterday into a perfected whole, arguments piled on top of each other, as if to stand witness to time and effort spent, as if to legitimize, as if to define identity.

Narratives, structures, habits, prisons.

Sometimes, it's best to just start over.