Archive for April 11, 2018

Wednesday, April 11, 2018

Why SQLite Does Not Use Git

SQLite (via Hacker News):

And it is not really about just finding the descendents of a check-in from time to time. The fact that descendents are readily available in Fossil means that the information pervades the web pages provided by Fossil. One example: Every Fossil check-in information page (example) shows a small “Context” graph of the immediate predecessor and successors to that check-in. This helps the user maintain better situational awareness, and it provides useful capabilities, such as the ability click forward to the next check-in in sequence. Another example: Fossil easily shows the context around a specific check-in (example) which again helps to promote situational awareness and a deeper understanding of what is happening in the code.

All of the above is possible with Git, given the right extensions and tools and using the right commands. But it is not easy to do, and so it rarely gets done. Consequently, developers have less awareness of what is happening in the code.


Git keeps the complete DAG of the check-in sequence. But branch tags are local information that is not synced and not retained once a branch closes. This makes review of historical branches tedious.

As an example, consider display of a single historical branch of SQLite as rendered by GitHub and by Fossil:

Update (2018-04-15): See also: Hacker News.

The Making of Dark Castle

Richard Moss (via Hacker News):

Pierce thought it was stupid and incoherent. Instead, he said, “Here’s what we’re gonna do.” In a fit of sudden creative inspiration, Pierce drew out a storyboard of the whole game, which he called Dark Castle. It would be a quest against an evil Black Knight who can only be defeated by surviving a series of trials and obtaining a magic shield and the power to hurl fireballs. He told them, piece by piece, approximately how the game would work. The Silicon Beach people in attendance — Eric Zocher, Charlie Jackson, Charlie Jackson’s wife, and Jonathan Gay — had no objection to being talked to that way. Pierce was the expert. If anything, they were impressed. The five of them plus the ten-year-old son of one of Jackson’s friends then spent the rest of the afternoon sitting around a whiteboard, fleshing out the story and brainstorming ideas for the details of specific rooms and weapons.


Zocher digitized the sounds and refined them in his Wave Edit program to fit the constraints of the Macintosh. Both the 512K and Plus models, but not the original 128K, would be supported this time. He also developed Version 2.0 of his custom sound driver, which could now play compressed sound files. Dark Castle had seventy-two sounds, including Noel’s voice characterizations; a lightning strike and the opening few chords of Bach’s Toccata and Fugue in D Minor, for the game’s title screen; and a variety of environmental sound effects, such as running water (recorded from sinks and toilets) and clinking chains (recorded by dropping the little metal ring that locks the legs on a fold-up table).


Aside from its landmark control scheme (the W, A, S, and D keys controlled movement, while the mouse took care of aiming and shooting, as is the standard today), its wider influence would be limited, however, to only those who played it on the Mac. DOS, Apple IIGS, Sega Mega Drive, Amiga, Commodore 64, Philips CD-i, Atari ST, and MSX versions would follow over the next several years. None caused much of a stir — some for poor timing or limited marketing, others for minor imperfections that marred the overall experience and made it harder to justify the effort of beating one of most difficult games of the era. The best known of these ports, the DOS and Mega Drive versions, actually did Dark Castle a great disservice. They offered garish, blocky, color renditions of Pierce’s detailed, hand-drawn, black-and-white artwork, and they paired this with an inferior animation engine and awkward, slow gamepad and keyboard-only control setups that muddied the precise and idiosyncratic mouse and keyboard controls of the Mac original.

See also: The Internet Archive, current versions of Lunatic Fringe, Maelstrom, and Myth II.

Update (2018-04-18): Riccardo Mori:

Love this spread on MacUser (April 1987) of the beginning of the Dark Castle review by Linda Joan Kaplan. (The review is 5 pages long).

The Inside Story of Reddit’s Redesign

Arielle Pardes:

People on Reddit, like people everywhere on the internet, resist even the slightest changes. Redesigns almost always elicit atavistic rage—take it from Facebook, or Snapchat, or Digg. But on a site like Reddit, with 13 years of history baked into its current design, the resistance to change is higher than usual. As one user, u/vusys, put it in a comment to the design team: “The biggest misstep is taking a revolutionary approach instead of evolutionary. I agree that current reddit is kind of ugly, but it works.”


