RSS Amplifier

Blog

Herman Schaaf

Mostly software, books and lists of three things

hermanschaaf.comRSS feed ↗25 posts

Latest posts

Sky Lobby

Sky Lobby is a game where you design elevator routes through a busy skyscraper. Place stops, build sky lobbies, and keep people moving as each tower becomes more crowded, more complex, and less forgiving. If you like games like Mini Metro or Mini Motorways, you should like this as well. I'm proud of releasing my first game and think it turned out quite well. If you want to show support and…

What we lost when we stopped programming

Today I want to share something quite personal, and more emotional than I would typically post on this blog. I have been living in a mild state of malaise, and for me, it took deep self-reflection to realize what the root cause was. Some time in the last year, slowly but surely, the world lost something important to me: the art of programming. I started programming when I was about 11 years old.…

My Mental Model for “Is It Worth Automating?” Has Changed

So, to set the backdrop: It's May 2026, and we're all talking about AI, all the time. Well, some of us, anyway. And there was an inflection point in the abilities of coding agents around January 2026, to the point where they are now good enough to be trusted with writing a lot of code. This could be good or bad, depending on your view, and maybe you shouldn't trust AI with your…

A Free Chinese Dictionary, and Why I Built One

A few weeks ago I launched the Moya Chinese iOS app , the spaced-repetition Chinese flashcards app that, eleven years after my first attempt, finally seems to be working for me. I'm on a 50-day streak, and I can barely believe it! Since the initial launch, I've released several more versions with lots of improvements, including listening and character writing modes and an integrated…

Moya Chinese

Today, I'm super happy to launch my new iOS app for learning Chinese , 11 years in the making. But before I say more, let me tell you the story of how I got here. As an English-speaker, Mandarin has a steep learning curve, with its reliance on tones and thousands of characters. My Mandarin-learning journey started 17 years ago, and it was slow-going initially. But as time went on, and I got…

New Game: Picnic on the Moon

I've added a new game to the site: Picnic on the Moon . 🚀 It's a daily puzzle game where you need to figure out the hidden connection between the items that a robot is bringing on a picnic. Try to solve it in as few guesses as possible, and check back every day for a new puzzle! This is part of a new section of the site called " Fun & Games ". The other section there, also added this…

Should Makers Still Care About Code Quality?

For a long time now, it's been possible to divide the software world into two camps: those who see code as a craft, and those who see code as a means to an end. For the purposes of this post, let's call them Coders and Makers . Coders vs Makers At the one extreme, Coders believe that code should be clean, as described in books like Robert C. Martin's (a.k.a. Uncle Bob's) Clean…

Cryptic Crosswords: What They Are and How to Solve Them

I still remember the first time I tried doing a cryptic crossword. The clues seemed completely impenetrable. Duck as light motorcycle loses one wheel? (6) Resentful air spoiled farewell observances (7,5) Highest standards of ladies' dancing (6) What? 😂 Accepting defeat without completing even a single answer, I decided to look up the answers * . Maybe I'm just stupid? Duck as light…

Solving Every NYT Spelling Bee Puzzle, Now and Forever

