Programming Leftovers
-
Jim Nielsen ☛ Two Quick Tips When Building With React Router
I’ve been working with the latest Remix-ification of React Router and there are two things I wish I had known when I started.
So I’m writing them down in case anyone else is about to start a React Router app.
-
James G ☛ Computer Vision Challenge: Book Colours
Challenge: Given the following image, identify all of the colours of the book spines.
-
Leon Mika ☛ Complexity Stays At the Office
So I am glad to say that those days are behind me. Sure, I’ll learn new tech like Temporal if I need to, but I don’t go out looking for these anymore. If I want to build something, it would be radically simple: Go, Sqlite or PostgreSQL, server-side rendered HTML with a hint of JavaScript. I may not achieve the leverage these technologies may offer, but by gosh I’m not going to put up with the complexity baggage that comes with it.
-
Jay Wilson ☛ Webmentions support
Inspired by a few posts (Sebastian’s and Max Böck’s) on the internet, I wanted to add Webmentions to this site. I was previously using giscus to power comments, but I really like the idea of comments (and other things) being generated statically and served like the rest of the site. I get to own my spot on the web with this idea and that’s a big deal to me.
-
Daniel Stenberg ☛ DISPUTED, not REJECTED
I keep insisting that the CVE system is broken and that the database of existing CVEs hosted by MITRE (and imported into lots of other databases) is full of questionable content and plenty of downright lies. A primary explanation for us being in this ugly situation is that it is simply next to impossible to get rid of invalid CVEs.
-
[Repeat] Buttondown ☛ Planning vs Model Checking
These look extremely similar, and in fact they are mathematically the same thing. Any model checker can find a plan that reaches goal P by writing !P as a property to check. Then the "violation" returns a trace that ends with P. That's how you can use TLA+ to solve the diehard puzzle.
Similarly, any planner can be turned into a model checker that by making the goal !P, and then failure to reach that goal means P is a valid property. And in fact that's how the Z3 theorem prover proves properties: to determine if P is true, you check that !P has no satisfying solutions.1 I believe Alloy does the same thing, running as both a "model finder" and a "model checker".
-
Karl Seguin ☛ Being Mindful of Memory Allocations
One consequence of programming without a garbage collector is that you're generally more aware of every memory allocation your program makes. Ideally, this increased awareness results in more prudent memory use. Developers often lament that while hardware has gotten faster, computers feel more sluggish. I don't know how true this is, and if it is true, I don't know how big a part memory allocation plays.
-
Vadim Kravcenko ☛ Falsehoods Junior Developers believe about becoming Senior
Before we start, this essay is not meant to discourage you but to prepare you for the reality ahead — Senior developers are not all-knowing 10x coders who can make unicorns out of thin air. So, let’s go through some of the Falsehoods that Juniors believe about Senior Developers.
-
Shell/Bash/Zsh/Ksh
-
Chris ☛ Useful Uses of cat
I’m currently re-reading one of David Parnas’ classic papers on modularity33 Designing Software for Ease of Extension and Contraction; Parnas; ieee Transactions on Software Engineering; 1979.. Every software engineer should read that stuff – it’s brilliant. For this article we’ll focus on one thing: we all know code changes should be isolated. For example, we should be able to add new functionality by just adding code, and not going in and changing existing code. Parnas phrases this in an interesting way.
-