The research from Krishna and Aradhyula helped inform a new set of design choices aimed at breaking down that perception: Now, there’s a bigger button to signal where you can create a post. Before, formatting text posts required the use of Markdown; now, there’s a WYSIWYG toolbar too. Before, you couldn’t combine text, images, and links in the same posts; now, you can roll them all into one, along with embedded movies. The new posting flow also surfaces the community guidelines of the subreddit you’re posting to, which helps new users understand the rules so they don’t accidentally get their post nuked. It’s hard to imagine a Reddit veteran caring about any of this. But for someone brand new to the site, it’s the difference between finding the confidence to make that first post or closing the tab, walking away, and never coming back.


To make that possible, the redesign introduces three ways to browse the site: “Classic view” looks the most like Reddit did before. “Compact view” helps moderators scroll through bulk content quickly. “Card view” pre-expands content like photos and posts, which makes it easier to scroll through a feed like r/pics without having to click each individual post. (It looks a lot more like Facebook or Twitter, which Perez says is intentional. “For a lot of our new users, they like it. They come from those places.”) Users can toggle between these three views at any time, offering a more customizable way to consume the content on the site. Now, there’s no single way to use Reddit. There’s no single redesign either.

Update (2018-06-12): Chris Siebenmann:

It's pretty clear to me that the old design intended people to click on the links to articles, taking you away from Reddit; you might then return back to read the Reddit comments. The new design intends for you to click on the links to the Reddit discussions; even on the individual discussion page for a link, the link itself is no more prominent than here. As it is, posts to r/golang and elsewhere are often simply on-Reddit questions or notes; with the new design, I expect that to happen more and more.

Not for Mac

Chuq Von Rospach:

Just had that “oh, yeah, Apple hasn’t gotten around to porting Homekit to MacOS yet” moment. again.


With iOS 10 and later, you can make your iMessages more expressive. Add effects to your message bubbles, send animations that take over the entire screen, add a personal touch with a handwritten note, and more.


You can build apps that leverage Watson models on iPhone and iPad, even when offline. Your apps can quickly analyze images, accurately classify visual content, and easily train models using Watson Services. Get started with pre-trained Watson models, or customize and train models that continuously learn over time.

Previously: The Lagging Mac App Store.

How Fast Is AMP Really?

Tim Kadlec (via Hacker News):

As Ferdy pointed out, when you click through to an AMP article from Google Search, it loads instantly—AMP’s little lightning bolt icon seems more than appropriate. But what you don’t see is that Google gets that instantaneous loading by actively preloading AMP documents in the background.


On the other hand, it does appear that AMP documents tend to be faster than their counterparts. AMP’s promise of improved distribution cuts a lot of red tape. Suddenly publishers who have a hard time saying no to third-party scripts for their canonical pages are more willing (or at least, made to) reduce them dramatically for their AMP counterparts.

AMP’s biggest advantage isn’t the library—you can beat that on your own. It isn’t the AMP cache—you can get many of those optimizations through a good build script, and all of them through a decent CDN provider. That’s not to say there aren’t some really smart things happening in the AMP JS library or the cache—there are. It’s just not what makes the biggest difference from a performance perspective.

AMP’s biggest advantage is the restrictions it draws on how much stuff you can cram into a single page.

IndieWeb Generation 4 and Hosted Domains

Manton Reece:

I want blogging to be as easy as tweeting. Anything short of that isn’t good enough for You’ll notice when you use Twitter that they never ask you to SFTP into to configure your account. They don’t ask you to install anything.

More powerful software that you can endlessly customize will always have its place. It’s good to have a range of options, including open source to tinker with. That’s often where some of the best ideas start. But too often I see people get lost in the weeds of plugins and themes, lured in by the myth that you have to self-host with WordPress to be part of the IndieWeb.

Owning your content isn’t about portable software. It’s about portable URLs and data. It’s about domain names.