.hint { color: blue; text-decoration: underline; cursor: help; } .puzzle { background: #f0f0f0; padding: 1em; text-align: center; margin-bottom: 1em; } The New York Times Spelling Bee is a fun little puzzle game that asks you, given seven letters, to find as many words with those letters as you can. Example of a past New York Times Spelling Bee game There are a few restrictions: the letter in the…

3 Books for New Engineering Leaders

It's almost the end of 2024, making it a good time to reflect on the past year. The biggest change, for me, was taking on a new role as director of engineering at CloudQuery . Coming from a staff software engineering role, then team lead, and now organizational lead, I suspected it would be a mistake to treat this new role as just another day as a software engineer. The skills I had built up…

Moving my Blog from Hugo to Zola

After a brief 6 year hiatus, I felt it was time I started posting to my blog again. Six years is a long time in software, so when I ran hugo serve with the latest version of Hugo, all I got was a blank page. No errors, no logs, just a blank page. Hmm. Hugo, in case you don't know, is now a very popular static site generator, written in Go. But back when I started using it, it was a relatively…

3 Rules for Choosing Nonfiction Books

I love reading nonfiction. But, as I am sure you can relate, I only have limited time. Even if we were able to make enough time to read one book a week on average—certainly not the case for me right now—we would still only be able to read around 3,000 books in our entire adult lives. At my current pace, the real number will likely end up being far lower. With this in mind, I want to spend my time…

Efficient Bit Manipulation in Go 1.9

Go 1.9, released in August 2017, introduced the maths/bits package. This package provides optimized functions for bit counting and manipulation of unsigned integers. These are useful in low-level environments where the individual bits stored in an integer are of importance. Let's take a look at some of the functions. First up, Len returns the minimum number of bits required to represent…

Diary of Building an iOS App with React Native

When news broke that React Native was open sourced on Friday, I felt elated. This was the moment I had been waiting for. Ever since the React.js conference videos introduced React Native in late January, I couldn't wait to get my hands on it. If you don't know React Native, it's a new open source framework by Facebook that allows you to write iOS (and, eventually, Android) apps…

Excellent Open Source Go Projects

Something I often hear new Go developers say is that they are looking for some good projects to study, learn from and contribute to. Normally I suggest reading the Go source: it's easy to read, you can pick a part you are interested in, and is probably bound to be the best example of idiomatic Go. But this past weekend presented itself with an opportunity to find more open source Go projects…

Solving Regex Crosswords using Go

I first discovered regular expression crosswords two weeks ago, when RegexCrossword.com appeared on the Hacker News front page . I thoroughly enjoyed the nerdy 30 minutes I spent doing the puzzles, but soon enough my natural inclination towards making computers do my hard work got the better of me: I wanted to solve this with code. This morning I had some free time and decided to give it a shot.…

Running the Go Race Detector with -cover

There are two test options that make testing in Go especially powerful: one is -cover , which generates test coverage reports, and the other is -race , which warns of possible race conditions in your code. If you haven't used them yet, you should. They are very useful tools, and both are covered well (so to speak) by official blog posts: The cover story and Introducing the Race Detector . A…

Efficient String Concatenation in Go

In this article I investigate the computational performance of various string concatenation methods in the Go programming language. To evaluate the options, I prepared some typical Go benchmarks using the Go testing package. A benchmark looks something like this: func BenchmarkBufferString(b *testing.B, numConcat int) { var ns string for i := 0; i < b.N; i++ { next := nextString() buffer :=…

Why is Golang popular in China?

Earlier this week I wrote a post titled The Popularity of Go . The post itself turned out to be quite popular, and I received a lot of great feedback from the Go community (thanks!). One thing I brought up in the post, and that a lot of folks commented on, was the apparent popularity of Go in China according to Google Trends. The graph above shows the searches for "golang" by country on Google…

The Popularity of Go

When you look at the Google Trends graph above, it would seem like the Go programming language, also known as Golang, is on its way to big things. But let&#x27;s not get ahead of ourselves, Go fans. Let&#x27;s first have a cup of java to put things into perspective: Golang&#x27;s popularity as a search term might be growing faster than bamboo in springtime, but it&#x27;s still dwarfed by the…

Rugby

Rugby is a sport close to my heart. I have always enjoyed watching, playing and discussing this fast-paced game of grit, strategy and strength. I am, however, also an avid fan of computer science, and my upper body strength is not quite what it used to be. I believe that no topic, no matter how interesting, can not be made even more interesting through the use of math, science and algorithms,…

Integer Square Root Implementation

Problem Find the square root of a given number rounded down to the nearest integer, without using the sqrt function. For example, squareRoot of 9 should return 3, and squareRoot of 17 should return 4. Solution Let us consider what it means for a number x to be the square root of a number s . If x is the square root of s , x^2 is equal to s . Therefore, stated differently, the problem is to, given…

Minimum Palindrome Partitions

Problem Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = “aab”, return 1 since the palindrome partitioning [“aa”,“b”] could be produced using 1 cut. Analysis The first thing we need to do is write a function that is able to determine when a string is a palindrome. A…

I Rewrote my Blog in Go

Wow, this hit Hacker News front page ! Thanks for all the encouraging feedback; I added some thoughts and clarifications to the bottom of the post for those who asked. The short version The full story As part of my recent interest in learning Golang, I decided it would be a good idea to rewrite the IronZebra blog that, funnily enough, was itself the result of my venture to get acquainted with…

Lessons Learnt from Startup Weekend

This past weekend, I attended the Startup Weekend event in Hsinchu, Taiwan. It was a great event, well-organized and a lot of fun. The premise of Startup Weekend is simple: On the Friday night, anyone can pitch their idea in 60 seconds. The participants then vote on their favorite ideas, of which 10 are chosen, and everyone then divides themselves into groups for these ideas. Then you have the…

Herman Schaaf · RSS Amplifier