On thought leaders through the lens of the hedgehog and the fox.
On glue code. I like the comparison to dark matter because it's true on both counts and holds up well.
On parsing Protobuf efficiently by taking a few design cues from LuaJIT and combining them with exciting progress in the compiler world.
Interesting to consider that tail calls hadn't made it to any variant of a C-based language yet. One of the few semi-mainstream languages that does have it (in a guaranteed way!) is Lua, though the semantics of 5.4 appear to clash with the purity that it used to have. And, of course, it's a staple of any functional programming language in one form or another. (Sadly, Clojure, due to the nature of the JVM, is restricted from implementing TCO properly. And, of course, Zig has them if you annotate them thoroughly.)
On embracing the grind.
Here's the progress report for Asahi Linux, a distribution targeting M1-based Macs, who also upstream their contributions to Linux mainline.
For those who are aware of my love of the Dolphin progress reports, this is very similar but for a different technical expertise. I'd love if more projects did that, though it requires people with a particular dedication and skill of writing.
On the dichotomy between open and closed messaging platforms, in the context of XMPP vs Signal. I've linked to Seirdy's post on mostly the same topic, but the former exercises the exact idea I had in mind while reading the latter.
On that note, Snikket seems promising. Anything to make already-open protocols more accessible to the layperson is great in my book, though by having such a goal I hope they can figure out their funding story well. I'll be keeping an eye out on this at a distance.
Sidenote: Interesting that here's one project that's going against the seeming trend of Matrix. :)
Nvidia is limiting the mining rates on their consumer GPUs.
As kornel mentions, it's a bit conflicting; while, yes, mining itself is a menace on society, limiting the use of hardware you supposedly already own is a serious breach of freedom. (And even though their CMPs are optimized for mining, there's nothing that would make them have less of an effect on the environment, as far as I can tell.)
Via this, I learned that Ethereum's mining scheme is ASIC-resistant, as opposed to Bitcoin's. Neat…?
arp242 on Go not being an easy language, though it superficially seems such.
As pointed out in the Lobste.rs thread, the "easy-hard" spectrum is not quite the dichotomy that it appears to be. Go makes some things much, much easier (untethered, lightweight concurrency) while also, by its nature of preferring simplicity, requires semantic complexity to express some concepts while doing so performantly, an example being slice manipulation as described in the article. Therefore perhaps it's worth considering what would one mean by Go being "easy"; it's simple by having the core language be succinct, but that doesn't necessarily make it easy to start off with from scratch. (The fact that Go is kind of a "C, take two" doesn't help either—C is also superficially simple but actually requires a deep understanding of how computers actually work before one can begin comprehending it.)
And yet languages such as Python which seem easy by most measures are actually pretty complex, in part because this under-the-water complexity enables it to be seemingly easy. But yet it's hard to do Go-style concurrency in them, in part due to the language being uniquely unsuited for concurrency, and in part due to it not really being provisioned for in the standard library. Green threads etc. help but only for IO-bound tasks, whereas goroutines map onto OS-level threads and therefore are also useful for CPU-bound ones.
An interesting midpoint between the both is Erlang; it's simultaneously pretty simple as a language, has a complex but comparatively easy concurrency story (with resiliency built in!), and yet is also pretty hard to wrap one's head around because its simplicity requires thinking on different terms than most languages (and also giving up most of the imperative control flow to the runtime, which, I suspect, makes some people uncomfortable—me included.)
So I guess my conclusion instead would be that nothing is "easy"; it all depends on both where you're coming from and what you intend to accomplish. It's all tradeoffs, especially within a synthetically constructed system. Some things may be "easier" for some people, but that doesn't (and can't) map universally unto everyone and everything.
I've found a gem in science and/or fiction: qntm.org. Some highlights:
(Via HN and HN)
Hillel Wayne on naming things.
On the equivalence between Factorio and functional programming.
Okay, fuck it, I'm embracing the worse-is-better philosophy.
For things that are not link-related, here's a Telegram channel. Worst comes to worst, I can always export it and put it up on the site.
Via Kottke.org: Korean master potters at work.
This mildly prosaic retelling of the Therac-25 incident is worth a read. The source is definitely going on my reading list—I've heard and read about Therac-25 on multiple occasions, but hadn't yet gotten to this, even though it's the first reference of the Wikipedia article.
Sidenote: pictures like this of the radiotherapy machine going all swivel-like make me really uncomfortable. Is there a name for the fear of tall, heavy things tipping over?
A compendium reference on why typing (the computer science kind) is hard.
Some of the languages listed as "undecidable" does not necessarily mean that the compiler crashes or whatever; many of them have some sort of a sanity check where the compilation will stop if the types appear to be undecidable. There are many valid and useful programs with entirely decidable types, which for the most part are also within the safe bit of those languages.
The fact that iOS 6 and lower used WebKit to render text is absolutely sublime. I mean, yes, WebKit is pretty good at text rendering—that's an integral part of the Web—but it still strikes me as odd.
Seems to have worked out well for them though.
On why the Intel assembler syntax is better than AT&T.
We had a course in uni which incidentally used the AT&T indirect addressing syntax (
3(%edi,%ebx,8) in all its glory highlights the clumsiness of this syntax. This would have been reason enough for me to reject AT&T entirely, even though I used to be a slight proponent of it when I didn't know better, but the rest of the article gives other good reasons (for both sides, actually!) as well.
I don't think I ever post these, but I've been following Dolphin (the GameCube/Wii emulator)'s blog for a while, and their approximately-bimestrial progress reports are chock-full of fascinating technical details and written with a finesse that makes them very enjoyable to read.
So hereon-out I'll be posting them whenever I see them in my feed. Starting with December 2020/January 2021.
Edit: This older video part of one of their earlier posts is timeless gold.
Related to the last post, Flicker Fusion uses Public Sans as its body typeface.
Which has tabular figures. That's neat.
On TikTok and Gen Z. Given my own supposed generational allegiance, this is something to consider in the context of one's idea of self.
(Via Flicker Fusion)
Slight sidenote: though I'm not a Lobste.rs member, I do browse it often to source my links and read insightful discussions. In that light, I am constantly thankful to and amazed by pushcx for his effort in moderating. It's what keeps the place on-topic, and it's done incredibly well.
I remember reading an analogy wherein being a moderator of a community is like being a janitor at an amusement park. There's a lot of vomit, and there will be even more soon, so you have to clean it up and continue doing so.
It's a thankless job. The community, at some point, defaults to spiralling into flame wars and being torn apart internally. It takes courage (no, not that kind) to keep it on track, and one must not hesitate to delete and ban stuff. As an example, I'm not yet entirely sure how I feel about Drew DeVault and his writing being banned, I do agree that he can be caustic, and at some point dealing with that becomes too much to bear.
It's been a while since the Facebook moderator report was published. This is a problem that exists on all scales. I don't envy the moderators and am eternally thankful for their behind-the-scenes work in keeping their communities clean.
boringcactus (previously) on licenses, again. Partially related to the Elastic SSPL relicensing, which I've also written about.
Declaring my political beliefs in this post would be beside the point, but I'll just say that this feels slightly radical to me, but in a good way, insofar it's pushing against the status quo which I also don't entirely agree with.
madaidan on the many insecurities of Linux. Though some points are contestable, especially when comparing to other OSes, generally it's true. Linux indeed is from a bygone era where we trusted our computers more; nowadays a better solution is needed.
Other articles of theirs are likewise great. I especially enjoyed the one on OpenBSD—until now I held the OpenBSD folks in high regard as knowers-of-what-they're-doing; seems like that doesn't extend all the way, and prolific knowledge of one field doesn't extend into the others.
Soatok on crackpots in cryptography, sorry, crackpot cryptography.
And to close out the tetrafecta of Two Bit History posts (a, b, c), this pondering of FOAF is a great one to close it out upon.
The context within which I confused myself about having heard of FOAF, was Wordpress, which supports (within core!) a similar-but-not-really-that-similar standard called XFN, short for "XHTML Friends Network." It, likewise, appears to never have caught on.
Interesting to view ActivityPub in this light.
Related to previous posts, another dead technology: the Semantic Web. The mention of JSON-LD and Schema.org was pretty much what I thought would be the culmination (and it was.)
Another way the faint shadow of Semantic Web lived on in an interestingly weird facet of the web: the HTML living spec still has a section on microdata which I could swear I thought obsolete, but, even though it's effectively become useless from the implementers' standpoint, it's still there.
Though it's possible to argue that it shouldn't have been a part of the core HTML spec anyway, and instead have worked more like microformats did—be beside the spec, not within it. But I guess it's a simple enough part that it doesn't hurt to have it in there, and a tiny library can fill out the void left behind by the browser API removal.
Related to the previous post, I wanted to go off on a tangent about how the passing mention of RSS listed it as a dead technology is both false in that I know most of the readers of this shortform blog are doing so through syndication, and true in that the general public has no idea about RSS or its legacy. I didn't, and instead went to read the piece itself, which was more appropriate.
The remark at the end is surprisingly apt. RSS is dead, but syndication lives on. But yet, this blog being non-syndicated to general social media is now my unintentional political statement, in that I refuse to be a part of the social media oligopoly, even if that means an eternity in obscurity.
Were I looking for a solution, I think I would be sorely disappointed. Communities like IndieWeb concede by giving social media syndication a catchy name, which is in turn too a concession that you're willing to give up the freedom of your audience just for the sake of increasing its numbers. I don't instead mind adding some friction; if the ideas are good, they'll spread, if not, I still get to talk to myself like a crazy person.
I suppose it's just spite, and this isn't practical in many ways. But yet it's nearly 11pm and I feel sorely disappointed in the world, so I'll let this be my emo moment for the month.
I haven't decided yet what this means for the now-probably-not-forthcoming ActivityPub format for this site. I suppose I'll just keep it my margin notes for now and not syndicate with the Fediverse directly.
If you want to follow, subscribe to the feed(s); if you're already reading this from a feed, you're awesome.
Two Bit History on the real novelty of ARPANET. Even though I'd like to think I know a couple of things about the history of the Internet, this post was like an epiphany; in hindsight, the novelty has given way to so much more machine-to-machine communications nowadays than human-to-remote-machine that we really take history for granted.
6C's Jason Snell on the mortality of software.
After reconsidering, I'm starting Shortform back up. A couple of integrations will be added soon; meanwhile, there's Atom and JSON feeds for the syndicationists out there. I was thinking of implementing ActivityPub and/or twtxt, but I'll pass on that for now—though this chafes, it's not enough to warrant throwing out entirely.
Also, while I'm here, there's a new post on the blog, inspired by the recent Elasticsearch relicensing ruffle.
A fleeting thought related to the eventual successor for this part of the Web:
Is federation (in the style of ActivityPub or Matrix) worth the technical complexity?
What's the "bare minimum" protocol that enables federation but is also as simple as possible, such that there can easily exist multiple independent implementations?
RSS seems to come close for public stuff, and e-mail for private communications. Matrix's model is nice but it's wrapped in many layers of HTTP boilerplate. ActivityPub is kind of the worst of all worlds.
Where, then, shall go the fan of federation who doesn't like using others' software? Implementing everything from scratch is just asking for pain. Creating a new protocol goes against the principles of federation, where the protocols exist via consensus, and swerving away from that is pointless.
The search for an answer continues.
Quick temporary rise from the dormancy to share this MinutePhysics video.
Happy random new revolution around the Sun.
Lately I've been rethinking the purpose of this feed. I don't think I tend to have as many things to say as I used to a couple years back. Likewise, I don't have much of an audience here (currently I estimate the size to be about 1.1 people).
Hence, though I've already said so about two months ago already, I'm once again proclaiming this feed retired. Knowing myself, I still want to have such a place for expression, but I don't think I'll make any connection between them.
If you want to see what I've found interesting, my Pinboard public feed serves that purpose for now (until I make my own substitute). If you want to read more of what I have to say, get in touch.
So long, and see you around.
A recent treasure trove of a weblog I've stumbled upon: Computers Are Bad. Of note, this article on the more social and less technical (but also the more technical) aspects of Tor, and the yet unfinished series on instant messaging are worth a read. (From the same author, as referenced at least twice, an obituary for email and federated technology.)
This Lobste.rs thread along with the linked article are a really good source of both ideas and experiences in remote learning. It's also really valuable to get this insight as a student because I assume the experience in my uni is similar, though ours is seemingly much less international so we tend to get away with synchronous attendance for most stuff. The level of effort Christopher put into his course is much more than I tend to see around here though.
On the second death of Docker and the rise of Kubernetes and containerd to take its place.
On blub studies—learning about the seemingly mundane.
On tweet quines.
Arecibo radio telescope is no more.
Follow-up on the previous post. The "commit to a ledger" part requires for the user to be able to prove their identity to the ledger, which is trivial if it is centralized, but if the ledger is a blockchain, then this essentially means that the user must hold long-term cryptographic keys which allow them to commit messages about their identity onto the ledger. (Enumerating the potential consequences of being able to post spoofed identity notification messages are left as an exercise to the reader.)
But if the user has long-term keys, then I don't really see a point in maintaining an out-of-band ledger of identity changes and not instead tying the keys to the BID directly via posts to the specific timelines, signed by those keys.
Such an approach smells awfully similar to Salmon and its Magic Signatures, as seen on, say, Diaspora.
Also an interesting case study is Scuttlebutt, where one's identity is tied exclusively to their control of cryptographic keys, and there's not even really a concept of a "provider" per se.
The only reason why I can see a blockchain being useful is when fully serializable and centralized BID ↔︎ PID mapping is required. But I'm not sure under what circumstances this would be needed—I can only think of discovery (essentially building a huge list of all users of @bluesky) as a potential use case.
If Bluesky decide to reinvent the wheel, I really hope that they'd cite enough prior art, because if their problems will have been solved by ActivityPub and the like, that'll be a bad look. But not that my humble opinion matters, what with me attempting to become less of a Twitter user :)
(For what it's worth, I did get my account back, and I still continue to intend to use it much less.)
Tim Bray on his proposal for decentralised identity management for @bluesky.
While I can't disagree with the reasons he outlines for why this is even a problem, I have a slight feeling that this is sort of dubious. For many intents, an identity can be either vouched to be unique by the Provider, or every instance could just as well consider every URL unique. I suppose this might not work on Twitter scale though.
But if we assume this is a thing that needs solving, even given that I'm not a fan of blockchain and shoehorning it as a magic cure for all problems, the solution proposed is pretty elegant, I'll admit.
And yet it's been almost exactly a year since this effort began and, if not for this popping up on my RSS reader, I don't think I would've remembered this. Progress seems to be slow and quiet, but perhaps that's for the best.
* * *
I still intend to dip my toes more into both Gemini and twtxt, both of which just tie identity to URLs and are done with it.
The way ActivityPub (or Mastodon in particular as the de facto standard implementation) deals with the "moving between providers" problem is, ahem, less than ideal. Just posting an "my account's moved" message or setting a profile flag, without forcing an automatic re-follow on everyone, seems more sane, even if it is less neat.
Perhaps an HTTP 301 redirect should suffice for pull streams, and a lightweight redirect message for push ones (though push ones shouldn't really even have a problem in general, as long as the webhook itself is moved over.)
Slack is being acquired. The person in the comments comparing this to Microsoft's acquisition of Skype rings true, vaguely being aware of Salesforce and their structure.
Good thing I wasn't particularly in on Slack. Though they have gone by the ever more heavy enterprise side since their launch, as they honestly should have, they also have lost some of the charm that they had initially. At first they weren't so business focused and those were better times; but their impact was to be found within where they landed, so best of luck to them. This is just me lamenting the death of a product that I loved but that wasn't intended for me, at least not really.
Honestly, I'm more interested whether and how Stewart Butterfield will emerge from this (as he must, in due time.)
Though I haven't researched Radicle enough yet to form an opinion on the tech, the design of their landing page is awesome. It's the perfect combination of garish design and vaporwave.
So I got booted off Twitter for good. I've been trying to leave but got pulled back in recently.
Perhaps that might mean more posts on here :)
I'm wondering about whether to cross-post the content on here (and the inevitable next generation of shortform that's cooking slowly) onto another platforms. I wouldn't mind having a bit of a conversation about the things I put here, but at the same time it's deliberately obtuse to an extent because I like obtuseness and perhaps I don't want to be seen.
The whole idea of this page came from Filigree (which used to exist at filigree.app but hasn't for a year or so by now) which had comments. I'm not sure I want comments directly, but allowing for Webmentions could probably be a start, which then could be moderated before being visible.
I'm also reminded of the medium of Telegram Channels, where in 2017-2018 I used to have a sort of predecessor of shortform in a way. That medium has a different feel once again which I've also intended to recreate, but that would mean throwing this codebase away and starting anew.
* * *
Sorry, I'm rambling again. Feel free to get in touch or whatever. I'd love to hear y'all's thoughts on this.
You can't tell me that this track from Bugsnax wasn't inspired by FEZ. I choose to believe the similarity is tribute. (Also there's a subtle nod to Tárrega's Gran Vals in the form of Nokia Tune.)
Overall, it's just real chill. The whole game has a certain Unreal Engine vibe to it off the bat, which is understandable, but it's also chill.
Edit: The FEZ OST doesn't do the music justice. You gotta play the game to experience it firsthand. The nighttime has its own music that isn't delineated in the OST. Also, perhaps this track illustrates the point slightly better.
I put together a shortlist of really good Twitter accounts to follow, out of the 600-or-so that I do. (Not recommended, btw.)
On communication security from the viewpoint of e-mail.
(Via HN via HN)
HTTP/2 Server Push is becoming deprecated in Chromium. It was a novel idea but really nobody found a use for it.
Not to toot my own horn, but I've noted its limited applicability back in 2018 when everyone was saying that "you don't need WebSockets use h2 push instead." Well, guess what, one does not replace the other. Indeed, the way h2 push was architected would never have allowed it to replace bidirectional streams entirely; the browser only uses it to prime the cache, so to speak.
So, in a way, this is not a big loss. For those who still want to optimize their resource delivery, you can probably just inline them instead.
On needing less powerful languages or, I'd say, less powerful tools in general. The linked post is also worth a read.
This is amazing.
I think it's time to close up this shop.
It's been a nice run but working on the backend of this thing doesn't spark joy.
I'll see y'all soon.
> After three days without programming, life becomes meaningless.
So today I checked up on Byte after a couple months of absence (from all social media tho, kept the app on my standby phone all this time) and I discovered an interesting thing: most comedy byters haven't posted in 2+ months, while the art byters continue in regular stride.
I'm here for this 🧡
Soatok on deniability and why it's important.
This accessibility dissection of Flutter Web is quite telling.
Though I've heard good things about how it helps making apps on Android and stuff, I've never seriously considered Flutter to be a contender for being a good web citizen.
This, perhaps, illustrates a deeper problem: it's hard to tack on web support for any technology post-facto. React Native came from React, which was made for the web first; going the other way seems to yield poor results akin to compiling your native app to WebAssembly and just drawing its contents on a canvas.
* * *
If we consider the web to be overly complex, as I do, then we must consider that it is not one thing for everyone anymore. The Web is a network of applications, documents and experiences. And weaved among them is really good by-default support for accessibility features.
If we go to a new Web effort, this is a thing that we must keep by any means necessary. Gemini hits a nice sweet spot where it shouldn't be in any measure overly complicated to implement accessible support for
text/gemini documents, though I'm left to wonder how this could be supported for out-of-band content, such as images, which can only be linked to and not included in the document itself. HTML has the
alt attribute; Gemini has, at best, the custom title. (Though not like
alt is set accurately all that often, at least not until a certain subpopulation of internet users became aware of it and certain social networks decided it's high time to make efforts for the same.)
On the X11 vs Wayland debate that's been brewing recently.
Personally, I'm using XFCE4 atop X.org and I'm not looking to switch. I've become more and more averse to switching out software needlessly; as long as XFCE does not require replacement, I'm not going to attempt one.
On the foybles of coordinate systems.
This post outlines a potential future scenario where the web moves past Google's domination.
The move away from the Google-ruled web is slowly taking place already (see Gemini, the renaissance of Gopher, to some extent the Fediverse etc) but as of yet there's little incentive for the majority to switch; it's inferior on purpose.
This actually makes me question why I defend the Web so vigorously. At large it's the people who make it what it is; were the people to move, harm wouldn't come to it. I'm not personally dependent on a lot of social media already, and the ones I do frequent are aligned with the neo-Web ideas enough that I'm sure were they to migrate I could do just as well.
Perhaps it's really worth putting more effort into Gemini, better sooner than later.
On Mozilla being abusive with Firefox towards their users.
In the aggregate, even though this might be cherry-picked and exaggerated to an extent, I can't say I disagree with the premise. I'll continue using Firefox for more aesthetic reasons (and also Chromium being weirdly broken on my Linux box) than ideological ones, but either way this is a good kick in the balls with considering the ideologicalness of it all.
On APL being more French than English. To some extent, J is both more and less in the same vein.
Though this talk is from 1978, many things still ring true today.
Fiji, five Qi, and Fygee, in collaboration between Apple and Verizon.
New gem found: Sten Källman.
Alan Kay on where computing is today and why it's so much less than it could be.
So I've splurged and gone ahead and got myself a Pinboard for now. I am looking to replace it, but it was the least I could do right at this moment to help organize my chaos.
The bookmarks that are public over there are usually things that I have already read, and many of them will be cross-posted to here.
Technology is heroin.
I've lost access to my Tumblr account a while back because I enabled 2FA and have since lost the code generator, but back in the day (which appears to be around 2018 or so) they didn't offer the option to create recovery codes, and thus far attempts at paging support have not resulted in anything due to them having a reasonable policy of doubt around this question.
But due to an old automation I had for running a particular highly automatable blog, I had generated an API key. Though it was a bit surprising for me, it still works fully and I could get most data out of my account.
Their API is a nice remnant of the Web 2.0 days. Doesn't seem like it gets a lot of love, but it does work.
I'm not sure I have a lesson to share though I'll say that I'm grateful for today's discovery. Farewell, Tumblr, you used to serve me well. (Note that this link might fall over at any time. When I get around to it, I'll re-export my posts on my own site—I've got them in my possession now.)
The Youtube algorithm has been kind to me lately. At least three interesting channels: Tech Rules, Michael `Jasper` Ashworth and Bismuth.
On fractal learning.
I've myself come to the realization that, borrowing from CGP Grey, "knowledge is fractal", so it's only fitting that we treat it as such when exploring it initially.
Sure, this is all as abstract as Kadinsky and Haskell, but nonetheless every bit of abstract steering can help influence the direction of the ship, to butcher a metaphor.
Šodien netīšām uzzināju, ka filmas Homo Novus mūzika ir pieejama Spotify. Perfekta vakara ieskaņa :)
Hacktoberfest is upon us, for better or worse, and to pander my ever-inflating ego, I think I've got the answer why my repos don't ever see any activity on them: they don't have any tags on them (apart from Webscreen) and they're written in what could be considered obscure languages. Most repos that appear to get bad faith PRs are either popular on their own, or are in a popular language (which is to say Python or maybe Node).
Either way, if any of my repos get even a spam contribution, that would be kinda nice. But I can't say I want to be noticed. I'm fine doing the stuff I already do, with little regard for the rest of the world.
Another accidental gem of a discovery: Noclip. If your interests at all overlap with video gaming, you're bound to find something that piques your interest on their channel, and no telling what'll appear there in the future.
Edit: I've raved about this before, and yet I'm keeping this post up as a testament to how good Noclip is. There goes my sleepytime.
Project Gemini seems like an interesting new Web effort.
Watch this space.
(Via Drew DeVault)
I've got no words to describe my excitement. Not sure why, perhaps it's delirium combined with going through Universal Paperclips again. Or maybe Precursor is actually worth it.
Edit: Here's some extra reading. Bunnie's also widely known for Chumby, among many, many other things.
PUSS! is one of those games that is both inherently highly meme-able and also actually quite good. It exudes vaporwave like very little before it, and there are very many niceties that you tend to notice while playing it. Not even talking about the fairly imaginative control scheme.
Does tire your eyes and senses though. Like eye drugs. :)
I didn't think that what I needed in my life right now is a channel full of thorough dissections of what most people consider "kids' movies", and yet here we are and I have found a pastime that has even overshadowed the film I was looking forward to watching last two days.
This short self-documentary on Edmund McMillen is really worth a watch. I have quite the palette of emotions regarding this and it'll take a minute to digest, but I've always had a lot of respect for Edmund and this only goes to increase that.
Perhaps the fact that I've played a couple dozen hours of Binding of Isaac and have sorta bonded with it makes a lot of sense in this light, or vice versa. If we assume games can be art, and every painting is a self-portrait, especially in the case of games with a creator's voice, then empathizing with a game in turn means that you empathize with its creator.
On why your language sucks and why it doesn't matter.
On what comes after open source.
BitTorrent Protocol v2 is something that appeared on my radar today. BEP 52 is still a draft but sounds like there's already major support behind it.
It's a minor improvement, mostly related to switching the hash function to SHA-256 and cleaning up some internals. But it's still nice to have.
See y'all in the swarm.
Edit: Why not IPFS? Because it's more tech than UI, and simple features that have existed since time immemorial in BitTorrent are still kinda pending implementation in IPFS clients. The paradigm is indeed nice (or nicer?) in some regards, but BitTorrent is good enough for most use cases and has a huge backing by tons of different projects, use cases and experience, as well as being arguably more focused and having better performance in practice.
I hold IPFS folks highly for all they've tried to do, but I don't want a content-addressable replacement for the Web, I just want a P2P file distribution system. IPFS is trying to solve more problems than that.
Though John Gruber's opinions occasionally spike into an extreme, his piece on modelling privacy within tech on the basis of in-real-life privacy I agree with.
For those looking for a melatonin rush, Poolside.fm is a wonderful place to be. Meanwhile, if you just want the music, their playlists are sourced from SoundCloud.
(Via Daring Fireball)
This old Lobste.rs comment is treasurable.
Tom MacWright on a potential new start for the Web.
The document/application dichotomy I totally uphold as (close enough to) true. And the idea of a Markdown-based document web 2.0 I can get behind completely, as long as it's the CommonMark with table and definition list extensions. (Or is it Web 3.0 now?)
The eternal problem with such proposals is being able to gain enough traction. The web has gotten thus far mostly because it has, to a first approximation, never broken backwards compatibility. It'd be darn hard, if not impossible, to convince a meaningful majority of the rest of the Web to adopt a completely new proposal.
Just the scope of the Web makes this a hard problem to solve. But yet the scope creep isn't stopping any time soon.
On modernizing the XPath API in browsers.
Telegram is the prime network for news dissemination and coordination in the ongoing Belarussian protests. The fact that it's possible for an outsider such as myself to obtain news in near-realtime is so fascinating. It's everything the Internet has always promised to be. I'll leave my political opinion by the roadside, but hit me up (username removed) if you want pointers to interesting channels.
Filippo Valsorda on cryptography registries. Not the fan of the "considered harmful" phrasing, but the message is solid. Negotiability of cryptographic primitives often tends to lead to vulnerabilities, and you don't want the negotiation itself to present a vulnerability. :)
David Teller with a detailed exploration on why Firefox needed to get rid of XUL. The answer, to oversimplify it to a single sentence, is Google Chrome.
Related to the recent changes in MozCorp, here's a post about what changes does that entail within various dev outreach teams. As I've made my peace with MDN being downsized, the one that hurts me the most is the Hacks blog having its "support paused." It was a great resource while it lasted, and I hope this doesn't mean it'll die off entirely—it's been one of the better parts of my RSS firehose.
A thorough explanation on how NAT traversal works from the good folk at Tailscale.
Lobste.rs on the anti-capitalist software license.
Bill Plaschke on having COVID-19.
Julia Evans on implementing an email feature atop JMAP. JMAP has been fascinating ever since Fastmail released it (and as a happy user of Fastmail my opinion might be biased); it has some parts of GraphQL that allow for advanced queries and yet is apparently simple enough to build something on top of without having to arm yourself in all sorts of ways.
The Handmade software manifesto.
On the perils of files. All storage abstractions might be leaky at some level.
Brent Simmons on the three platforms left. Indeed, are native apps much of anything anymore? The proliferation of Electron doesn't bode well.
My favourite Unicode block is now Miscellaneous Technical (U+2300..23FF).
And not only because it houses a bunch of APL symbols. It as well includes the venerable emphasis symbol, ⎃.
On SVG skill levels.
Good thing there isn't a category for people who use SVG for layout within web contexts. There's a special hell for them. (I'm one of them.)
To have a positive note in the glum saga, here's a really meticulously crafted job offer page for Mozilla alumni.
The attention to detail on the header animation alone is incredible, especially considering this was done on an incredibly tight schedule. The animations, the fonts, the layout, the colors—it all comes together to a wholesome ensemble.
Though as much as it might hurt to admit it, perhaps Gecko is a losing battle and the browser engine monoculture has already won.
This might be a new low point for me personally.
The recent Mozilla layoffs don't bode well.
Has Google won out by ever-increasing the bloatedness of web standards?
On relying on libraries that do only the 80%.
This puts it into words so much better than I ever could why I'm skeptical towards the world of today's software engineering, both at the junior and senior levels. It is rare to find a piece of code written with enough thought put into it so that it does what it needs to do, does it well, and doesn't extend its reach into parts where it shouldn't.
And because of that, I tend to write my code from scratch instead of relying on libraries or frameworks that claim to do that for me. Sure, the tradeoff is that it takes much longer, but at least the end product is something that I can place trust in without any doubts.
Yet it is depressing that a lot of this industry doesn't care about everything in the same way. It's the obverse of the whole rest of engineering fields where innate passion for your work and all of its details matter—here we (tend to) only care about the outcome, no matter how poorly it actually works.
Feeling excited for XMPP once again. Let's see how long this wave lasts.
Webdev opinion: Rollup is the best thing in Node-land since [insert nostalgious rant here]. It hits all of the points I can imagine regarding its scope, size and functionality.
Some recent delights from Kottke.org:
On giving it five minutes.
I think Disclosure + Fatoumata Diawara is the best combo of the rolling decade. (Also.)
Ben Thompson of Stratechery on the US Antitrust hearing.
The US Antitrust hearing is ongoing. It's mildly insane.
Edit: Nilay Patel's Twitter is a fair source to get second-hand information in a fair way and reflecting the insanity that's often present in the lines of questioning.
AOC on recent events.
On the potential significance of the GitHub Arctic Code Vault.
Some people like to think of what legacy they'll be leaving behind after they're gone from this world. While I don't care that much (at this state in life, at least), the potential of one's code to express themselves and the potential to rediscover one through historical artifacts is as high as ever.
On the other hand, we're producing so much more information than the generations past which are currently studied by historians, it does beg the question whether it will be possible to even make sense of the barrage of data that's preserved for future generations. Sure, all data is malleable and degrades over time if not carefully maintained, and yet it is both quite easy to recover a fairly accurate view of the world back in 2005 and also quite difficult because there are so many things to consider.
I recently remembered about an app called Cinemagram that I used to use as poor man's Vine back when Vine was not available for Android due to one reason or another. Nowadays it's actually kind of difficult to find much on it. Same with CoolIris, apart from a passing mention on Wikipedia.
Though we have more resources than ever, the work for future historians isn't getting much easier, I think.
On the strategy and position of the Reliance Jio network in India.
After reading this, it becomes really apparent why Jio is so hot right now—the fact that they built a data-first network seems so obviously better in retrospect. Looking at any traditional telco through that lens now makes their deficiency so glaringly obvious that I'll be even more mad than I am right now whenever I see what prices they charge for data plans.
Anne van Kesteren on Mozilla Hacks about how they're enabling back the capabilities that were disabled in the wake of Spectre.
Though they do note it, the considerations that have went into both ensuring the safety of data and backward compatibility are awesome, and this is why I love the web. Yet I don't really have reason to use SharedArrayBuffers just yet so I have nothing to opt into yet :)
The sidenote on Project Fission is also neat to look into.
Avery's coda on IPv4 vs IPv6. I actually based a report on mostly his article. :)
Recently while searching for materials to recommend for learning Git, I stumbled upon Git koans. Every word of those rings true as ever.
On the lobotomized owl selector. A List Apart are just excellent.
Published a new post over on the blog on Citrine and how it gets i18n not quite right. I feel like conclusions are missing but I need some coffee before I proceed.
The recent Twitter attacks seem to be inviting some conspiracy theories.
I'm grabbing the popcorn.
Today when I opened my Github profile, I noticed a new badge appear.
I've heard about this before but it slipped my mind since. Cool that they're highlighting it! (Though the projects this badge is highlighting are ones I made but the tiniest of contributions towards. 😄)
Reading their human-readable guide is pretty fun in itself.
I'll withhold my opinion on both the original post (via) and the post scriptum,1 but this footnote rings extra true today:
I find that Hacker News is really good at attracting people who think technology is cool, which is a particularly dangerous thing for anyone who actually expects to work in the tech industry. Computers are awful. You need to really embrace the hatred before you can be an effective technologist.
What if your passion has been computers all this time and now you're realising that they truly are awful?
1 For what it's worth, roguelazer has joined the list of my RSS subscriptions.
On seeming simple.
I read this a while ago, but regardless: on the zen of Python through the lens of Raku 6.
On Frink, the language made for dimensional analysis.
Can't overstate how exciting I find this to be, having studied some physics. I was thinking all the time that something like this ought to exist and even thought of coding something up myself, but finding out that somebody else has already done it (and has done it much better than I ever could) is incredibly delightful.
On the future of LibreOffice.
I've been meaning to read more NSHipster for a while (what with me getting more into developing for Apple platforms) but this particular piece raises a lot of interesting points.
Also I haven't yet read through this but the first paragraphs are perfectly fine-tuned for getting my attention. My hat is off in front of the NSHipster collective.
On WebKit and it being potentially antithetical to the open web. The stance that the WebKit team is taking, while understandable, is indeed alarming in a way.
Though an earlier compendium by Michael Tsai also highlights an opposite but worth-pointing-out position: Google has been churning out these APIs like crazy. For instance, Ambient Light Sensor and Battery APIs seem to be a bit over the line for me. Yes, they might have their uses, but their particular potential for abuse is extra high. Web Bluetooth, MIDI, NFC and possibly even USB are on the opposite end of the spectrum – those I'd really want to play around with.
So the truth may be somewhere in between. Apple is taking a hard stance on privacy, Google is taking a hard stance on what's good for their ad business. And we're all caught somewhere in between.
(Via Michael Tsai)
On text encoding. One of the more accessible explainers I've seen, apart from this excellent (but slightly more narrow) post on UCS-2.
From the same site as the previous post, on the fake loading indicator of Gmail.
This is a bit of a pet peeve of mine – many sites are following the trend of using fake CSS-animated progress bars that give the illusion of progress instead of bothering to calculate it properly. The same goes for Github, Youtube and many others.
One source I seem to be able to link with this phenomenon is the good old Turbolinks, whose progress bar by default just does whatever in case progress isn't computable. (It does make an attempt though, as far as an attempt can be made, and to be fair, there are cases when it cannot.)
But on the other hand computing progress is hard, as can be attested by most anyone who's used Windows XP.
So it's hard to come to an agreement on this. Giving a false sense of progress might be good UX, but also confusing to the pedantic; showing indefinite spinners might be more technically accurate but also more boring.
On the various data a "fraud prevention" firm collects. The "haha jit go brrrrr" is in part nice touch, in part incredibly ironic.
Ben Thompson of Stratechery on open versus free.
On pronunciations of various Unix command line utilities.
An empirical proof of the Infinite Monkey theorem.
On the state of NPM. This aligns with my general sentiment, but putting some numbers behind it takes away some of the subjectivity.
This is something that should be done more often. I'm as guilty as anyone of presenting my opinions as too much of a fact without any substantiation.
Appears I missed Tau Day, which was yesterday. :(
John Gruber on Google’s approach to Android. A lot starts to make sense when viewed through this lens, but also it seems more like a problem of institutional bureaucracy—Apple is explicitly structured to innovate and put passion and care into their software, while Google tends to prioritise managerial satisfaction over the final product.
On Symbian foreshadowing.
On the cultural defeat of Microsoft.
(Via ~calvin via Lobste.rs)
This UserOnboard-style teardown of Zoom's experience is pretty interesting to see. Though I figured most of it out intuitively, it's a fair criticism.
On Flow and how the browser engine monoculture might possibly be partially sidestepped.
I like the idea.
Evan Spiegel on recent events.
Functional code is honest code.
It’s hard to change things that you don’t understand — you can try, but you’ll often fail.
Dave Winer on listening to the critics.
Though this is less on the tech and more on the sociology, nevertheless a good read on the rise of React.
Today is just the sort of day that you find yourself re-reading the great writing of the late Pieter Hintjens.
On "not being" a programmer.
On biculturalism. The associated Lobste.rs thread and linked Daring Fireball article are also worth a read.
On coming full circle with regards to navigating within the terminal. I like the "marks" idea (reminds me of Vim) but I'm perfectly fine with cd/ls and some pushd/popd here and there (protip:
pushd +1 to rotate the directory stack).
Dua Lipa's "Don't Start Now" is, IMHO, missing just a little push in the funk direction. I can't find a good cover though. (Literally every one I've listened to has been missing the point.) Perhaps that's where I can fill in a void, someday.
Edit: This is pretty much better than anything I had in mind, and has, like, ten times the personality of the bassline that was in the original.
On CollegeHumor. I remember being somewhat of a fan back in 2014 or so; seems like things have gone downhill since.
On the fascinating dilemma of anti-cheating measures.
Valorant's particular scheme, while seemingly draconian, is also somewhat warranted if they want to ensure fair play.
Yet nothing can prevent all cheating entirely; some next-level thing would be to manipulate the RAM physically outside of the OS running the game itself. Sure, that's not prevalent right now, but that's pretty much how console cheating works (or at least it has until now).
My gut feeling is that there is no real solution. People just are going to be jerks, and no amount of technological measures will stop them, only perhaps slow them down. The best that can be done is to implement community systems to attempt to fix the status quo, though I'm doubtful that scales too well either.
Websites are starting to look more similar, empirically.
Microsoft is releasing some DirectX on WSL. So it's Windows (kind of) atop Linux (kind of) atop Windows? Meta.
On why AES-GCM sucks. For some reason this particular author just emanates wholesomeness. Perhaps it's to do with the personable illustrations. :)
Deno has reached 1.0! Very happy for them.
This new use of GPT-2 I find so hilarious that I'm in tears right now.
Also read what the folks at HN discovered, as well as try your own. I literally cannot go over more than three definitions before finding something fun.
On ERP, the multi-billion-dollar software discipline that most engineers have probably never heard of.
Though I'm a fan of the Unix philosophy at large, I also agree that it's like a bunch of sharp tools. Also see the associated discussion.
Second-guessing the modern web.
On Xanadu. Alas note that this article might contain some inaccuracies. (That latter rebuttal is quite indicative.)
A fascinating four part post series on coming about to making a deployment pacer.
On the usability of editable software.
On WinSxS and why is it so large.
Chromium Developers' Fast Intro to Git Internals. A really good read if you're curious.
On Overcast's Voice Boost 2. Just love this kind of deep dive into any topic, especially audio processing.
Today is just that ACNH 3pm vibe kind of day.
On Twitch's (then Justin.tv) livestreaming architecture in 2010.
Also worth reading this recent HN thread on the same.
On coding for fun.
Feels like I needed to read this.
On the engineering culture differences between Etsy and Netflix in 2013. It's old but fascinating regardless.
On experimental WebGPU in Firefox.
Though I'm of the opinion that perhaps the web has expanded a bit too much, I am also prone to falling for the new shiny, especially when it aligns with something I'm personally excited about.
I'm excited about general purpose (non-graphics) usage of GPUs, and WebGPU does allow for that, hence why it falls on my radar. :)
John Gruber on the iPhone SE (2020).
On Lee Holloway, one of the cofounders of Cloudflare.
It's scary to think about diseases of the brain and the way that they disrupt the things what makes you you, at least in the scientific sense of observability. Having observed a relative going through a form of dementia really shakes one up, especially knowing that it might affect you or someone you dearly love someday in the future.
It's wishful thinking to hope that it won't happen, though hope is all that one can currently have.
Alas Lee didn't live to see the technology to immortalize your selfness before starting to "lose" it, and perhaps I won't too, and certainly many people I love won't, though I wish that CGP Grey is right on this one.
Sure, this raises the question of what even is self in that context, as relayed in the Wired article as well. But perhaps that's a topic for a different time or medium.
On the decline of usability.
On missing the point.
On open worlds.
Tom Scott on APIs, Web 2.0, and building stuff. Though this definitely isn't what I expected this week, I find it particularly poignant it's Tom who's raising this issue.
And I agree wholeheartedly. Wow does this strike true.
On decoding MP3.
This recent SMBC is quite good.
The Glitch Gallery.
(Via Joy of Computing)
On what books programmers should read. Alternatively, which ones they don't read.
Ogg objections, and a rebuttal by the creator of Ogg.
On chat as a communication tool at companies.
Of course it's biased—it's even on Basecamp's domain—but it still has plenty of truth in there. It's a subtle advertisement :)
On choosing boring technology.
On whether one should use Vim full-time. (Spoiler alert: it depends.)
I use Vim for nearly all of my coding these days (my setup is actually pretty vanilla) and it works great for me, but I can totally understand that it wouldn't for just everyone.
On uninterruptible sleep and, relatedly, on TASK_KILLABLE.
Via this HN thread, whose target is no less fascinating.
On zig cc.
The work that Andrew Kelley puts into Zig is just incredible.
On aliasing, particularly in computer graphics.
My current study program doesn't include any signal processing theory (or so I believe) which is a real shame because there's a lot to be explored there. The explainer on Fourier transforms within this article is one of the most accessible I've seen yet.
Cshell is punk rock.
On the history of the x86 register names.
On the scope of the web, particularly web browsers.
While I don't agree completely, the points are valid, especially on the ever-expanding scope. Even implementing a complete HTML/CSS rendering engine, not even mentioning interactivity via ECMAScript and DOM, is a herculean task; when you couple that with a JS engine, it becomes near-impossible.1
On the other hand, web browsers might as well be the most generic and application-level-developer-customizable software conceived until now, with a solid security model and compatibility. When you take any single application in isolation, few can be proud to be as flexible as web browsers.
Though Drew tends to paint this in a more of a negative light, though I'm not claiming this is the entirety of his opinion, I vouch for the flipside. I'm not particularly proud of being primarily a web developer, if such a title even exists, but I can attest that I can do a lot with the tools that the web provides, at least within certain contexts and sets of limitations.
Also, it will never cease to amuse me that a significant complaint people had about this article was that the word counts were off. Of course some people need to have everything be factually precise, regardless the intended sentiment.
1 Though how this came to be is also an artifact of the system web browsers exist within; there has always been a pressure to add features to web engines, and the standard essentially is just a description of what engines do currently. Implementing a new engine essentially requires effort that is equivalent to what has been cumulatively put into the existing engines since 1995 (!). No wonder nobody else tries—because without engineering resources that only a few companies in the world even posess you'll be stuck playing catch-up with a 25 year gap, and which will probably not grow smaller by the day, quite the opposite.
On transitioning from Python to Go. Really good points that I've thought about as well—Go indeed makes concurrency seamless, and doesn't place any obstacles for parallelism.
I suppose the point is that concurrency must be supported natively by the language, and parallelism should be a runtime feature from the start. Both of these do seem like truisms if you think about it—any other model than M:N multiplexing has a bottleneck at one point or another.
I've been toying around the idea of trying to make a programming language again (and I'll probably find an excuse to do so as part of my uni curriculum at some point), hopefully a proper one this time, not some one-letter-Brainfuck-level-technically-Turing-complete-but-not-really-useful thing, so perhaps this could be a fair design cue to take.
(Via Chris Hodapp via Lobste.rs)
Though it's probably not the best general advice, on doing whatever you can't stop thinking about.
(Sidenote: the typography on that page is pretty bad.)
On being a generalist. I consider myself to be one, for better or for worse.
Edit: This quote also seems to hit true:
A specialist will tend to underestimate a generalist's ability to specialize, when they choose to focus on one thing; A generalist will tend to underestimate how deep any given specialty actually extends.
For nostalgia's sake, here's a ca-2008 meme.
On why the Brave Browser is brilliant, though not necessarily in a positive way.
Why you shouldn't use Material Design text fields. They are a bit of a pet peeve for me, especially with Material becoming the new Bootstrap on the web. It just feels clunky.
The whole fact that the labels slide around seems like animation for animation's sake, without a lot of regard for usability. I know that it feels nice to cook up new paradigms—I've done it myself back in the day—, but from my current point of view I would be against it. If most field labels you see are beside the field and don't change position, then go with the flow instead of inventing your own way.
The app I'm working on will take inspiration from Material, especially regarding the spatiality of the layout and interaction design, but not the visuals per se.
Google themselves seem to have been striving away from pure Material in their recent app updates. Apart from using the card metaphor, I don't think Google Maps on Android is really that Material-esque, for instance.
Another worthwhile link from the same article on the same topic.
(On this topic, another phenomenon I'm not a fan of, though perhaps it is happening for the greater good: replacing the navigation drawer with a bottom tab bar.)
On integer division via multiplication.
When bloom filters don't bloom.
After taking a Computer Architecture course at my uni, the results make quite a lot of sense.
On the deficiencies of Go's simplicity-oriented approach.
This is officially the best tweet. Pack it up people, we're done here.
Related to a recent post, here is Joe Armstrong's favourite Erlang program.
If only the servers of today were that simple. Erlang/OTP, in certain categories, is the ideal programming environment; this post provides one of the proofs.
This intuitive guide to Linear Algebra is incredibly good. As the author mentions, I wish I had this when I was taking it.
Joe Armstrong on why programming is difficult.
While digging through the bugs linked from the Zig documentation (which is actually really great), I accidentally stumbled upon Fomu.
Looks like those RAM sticks I've been wanting for my tower PC will have to wait. This seems like such a fun technology to play with!
I believe that I have a side project brewing, and I find it likely that I'll use Zig for it. Here's an intro if you haven't heard of it before, and here's something absolutely amazing to me as a particular kind of language purist.
I mean, there's nothing wrong with hygienic macros (see Rust or Lisp) which can accomplish pretty much the same thing, but they explicitly exist in a different universe than the program they're working on. Sure, that makes them more powerful, but Zig's
comptime seems to be much more in-line with the rest of the language; it works exactly as you'd expect—what you wrote gets evaluated at compile time as far as is possible.
The only other language I've heard does something like this is Jai, which shares some of its goals with Zig, but it fills a different niche and is not yet widely available whereas Zig is.
Open Location Codes or even Geohash are viable alternatives.
There's also WhatFreeWords. If I were to use a system, I'd pick the latter if I were to spite W3W. (Though in practice I'd stick to one of the aforementioned ones instead.)
On the Ambiguous (
This thread blows my mind.
What happens after you get cancelled.
Jon Ronson's book on the same topic shows a different picture for some, but in abstract this part really stuck with me:
Taylor Lorenz, a staff writer at the New York Times told The Stranger: “In internet culture, being canceled is only good for your career. It usually results in going viral, which is default good in today’s broken world.”
I suppose it seems this way because you only see the people who survived it, who stayed in the public mind or their jobs. The rest of us, we cease, unpersoned and exiled. We are not in the observational data set, we are never spoken of when people talk about this mode of human life.
Homebrew has removed Python 2 from their repositories.
Hopefully others will find time to follow suit.
There's a misconception that EOL was on January 1, and while that is true in one of the technical ways, the actual final 2.7 branch release will be in April. But who cares about that :)
On the Nokia N9. I love to wonder as well what would have been were it not for Windows Phone.
(Via Joy of Computing)
On home-cooked apps.
Right now I'm working on a project that feels like it might stay in this category. And it's not a bad thing.
Casey Newton on the fight for encryption.
It was inevitable, but India's case in particular might turn out bleak.
Wireguard has been mainlined. Exciting!
A classic post in PL theory, if it can even be called that.
It's in the same category as Eevee's eternally young post on PHP. (I continue to work in PHP and this post is still valid.)
The perspective of an Apple Aperture QA engineer.
Apple occasionally seems such a fun place to work at, and stories such as this are really inspiring. Though the story of Aperture has an end much like with any other software, though some continue to swear by it and put in the effort to try and delay the possibly inevitable, if one decides to keep up.
Всероссийская перепись под угрозой.
The Evolution of Trust.
An implementation of Git in (almost) POSIX shell.
Git's internal concepts are indeed beautiful in their simplicity, but its externals are messy, to say the least. :)
On what Lua doesn't have that could make it competitive with Python. Lua is indeed a beautiful language and has the potential to have more power in the dynamic language space, but it doesn't because it wasn't intended for that.
Which is too bad, really. Lua is one of my favourite languages.
This tickles my inner engineer in all the right ways. Also it's by Bartosz Ciechanowski, his interactive posts are literally the best there are.
Finally fixed the fonts on this site. Whew, the mistake was quite dumb, and now you can enjoy these posts in a nice IBM Plex Sans.
Unrelatedly, some more posts are coming. I've been stashing some links for a while and hence will dump them quite soon.
While I agree to the premise that messaging needs to become decentralized, I (as an XMPP fan of sorts) disagree with the approach outlined therein.
Though let us not fall victim to infighting when there's a greater enemy to be slain.
Tapis nominēts gada vārds un nevārds.
Šogad maķenīt mazāk polarizējoši nekā iepriekš. Kandidātu atlase ir ievērojami interesantāka—sevišķi patīk
rīsulis, kaut gan otro nekādi nevaru pieņemt suši vietā, tāpat kā nekad neesmu spējis pieņemt
haika vienskaitlī (uzskatu par pareizu gan vienskaitlī, gan daudzskaitlī paturēt haiku.) Laikam gan manī vēl joprojām mājo vēlme apgūt 日本語 :)
Responsive Pixel Art. Really impressive stuff.
On bugs in emulation and hardware.
Byte is here! Back in the days of Vine I was a fan of Tragic Tofu and the author is back for more under the same username on Byte so I recommend following them there.
I wrote a short post about why Byte is fine the way it is.
The tragic story of Phil Katz.
Capital valdes locekļa viedoklis par likumdošanas izmaiņām un ieskats valdības nozares un vispārējās IT tendencēs.
Where are our simulators?
On being glue.
One of the new podcasts I've taken up and have been really enjoying recently is On The Metal.
This particular episode on homebrew network infrastructure (!?) is very much a favourite, though there have ever only been a few episodes thus far.
Highly recommended if you like such low-level stuff! Still recommended, but maybe a bit less, if you don't. :)
On why static typing might be better even in the scenarios dynamic typing usually is touted as the more useful tool.
Can't say I disagree.
On contempt culture.
Gives you stuff to think about.
A great write-up on event sourcing. Loved the xkcd cameo and the approachability of the text.
The idea itself seems useful and is partially embodied in other practices such as message queueing (job deferral, see RabbitMQ/beanstalkd) in webdev so it's not entirely foreign but taking it to an extreme seems to have its benefits as well.
Too bad nothing I'm currently working on could make much use of splitting into such tiny microservices, not least due to resource constraints (yay indie life).
Some of my shortform content will hereon be posted on my Mastodon.
Sorry about that, but it feels like some of it doesn't belong here.
So I've semi-accidentally jumped from web development into mobile app development and thus far it's been very fun and a nice change of pace.
Am I turning into a Marco Arment?
qpdf is the best.
Opinion: Writing unit tests feels like eating your vegetables.
You don't look forward to it, it's menial while it happens, but you feel (and are) better afterwards.
Not that I don't like vegetables. But I can't say I'm excited for writing unit tests.
Right now I'm procrastinating from doing that, even.
Steve Klabnik on CLOSURE. (CLOSURE itself.)
Soon the posts on this site will be available via Micro.blog.
Though I'm not an active user of this service, it has its place within the wider Internet and I respect the work that Manton is doing.
On non-sighted software development.
On message passing paradigm in practice.
Famously Alan Kay, who coined the term "object-oriented programming" and who created Smalltalk, claims that OOP is all about message passing instead of how it's implemented in the descendants of Simula. Though that doesn't mesh with the say many programmers interpret it (particularly because of C++ and its overwhelming effect on programming languages), the OOP purists tend towards this model; particularly in Ruby and to a larger extent in Erlang. This taxonomy is worth considering; I tend to support it.
This last post got kinda long so I thought of implementing asterisms as a nice alternative to horizontal rules for breaking it up into sections.
Though I admit it was off form for this place. Perhaps I shouldn't post long treatises on multiple topics stemming from a single one on here?
But where else?
Edit: Technically the
* * * isn't an asterism, but a dinkus. Ah well, too bad that the CSS class I made is named
asterism. Hopefully I won't forget to fix it eventually, but in the case I'm not in a hurry: for posterity's sake for the typography nerds reading this, let me outline once again, I do know that there exists a difference, just that I don't care enough to implement a change at this moment.
I never managed to jump onto the Protobuf hypewagon, and this detailed criticism of them will be good ammunition in future considerations, though it's predicated a bit unsubtly in type theory and uses Haskellisms to describe things. (Perhaps Haskell is a Holy Grail language for type systems?)
I prefer JSON for my APIs instead. If you can't deal with the lack of typing, I am sorry but you don't get to interfere with a no-nonsense good-enough format just to get some fancy Java-like features and binary parsing added.
* * *
It would be interesting to have a similar analysis performed on Telegram's TL which seems to be its own can of worms, made in a typical Durov NIH-syndrome fashion. Unfortunately I lack the experience to do that, for in the alternative case I'd love to, what with my growing hatred of Tg as of recent.
* * *
Related to the first article, someone within the HN comment thread mentioned that Protobuf was originally written by Jeff Dean and Sanjay Ghemawat, which reminded me of this excellent NYT profile of their duo.
* * *
Still related to the first article, this partial debunking by Kenton Varga who's somewhat of a big name in this space is worth reading.
* * *
Reading through the 2018 comment thread of the same article, I came across this nugget:
The utter awkwardness of Protobuf-generated code is particularly problematic. I've had pretty good results with the TypeScript code generator, but the Go generator is just egregiously bad.
While I do admit that there are valid use cases for code generation, I've thus far tended away from it rather than towards it;1 perhaps codegen itself is incompatible with human programmers working on the same codebase and there's reason to hurry along the monkeys-at-keyboards out of it? I can't say that's the conclusion I want to come to but it's a valid one.
1 It is not because I vainly believe that programming is secure from automation, for it is most certainly not; rather because it doesn't mesh with, and even goes against, my personal philosophy that code is a work of craftsmanship and represents the qualities of its author. I don't have a use case for generated code within my own projects, and the code generated would be out of place in the context of mine. This is a privileged position to take since my projects are comparatively tiny to where, e.g., Protobufs get used.
Within an attention-deficit society I find campaigns such as this highly admirable. Only if something like that were to happen somewhere closer to where I spend my days.
Merry Christmas, if you celebrate that sort of thing.
As I'm working on a sort-of-SaaS project of my own right now, this postmortem of a failed SaaS hits home hard.
Nozare.lv intervija ar Tet valdes priekšsēdētāju. Sevišķi interesanti, ka tiek plānots ieviest "agile" darba metodes; vismaz beidzot kāds lielmēroga uzņēmums Latvijā sāk kustēties līdzi laikam.
Būtu jauki, ja to pašu izdotos ieviest e-veselības izstrādātājiem :)
The Verge has an article on how the alt-right is using Mastodon as their social network of majority.
On a related note, I've migrated my own account to a different instance for partially unrelated reasons. If your follow hasn't been transferred automatically because you're on an outdated instance, please, re-follow manually.
Not like I'm planning on posting there that much. But, y'know, just in case. Don't want to be screaming into a void. :)
Ars Technica has this quite accessible post on deepfakes.
Conclusion: not there yet. But probably not too far off either.
Related: Tom Scott's video on the same subject, coming to the same conclusion, except with much weaker hardware and hence much less training.
The Ars Technica promoted comment also makes a good point: entities with much more massive budgets than $500 over two weeks, and hence more powerful hardware, could probably use the technology even as it is now, perhaps with some tweaks, to perform faceswapping at a much more convincing level. The scale available to them is unimaginable to us, and nearly nothing prevents them from using it for whatever purpose they might want.
I'm sure Twitter's Bluesky initiative has been debated to death, but I wanted to highlight a couple of external commentary.
Bluesky, while potentially ambitious and overdue, still seems to be half-baked in the current state. I can only hope that Jack isn't serious about blockchain, and I wish for either ActivityPub or (perhaps, one can dream) Atom/RSS to form the basis upon which this is built, but I can't hold out high hopes.
The problem-at-large seems to be with the paradigm of social networking in general. Though it has its upsides, I personally apparently can't coexist with them in a healthy way so for me the only route to success is to refrain. Which is what I've been doing, apart from this write-only medium I have here.
Still, it'd be nice to see Twitter going somewhere with this. I've dumped enough hate on them and I hope the technologist within Jack prevails and effects the power that 2006 Twitter had but took away from the developers at first chance.
On the changing Japanese language:
Language is political, as Mizumura demonstrates. By projecting their domestic identities to a global audience for the first time, the Japanese are engaging in a symbolic act of self-assertion and seeking to put such complexes behind them.
Perhaps I should make good on that promise to myself and eventually get the original Blue Book. Seems like it could be worth it.
For calm technology.
This is something I've been thinking about on-and-off for a while as well, and this just puts it better than I could.
I'm not a gamedev but stuff like this makes me wish I were.
Just that I don't have any ideas.
Jeff Atwood on why programmers are typists first.
I can personally squeeze out around 80-100 WPM according to different metrics, and indeed I must note that the ability to type quickly makes it much easier to code, as you don't lose your train of thought too often.
The SCoBHUa hearing on Privacy Rights and Data Collection in a Digital Economy raises quite a lot of important questions in this age of privacy dilation. Maciej Ceglowski's testimony in particular is worth hearing (beginning from 42 minutes in the video), but the Q/A that follows is arguably much more worthwhile.
(If you want to watch the whole video, the hearing actually starts only at minute 18.)
SEO spam site, you wot?
On ZIP quines.
Recommendation: Just read everything that Russ Cox writes. His pieces are brimming with technical insight and details. I've not gotten through even 1% of it, but he's probably the one tech writer of modern times that should probably be on every self-respecting software engineer's reading list (or, hopefully, already-read list).
On Lobste.rs today I found Return True to Win, but somewhere nearby I found a much more fun XSS game in the same vein.
I can't stop!
Edit: Should probably redo the Matasano crypto challenges (or at least try to finish them this time) sometime soon.
Don't learn to code—learn to automate. (Fixed that em dash spacing for you.)
Paul Graham on how the current education system is broken. Being an university student at the moment I do somewhat feel this on my own skin and it does indeed chafe, though it seems that the problem is much more acute in the US whence Graham is (presumably) writing.
I love the aesthetic this kind of loading spinner oozes. :)
Controversial: PHP is basically just an odd Perl. Or at least it was until around mid-version 5 or so.
I've probably already posted about machine-generated death metal, but I just re-stumbled upon it and it's still pretty good.
I witnessed some of this. It was fun.
To fight the nascent negativity on my feed, here's some comedic relief.
(Via The Interface)
On framework configuration patterns. Just in case I ever need to implement my own framework and can't choose.
I hate to be a downer, but alas.
I've heard of Away through their podcast ads, and a recent Verge piece provides insight into the churnhouse that's at work making it all happen.
Reality distortion is a powerful thing.
Pondering Advent of Code after having done three-and-a-half1 days' worth of exercises:
I really miss Erlang. F# is nice and all, but feels like Erlang set a bar for functional thinking.
Erlang, by many measures, is not a perfectly functional language, but I nonetheless tend to write my F# code as I would do in Erlang and it doesn't feel idiomatic.
Perhaps it's just impostor syndrome.
1 I haven't gotten day 3 right yet. It's in progress and requires a full night's worth of sleep, which I haven't gotten the past few days. :)
I can present no comment, except to mention that this is what earns the web its reputation.
On nexuses. I like the term.
Brent Simmons sometimes seems like the wisest person around within the internet circles I tend to frequent.
His post on why he listens to podcasts at 1x speed (which I don't, by the way) somewhat unexpectedly goes into quite deep life advice that I'll probably be consider until the end of the night.
It wouldn't even have occurred to me to look at everything that way, but it's so true.
As always, Microsoft excels at providing intuitive, cruft-free software experiences.
If you can't give users the option to delete their account without contacting support, I suspect much more is wrong than just the technical side of things.
Especially if you require users to contact you by phone. Why?
Some fairly good advice on technology choices from DHH.
I don't keep up with him in particular or Basecamp in general, but often times their (and his) philosophy rings true. This is definitely one of those times.
My own personal projects focus on nano-scalability, and that's the reason I choose PHP: it scales down to zero when there are no users and can scale up for some time before you run into limits. The former part is really important to me who doesn't have an audience to speak of which would use anything I make. Hence it's important that stuff doesn't take up resources when it doesn't need to.
It's quite hard to find good recordings of particular pieces when you have an opinion on how they should be played.
Today I discovered that one of my favourite cello pieces is composed by Bach, and a near-perfect recording already exists.
I've heard mentioned numerous times (probably by Merlin, also in Jon Ronson's "So You've Been Publicly Shamed") that Twitter is the epitome of internet mobs.
This pair of tweets reflects it best. (Edit: cont.)
Note that I'm not taking a stance in either direction. It's a personal matter to agree or disagree with this approach, though I can see the downsides.
But the whole fact that two diametrically opposite opinions can be located within a subtweet's distance is somewhat boggling my mind. This means that there are no barriers between both sides and hence it's easier for the anger of either side to turn onto the other.
I guess Jon Ronson has spoiled Twitter for me. Suppose I'll remain here, in my quiet corner of the internet whence nobody cares.
Perhaps it's better that way.
Writeup from Twitch engineers on the technique of memory ballast to help regulating GC invocations within heavily-loaded applications.
Lobste.rs just seems overrun with GC posts today. Wonder why. :)
Kaboom is a really interesting take on the classic Minesweeper. It really forces you to be attentive and not just make random guesses.
Minesweeper Kaboom pro, but perhaps that's exactly why clearing a 10x10<-10 board feels so good and at the same time the process so intense.
Oh gosh, there are apparently tons of advent calendars ongoing.
Edit: Had forgotten about the Bekk Christmas calendar constellation.
I don't directly buy SOLID either. But perhaps indeed it's just enough practice that opens your eyes.
Fun thing: programming opinions people believe are controversial.
This rings surprisingly true, as partially does this and this. Though, of course, it's hard to deal in absolutes, as even the aforementioned necessarily have exceptions.
Just today Twitter gave me a recommendation to follow Joe Armstrong.
I know that they don't know that he's deceased, but simultaneously their impeding policy on clearing out old accounts will hit the same problem, and I'm not entirely sure that they'll be up for it and whether they'll do a good enough job. Sure, the one-tweet-years-ago accounts can go, yet Twitter is in a peculiar position if they want to free up username real-estate.
YouTube deals with this by removing channels whose account hasn't been logged into for four years, I believe. (That's how we (I?) lost ReverseMan. [The channel, not some weird video.])
The Advent of Code is officially on!
I intend to publish my solutions as well to anyone curious. No particular promises on languages or anything just yet though.
For fluent interfaces.
Against fluent interfaces.
Sure, they might be nice to use (with some exceptions and constraints), but they wreak havoc on the internals you're calling into.
I've tried implementing a fluent interface for a SQL query builder back in the day. It was fun to use but tedious-at-best to write.
Use more idiomatic OOP approaches instead. Or just don't use OOP at all.
Still related to the Ubuntu 19.10 post, the post on how Gnome Shell's performance was improved so drastically (by some accounts) is actually a really interesting read.
Particularly thought-provoking is the point on needing to use other environments to compare against your own. It makes sense, after all—if you only use X then you'll get used to its problems and stop noticing them, until you switch to Y which doesn't have them and have a sudden moment of realization—but I don't think enough people keep this in their minds when rolling through life. Sometimes a little perspective is needed, and the best way to get that is to step outside of your comfort zone in all the possible senses.
While pondering setting up ZFS on my next Linux reinstall (long story), I came upon this very detailed treatise on exactly why CDDL and GPLv2 are considered incompatible, which on a theoretical level prevents from anyone legally shipping a Linux kernel with Sun's ZFS code within it.
Note that Canonical didn't abide by this ruling and insists otherwise. I'll hold off on this because this seems like a topic where only lawyers would be qualified to judge, yet I would love for ZFS to gain wider adoption.
Edit: Interestingly, this has some parallels with Minecraft server modding, in particular, the approach used by Spigot ever since 1.8. The history of why this came to be is long and complicated and I can't say I recall it in its entirety either, but the essence is that Mojang holds the copyright over the server code, and while Spigot might sort-of patch parts of Mojang's server code, such a modified server executable would still fall under Mojang's copyright and so it can't be legally redistributed. The way they circumvent this roadblock is by never distributing the complete executable but instead providing the tools for anyone to build it on their own machine.
ZFS on Linux (usually) works the same way—the baked kernel executable or, indeed, any sort of module is not provided (at least officially by any vendors apart from Canonical) by the Linux vendor, instead providing for the option to build a bespoke version on a machine for "personal" use, but not distribute such a build any further. This is fine-and-dandy according to most interpretations and not-detectably-illegal by the most pessimistic ones.
Edit Ⅱ: Although it seemingly got nowhere, there was even an attempt to clean-room implement ZFS in Python without reading the original source code, which would entirely bypass the license troubles. Unfortunately ZFS is so large and complex (just like any other substantial piece of software) than such an effort couldn't probably yield a complete piece of software, not even considering how reliable it would be, as opposed to what the mainline ZFS implementation offers, what with its battle-tested code.
Of course, for Linuxes there's always btrfs which, though having its own set of troubles while it's not mature enough, seems promising. But I've been burned by it before and I don't think I'd trust it before its disk-nearly-full and logs-grow-unboundedly-by-default behaviours become more sane.
Ubuntu 19.10 is out.
Yay, another chapter of my favourite ongoing project is online!
This report of the first GitHub Open Source Advisory Board meeting, written up by the author of Fossil, is thought-provoking on the issue of Github's role in open source these days.
I'm personally not a fan of Github and the monoculture it seems to tend towards (with Github being the de facto default destination of open source projects) so I host quite a bit of my code on my own server instead,1 so I tend to agree with many of the points Richard makes in his analysis. Though at the same time Github has its advantages, especially considering that it provides all of its resources for free without any real limits due to being subsidized by its enterprise offerings.
1 Right now I'm using Gitea for this but I feel like it's quite bloated and resource-intensive, especially for a small VPS. The perfect alternative would be to write a solution of my own but that will be quite resource-intensive and something I don't think I could extract a lot of value out of.
Until recently I was a fan of Wire as the primary choice for a security-oriented messaging app.
Recently they've begun a push towards B2B and expunged any mention of their free version from their website so I guess the days are counted for non-business Wire.
Back to XMPP we go?
Sometimes I'm just stupified by how creative some people can be. Even though this seems silly, I wouldn't be surprised if somebody built an emulator of this within some sort of 3D environment.
Ruby is a damn beautiful language that I really enjoy working in, but boy, the builtin HTTP client is really clunky. As is WEBrick.
This is a serious downer for otherwise such a great language.
Though I wouldn't call myself a new developer, I occasionally read Letters to a New Developer because it keeps my mindset from going too egotistical.
Learn Two Languages seems like a really apt piece of advice, not the least because it encourages to expand one's horizons of thought. It's something that many of us forget to do (I myself can attest that I do quite often) and it's nice to have such a reminder.
An interesting and underused (underimplemented?) idea in debugging: time travel. I personally first heard it back when trying Redux, but just now discovered rr which applies a similar idea to any C/C++ program, which seems quite powerful indeed.
Stumbled upon this within a discussion of Firefox's new Web Replay feature that's coming soon and bringing the same thing to webapps.
I really wish all languages and environments had something of this calibre to offer. It would make programming so much easier as compared to the state-of-the-art we have now with most languages where it's not much better than just sprinkling print statements all over the place. Manipulating the flow of time seems so much more innovative and offers better insight about how the state had changed up until a certain point, not just seeing the state at that point in time.
Doesn't seem like it got a lot of coverage, but the new "Listen like you used to" Spotify ad campaign seems quite fresh.
Šeit ir raksts latviski par to pašu.
Merlin Mann, back in 2009 or so, on Marco Arment. The piece itself is showing its age, but this part caught my eye:
I’m still mulling over the longer term consequences of a post-RSS, post-API culture that destroys any reasonable barrier to putting all the data that matters to you any place you want any time it suits you.
Alas, the opposite of that happened instead.
Also, gosh, 2009 was 10 years ago. Merlin was cranking out quite a bit of writing back in those days.
I love Maciej's occasional technology shitpost tweet.
On finding characters within a string in an optimized way.
Due to the fact how current CPUs work, sometimes the best optimization appears counterintuitive. I still haven't internalized the fact that either manual vectorization or using SIMD intrinsics is better for performance than naive loops, especially on languages that have some interface with low-level stuff. (Unfortunately, more often than not I get to spend the time thinking about this while working within PHP which has plenty of barriers preventing such optimizations from being of any use.)
Figma's detailed description on how they implemented what they call "multiplayer" (which is actually a bloody great term!) for their web application is a quite nice read. Realtime collaboration is something I want to eventually research, and this seems useful.
The short note on fractional indexing as opposed to OTs for establishing an absolute ordering for sequences is worthwhile as well.
Tonight I read a two-part saga on the lives of Facebook content moderators.
It's a sobering read.
I can only hope that Newton will report once again after the measures are instituted. Even though there will always be vile content that will have to be moderated by someone (even in the case AI takes over, in which case the AI's decisions will have to be checked at least sporadically) as inherently there will be some humans who take perverse pleasure in hurting others, be they human or not, and enjoy sharing such acts, I cannot put into words the state the current moderators are subjected to.
Not even talking about the vile content itself. I feel like I have slightly too vivid of an imagination to even pay attention to the paragraphs where they talk about what kind of content is even being seen by the moderators. I can't even begin to imagine what being one must be like.
I like Speagle's idea of needing to shut down Facebook (admittedly I agree for the wrong reasons) yet that wouldn't fix the problem, just move it elsewhere. Perhaps the policies were slightly incorrectly skewed which made this entire system even possible in the first place, but the kinds of people that wish to share this content at all will not go away just because you take away their place of expression; they'll just move elsewhere, and that "elsewhere" will have to deal with much the same problems.
I guess the grim conclusion of this supposedly short-form post is that this is how I lose evermore hope in humanity.
👏 Delfi 👏 "podkāsti" 👏 nav 👏 īstas 👏 aplādes 👏
👏 tā 👏 nav 👏 aplāde (podraide) 👏 iekams 👏 tai 👏 nav 👏 RSS 👏 barotnes 👏
Fossil's new smartwatch seems like it was made just for me.
I've been having an affair with an Android Wear smartwatch (incidentally, from Misfit, who seem to be a subsidiary of Fossil now and were probably involved in making the Hybrid HR) and thus far I am a bit torn. I was a fan of Pebble and the customizability it afforded but these days I'm an old curmudgeon who just wants the bare minimum, no apps, just notifications and a simple analog watchface is perfectly enough.
The fact that Hybrid HR is limited in what it can do and at that can provide excellent battery life is a giant plus for me. The limitations are what makes it great, as opposed to the ones who need all the flashiness of Galaxy Gear/Apple Watch.
Even though I abhor Twitter threads as a medium of long-form communication (sorry, Foone) this one on Sunray and, interestingly, Google Stadia makes a fair point.
The 88x31 GIF archive is a fascinating nostalgia trip to go on. Too bad that nobody seems to have done a similar thing for 80x15 badges though.
On why your money might not be yours. I agree as a technology cynic yet fail to follow the advice outlined as a lover of convenience, unfortunately.
The Cybertruck seems like a joke yet I love it.
I might be a bit late, but this piece on Google's quantum supremacy is quite a good read.
Related to a recent post, this consideration of the role of OOP in modern programming is just too good to not be mentioned here.
Also never forget one of the excellent Eevee's treatises along a similar theme.
After fighting with my PC motherboard's buggy implementation of UEFI, I want to say this:
I'm not sure I want to ever own a non-Apple PC again.
Unless the UEFI implementation is at least passable. (Most of them are not. Apple's is outstanding.)
It's been just over a year since this fun read on the Oracle Database was posted.
I have a bit of an odd tradition wherein I sometimes read and re-read articles on bad code hoping that something sticks and hence strive to write code that is not bad, so this HN comment falls within the aegis of that "tradition." Not sure whether it has any effect though :)
The other two top comments are also somewhat fun. Perhaps there's not a lot of truth to them, or perhaps they highlight how hopeless the field of software engineering is, but I won't pass judgement on that.
On thinking in a (programming) language. This rings true often enough for me as a mostly-OOP programmer with a light functional background, for some languages put obstacles in the way of effecting your solutions in the way you want, as opposed to what the language is made for (looking at you, Java.)
Šī grāmata izskatās esam interesanta. Man allaž ir paticis dzelzceļš, un tā šķietamā neveiksme Latvijā noteikti piedāvā interesantu stāstu, ko šī grāmata arī sola.
While culling my long-overdue reading-list-stored-as-open-tabs, I found the Four Cool URLs article that I really loved.
Tangentially related: it's a shame Reddit went closed source.
Joe Armstrong, the creator of Erlang and one of, in my opinion, forefront minds of modern computing, on what should be considered the Minimum Viable Program. This is a concept I feel like is seldom considered these days.
CV Dazzle. Delightful.
GerdaOS looks really promising. I've always felt some disdain towards KaiOS for taking B2G and continuing its development and promotion as a closed-source fork with a heavily walled-off ecosystem, but GerdaOS seems to be the liberating force to help overcome the tyranny of the limits artificially imposed upon an open OS by the hand of capitalism. (Also, I love the name and the mythos behind it.)
Though apparently ADB access can be enabled within vanilla KaiOS as well, by entering
*#*#debug#*#*), via which it's also possible to gain root access or at least some privilege escalation. At least Kai didn't take everything out.
Now this site has a JSON Feed for those of you who want to subscribe, as well as permalinks to individual posts, accessible via clicking upon their timestamps.
Superliminal has finally come out after (apparently) 6 years of development. I've been following Pillow Castle ever since 2016 or so when I saw their demo of what would become this game.
The game is not particularly long—I beat it within two hours—but still packs quite a bit within that time. The pace is mainly dictated by your ability to solve puzzles, most of which aren't particularly tough once you grasp the basic concept.
A really strong suit of this game is the atmosphere. The art and visuals are amazing, the music is spot on, and the plot fits in perfectly. Most of this is achieved via setting constraints and then working within them, but nevertheless it turned out really well.
Even though most of the puzzles seemed quite easy after grasping the initial concept of forced perspective, some of them are quite obtuse (looking at you, Whitespace.) In general it's not puzzle-heavy like Portal, even though in places they share the same vibe.
Also unfortunately it doesn't seem that it has a lot of replay value, considering it's mostly aesthetic, but perhaps that's what games are moving towards these days.
I can't say this is a game for everyone, but if the mechanics intrigue you, or you want to experience the visuals first-hand, do check it out, especially while it's still on sale.
I'm particularly interested in numbers stations, and this 2006 segment on BBC R4 is fascinating to listen to. The part about the gongs is particularly fun.
I recently read Gretchen McCulloch's Because Internet and even though it wasn't anything particularly eye-opening, it was a good read and gave me a couple of things to think about with regards to how the internet has changed over the years before I came to be a user of it.
In a similar vibe, Kate Wagner's essay 404 Page Not Found ponders upon the web of the days bygone, the web that I missed and the one that seems like it would be better.
Many things ring true within 404, and the non-apparent message it contains actually aligns quite well with my own beliefs.
Here's an indirect Brexit joke:
Today is Aaron Swartz day.
I am a Postgres advocate (as opposed to MySQL/MariaDB for contemporary use), but this article about using Postgres as a job queue (with near-realtime job claiming, no less!) really highlights why I hold this philosophy. MySQL and its derivatives might work well as a raw data store if you're willing to put in the effort to guard against accidental data corruption or tweak the compatibility settings just right, but Postgres, even though sometimes a bit feature-creeped at times,1 provides for any data storage use case, and most are accounted for out of the box.
1 Indeed I don't think that pub/sub would be an integral part of an RDBMS and it's a bit inexplicable that Postgres has it, but it nonetheless can be convenient in use cases such as presented within that article.
Today is just that kind of Splatoon meme kind of day.
Andy Baio on how machine learning now enables quite good separation of vocals and music.
On the lost key of QWERTY.
Russ Cox's three-parter on Implementing Regular Expressions is worth a read if you've got a thing for deep theory and implementation details on finite-state automata.
On learning piano and instead learning about life.
Grace Hopper's segment on 60 Minutes is fascinating in multiple regards. Her seminal lecture is interesting as well, even though the remaining recordings are a bit low quality.
"Programming Languages," mostly about Zig.
Zig is yet another of the languages I'm keeping an eye out for. C is good and all, but Zig is one of the few languages that seem like the fairest compromise and which could take on being a C replacement, and this article alludes to that idea as well.
Unrelated tangent: LLVM seems to be the best thing to happen to compiled language creators since transpilation to C.
Tedium recently posted an interesting reflection upon historic digital places.
Presented without comment: Try Coding Dear Boy.
Inspect This Snake.
In a similar vein: untitledgame.xyz.
Drew DeVault has hacked together a line printer to a Linux TTY interface. The link is worth for the video alone, but the technical discussion is quite interesting as well.
Now this site implements a dark mode, if that's what your system preferences prefer and if your browser supports it.
As an occasional user of both languages, and one who likes them at that, Go is the new Ruby reflects my own opinions as well.
Related to the last post, JONESFORTH is a literate assembly implementation of Forth.
Fennel is a Lisp that compiles down to Lua with nearly zero overhead. It's pretty neat and something that I want to play around with someday.
80x25: a story about a default that many terminal users must have wondered about.
Writing a sort-of ray tracer for a class assignment. Right now it's extremely unoptimized (and also written in Java) and actually doesn't work, but it's a lot of fun trying to figure out all the maths behind it.
While checking my server logs, noticed that seemingly someone sat down on their F5 key.
My server gets scanner traffic often, but usually not with the rate of exactly 100 requests within one second, and then never again.
Saw Parasite. While I'm no expert in film, my immediate thought after leaving the theatre was that it's “bloody good.” So it's probably worth a watch.
I've made a new post on my longer-form blog. It was partially inspired by the creation of this particular system and the thoughts it put me through afterwards.
I hope it is an enjoyable read at least in the slightest.
I suppose it might be better for me to move my link sharing to a medium such as this so I can at least hopefully provide some commentary on the content, à la Plurrrr or Trivium, but somewhat more.
This platform itself has room for growth, such as implementing fancy quotes and proper archiving, neither of which is present now. But it's a start, and perhaps the start is all that's needed.
The design is basically borrowed piecemeal from Standard Definition Notes. It's a tasteful minimalism I find quite appealing.
Apparently I can't stop building places where I can potentially express myself, then keep abandoning those places because I apparently don't have anything to express.
Well never mind that, this is a new place for my, shall we say, short-form expression.