New
The latest blog posts to take off on Hacker News. 14,540 posts.
Green Lumber Fallacy in Software Engineering
Distinguishing the trees from the forest in software engineering and how not to conduct interviews.
Dealing with APIs, JSON and databases in org-mode
A practical Org-mode workflow for calling APIs, working with JSON responses, and querying the resulting data with databases and executable blocks.
Send text messages for free using Python
Using SMS and MMS gateways we can send text messages to phones from a computer via email. With this strategy we can use a combination of the Python SMTP and email library to send text messages programmatically for free! This not only includes short text messages, but also multimedia messages with pictures, videos, or…
Catching Native Apps
If you imagine a world where the sum of all things you can do with a computer is exactly matched, and locked down for all time with what you can do inside a browser, then the arguments for the web are persuasive. Why write for a specific platform when you can write for all platforms at once and gain the other…
My process for building a feature
I’m maintaining a lot of different projects at the moment. I thought it would be useful to describe the process I use for adding a new feature to one of …
Who Contributed to PostgreSQL Development in 2020 and 2021?
I have done a few previous blog posts on who has contributed to PostgreSQL , but I did not do one last year. A couple people mentioned to me...
In MySQL, use “utf8mb4” instead of “utf8” (2016)
Today’s bug: I tried to store a UTF-8 string in a MariaDB “utf8”-encoded database, and Rails raised a bizarre error:
Amish Hackers (2009)
[Translations: Japanese] The Amish have the undeserved reputation of being luddites, of people who refuse to employ new technology. It’s well known the strictest of them don’t use electricity, or automobiles, but rather farm with manual tools and ride in … Continue reading →
Writing a Game Boy Emulator in OCaml
For the past few months, I have been working on a project called CAMLBOY, a Game Boy emulator that runs in the browser.
Rust in 2022
In previous years, the core team have asked the community to write new years blog posts about Rust in the coming year. They haven't this year, but I wanted to write one anyway. However, it turned out to be harder than expected. Perhaps that's due to Rust being in an
From TypeScript to ReScript
Rewriting the Inhyped.com React frontend in ReScript brought a sound type system and easy JS interop, at the cost of a small community.
The optional chaining operator, “modern” browsers, and my mom
Eric Bailey recently wrote on CSS-Tricks about testing your website on a crappy laptop and it reminded me of this anecdote from my own life. About a month ago…
Dear sir, you have built a compiler
I am afraid to inform you that you have built a compiler. I know you wanted a “simple prototype” that would just add that one feature to your programming model. You said that “SSA is an overkill” and “it’s just way too much infrastructure to maintain for a simple task” and yet, six months later, you have pile of…
PHP in 2022
A blog about modern PHP, the web, and programming in general. Follow my newsletter and YouTube channel as well.
Who wrote this shit?
Trashing legacy software is fun. It creates camaraderie.
State of the Web: Deno
What is Deno, why does it matter, and how is it currently used for server-side JavaScript?
Donald Knuth – The Patron Saint of Yak Shaves (2017)
In 2015, I gave a talk in which I called Donald Knuth the Patron Saint of Yak Shaves . The reason is that Donald Knuth achieved the most perfect and long-running yak shave: TeX.
Practical Shell Patterns I Use
Over the decades I’ve been using the shell, there are thousands of reusable patterns I’ve picked up from looking over others’ shoulders and googling.
Literate programming: Knuth is doing it wrong (2014)
Literate programming advocates this: Order your code for others to read, not for the compiler. Beautifully typeset your code so one can curl up in bed to read it like a novel. Keep documentation in sync with code. What's not to like about this vision? I have two beefs with it: the ends are insufficiently ambitious by…
Hashing is not encryption
Encryption, encoding, and hashing are three related but distinct concepts. It’s important for you to understand all three.
Proposal to add build graph output to GNU Make (2020)
Background In 2015 I worked as a consultant at a large company in Lund. My position was with the build team and one of our responsibilities...
Saving a Third of Our Memory by Re-Ordering Go Struct Fields (2020)
Simply changing the order of some uint variables we managed to drop our memory usage significantly
Why “process substitution” is a late feature in Unix shells
You're probably reading this page because you've attempted to access some part of my blog (Wandering Thoughts) or CSpace , the wiki thing it's part of. Unfortunately you're using a browser version that my anti-crawler precautions consider suspicious, most often because it's too old (most often this applies to versions…
Vim prank: alias vim='vim -y'
Vim easy mode is tough to use for seasoned users!
Fortran is easy to learn
Some may think Fortran is an archaic language, and certainly not one that should be taught, but in any respects modern Fortran is an exceptionally good language to teach programming in. Certainly b…
Paxos
Use two consensus building phases to reach safe consensus even when nodes disconnect