Latest posts
- Modern UI is clean and invisible? Ha, I wish!Feb 16, 2026
This is an excellent video about modern UI/UX: "The Hidden Cost of 'Clean' Design." I highly recommend watching it and checking out Ilia's other work. I agree with nearly everything in the video, including this standout quote: If you want to understand a generation, don't listen to what its witnesses say. Look at what it creates. Ilia compares Apple Music and Winamp. One is modern and "clean", th
- Alarm is sacred, must not fail, but iOS 26 is wickedNov 17, 2025
There are two smartphone features that I consider sacred and believe they must never fail: phone calling and the alarm. There is an unspoken contract between users and vendors. Sure, innovate away, change the UX at will, whatever. But you can't fail at making phone calls and sounding the alarm. I missed the alarm for the first time in many years last weekend. I have an iPhone 13 Pro, with the lat
- Examples are the best documentationSep 27, 2025
When I'm searching for docs, 95% of the time a single example would suffice. Yet, 95% of the time I can't find one in any official source. It seems that by default formal technical documentation is targeted towards someone who's deeply immersed in the ecosystem. But many developers have to juggle a lot of "worlds" in their heads daily. When jumping between projects, languages and frameworks, it ta
- Benjamin Button Reviews macOSSep 17, 2025
Apple's first desktop operating system was Tahoe. Like any first version, it had a lot of issues. Users and critics flooded the web with negative reviews. While mostly stable under the hood, the outer shell — the visual user interface — was jarringly bad. Without much experience in desktop UX, Apple's first OS looked like a Fisher-Price toy: heavily rounded corners, mismatched colors, inconsistent
- AI is not another abstraction because god plays diceSep 08, 2025
Some folks have gone all-in on AI-assisted coding. I've seen some tweets (not sure if sarcastic or real, to be honest) expressing disgust about the prospects of ever writing code by hand anymore. The common argument I hear is that this is just another step in the long history of programming breakthroughs. We moved from machine code to assembly, from assembly to C, and from C to high-level language
- Finland is a high-context society that loves defaultsAug 14, 2025
In anthropology there is a notion of high-context and low-context cultures. A high-context culture is a culture or society that communicates dominantly through the use of contextual elements, such as specific forms of body language, the status of an individual, and the tone of voice employed during speech. Rules are not directly or explicitly written or stated. By contrast, a low-context culture e
- AI is impressive because we’ve failed at semantic web and personal computingAug 08, 2025
Unless someone wrote an article about that exact thing, a plain full-text search engine cannot answer a question like this: What animal is featured on a flag of a country where the first small British colony was established in the same year that Sweden's King Gustav IV Adolf declared war on France? But ChatGPT got the correct answer in a few seconds. Flag of Dominica features the Sisserou parrot,
- Thank you Google for breaking my YouTube addictionMay 17, 2025
Over the past few years, Google has done a surprisingly great job of making YouTube less interesting and engaging — and in turn, less addictive. Maybe they've got some ethical guidelines in the top management now? If so, well done, Google. Back in the day, when YouTube was mostly about your subscriptions, it was mildly addictive. You’d watch a C++ talk, and the sidebar would actually show you othe
- But what if I really want a faster horse?Apr 04, 2025
People in tech business circles love this quote by Henry Ford: If I had asked people what they wanted, they would have said faster horses. The idea is to think outside the box and create entirely new markets instead of just new products in existing ones. Like Apple creating the iPhone (sure, smartphones existed before—but cars also existed before the Ford Model T). But sometimes, I really want a f
- How to play Half Life 1 and 2 on M-chip MacsApr 01, 2025
Half Life and Half Life 2 are my favorite games. I've played them through multiple times. I played Half Life 1 for the first time in 1999 or 2000, can't remember. My computer at the time could barely run it. Nowadays, it's a struggle to play older PC games on a Mac. There are two fundamental issues: A while ago macOS had dropped support for 32-bit applications. Recently, Apple hardware migrated f
- Knight Ride: a game about rogue (chess) knightMar 29, 2025
I made a little puzzle game called Knight Ride. You can play it here: knightride.rakhim.org. A few months ago, I started learning game development with Godot and began building a chess-inspired game. Game development is new and unintuitive to me, so for some quick 'build-n-ship' dopamine, I took one mechanic from that project and turned it into a simple browser game. The idea is simple: you hav
- Don't make it "like Google"Mar 26, 2025
Google is usually criticized for its relentless collection of personal data. It's an important and widely discussed topic, but I’m surprised there isn’t another common criticism: its responsibility for UI & UX design and its consequences. Any large company that creates products, whether software or physical, is responsible for how its design choices shape the broader perception of design itself. G
- Why I prefer to git stage outside of the editor or the terminalFeb 23, 2025
Sublime Merge is a fantastic Git client. I’ve been using it for years, even after switching from Sublime Text to VS Code. VS Code has excellent built-in Git support, but I still prefer a dedicated app for staging files. Even when I used Neovim or Emacs (which has Magit, arguably the best Git client), I stuck with a separate tool for this step. Why? Staging files is the last significant step in pre
- They made computers behave like annoying salesmenJan 15, 2025
Computers are precise machines. You can give a computer a precise command using an inhumane language, and it should perfome the command. It's not a human, and there is no point of treating it as one. The goal of humanizing user experience isn't to create an illusion of human interaction - it's to make these mechanical commands more accessible while preserving their precise, deterministic nature.
- YouTube picks, December 2024Dec 31, 2024
I've added a new feature to Exotext which converts YouTube links into embeds (when a link is on its own line and surrounded by newlines). To test things out, here are some cool YouTube videos I've watched this month.
- How to make forbidden changes to SQLite tablesDec 24, 2024
Sometimes you need to make a change to an SQLite table which is not possible with a simple ALTER command. For example, today I realized that email_verifications table in my DB references users with a foreign key, but does not have ON DELETE CASCADE (I simply forgot to put it in). This makes it impossible to delete a record from users table if there are corresponding records in email_verifications.
- I wish your bespoke React-Tailwind-etc static site generator had RSSDec 23, 2024
I discover and curate dozens of blogs every day while working on Minifeed. The blogging is far from dead, there are SO many blogs out there! Sadly, lots of blogs don't have RSS. What's surprising is that the "techiest" of blogs usually don't have RSS. Quite often, I come across a beautiful blog, handcrafter with love by a passionate programmer, usually built with some modern frontend stack like R
- How to build and publish multi-platform Rust binaries via Github actionsDec 20, 2024
While developing Textpod (a simple note-taking app written in Rust), I needed to automate building and publishing on Github. This article (or the corresponding set of YAML-files) describes the setup which performs the following: Build binaries for Windows and Linux Build binaries for x86 Macs (Intel) and ARM Macs (arm64, M-chip) Add the files to the latest Github release, along with checksums Publ
- How do you do, fellow web developers? A growing disconnect.Dec 19, 2024
I had a "woah" moment once when one programmer got genuinely baffled about the fact that a website somehow "erases" the history of requests from the Network tab of Chrome DevTools. He was wondering what magic method was used to hide the communication. He hadn't realized the app was not a single-page JS application (SPA), and he actually wasn't aware there is another way to make web apps. The idea
- Jupyter notebooks as e2e testsDec 16, 2024
Lots of scientific Python libraries are often used within Jupyter notebooks. At work, we develop and maintain plenty of such libraries for quantum computing, and some more higher-level ones include extensive user guides in form of Jupyter notebooks. Recently, I've been involved in building a new library, and it ended up containing a half dozen notebooks, covering everything from a quick start gui
- Lesser-known science fiction moviesDec 15, 2024
I love science fiction in all forms, and I can't resist watching almost any sci-fi movie. So, I watch a lot of them. It's a bit annoying how "sci-fi and fantasy" became the standard pairing. In my eyes, these genres are exactly opposite. It's like grouping movies about horses with movies about cars. Anyway, here are some lesser-known science fiction movies that I recommend. The Man From Earth Can
- Your minimalistic app is great! Can you add these 38 features, though?Nov 16, 2024
A few weeks ago I've released an extremely simple note-taking app called Textpod. I just wanted a "one big-ass text file" kind of thing, but with file attachments and link archiving. The whole idea is that it's basically a text file with minor magic sprikled on top. The reception has been great! Seems like many people were looking for something similar. I also received lots of feedback and feature
- Should I use web fonts?Nov 01, 2024
I'm not sure how I feel about webfonts. For now, I'm using IBM Plex serif, which looks pretty, sure. It loads pretty fast thanks to Cloudflare Fonts, which rewrites Google Fonts to be delivered from my own origin. But is it really necessary? Also, reading longer texts with a serif font is not everyone's cup of tea. A standard sans-serif font stack looks kinda ugly on Windows. Verdana still feels g
- In search for a good Markdown editor for my blogging platformOct 31, 2024
I don't envy beginners trying to get into web development today. I haven't been doing any frontend web development for more than a decade. Today I was trying to do a simple thing: get a JS markdown editor to work in the browser. Found this beautiful looking library called Tiptap. This example seems great! Let's try to integrate it. What I naively expected: <script src="some_cdn_url.js"> <div id="e
- Here we goOct 31, 2024
I just wanted to write again. My old blog at rakhim.org is built with Hugo, and after installing a new version of Hugo things broke. After 25 minutes of attempts to fix it I though "yeah, that's it", and decided (as you do) to just build a simple blogging platform. Static site generators are great. Hugo though has too many features I never use. But my overall issue with static site generators is U
- The mandatory smartphoneAug 18, 2020
I hate to use a smartphone. Being able to view maps, look up info on the go and listen to music is great, but I always felt that smartphones are like plastic utensils. Very useful on the go, but temporary in nature. A compromise. Using a smartphone for more than a few minutes in a row feels wrong. Wrong because either I'm trying to do something I should've done before or should do later, at my nor
- It's okay to walk uphillJul 23, 2020
At first I cycled up the hill with all my force trying to impress the world. My athletic sweat was the only thing that showed the effort. My face was trying to do the opposite, to convince the unseen viewer that the ascent is effortless, easy even. Then I started noticing it. Who is the viewer? Am I in a movie? Sometimes, there aren’t even people around. This is madness. I can convince myself that
- Programming vs. Coding vs. Software EngineeringNov 27, 2019
Programming, coding, and software engineering are often used interchangeably. Here is how I usually think of them. Programming Programming is solving explicit problems in a verifiable manner. It is similar to mathematical proofs. "Find an element in a sorted sequence" is a problem. A binary search algorithm is a solution. You can prove it works, and even analyze whether it's optimal in terms of ti
- Products aren't for people yetFeb 04, 2017
Remember how your parents would try to use Windows 95 or something like Norton Commander. They’d copy an app shortcut to a floppy disk and be amazed how much stuff they were able to put inside. All the games, and lots of space left! And you’d think they don’t understand anything at all, they are just clicking pretty much randomly, hoping this magic machine would at some point understand them and d
- Producing a video lessonJan 11, 2017
A few years ago, I've made a bunch of videos on YouTube about foundational topics in programming. There are lots of hand-drawn cartoons and some rudimentary animation. People keep asking how I made those, so here we go. Inspiration Structure and Interpretation of Computer Programs (SICP). If you’re only going to read one book on programming, it should be this one. Interactive articles and talks b
- Please, recommend me a book about XNov 24, 2016
In the past I had spent hours asking people to recommend me some books, in both real life and on the internet. I was starting to learn programming, so obviously I wanted to find The Bible, the best book for each of the aspects of coding. What is the best book about algorithms? Can you please recommend a book about Java? I’m looking for a good book that’ll teach me Django. Any suggestions? When onl
- Dreaming of obsessionDec 23, 2014
When I was a kid, everyone around me was obsessed with something. For some it was football, for others cars, video games or some martial art like karate. And I was jealous. I couldn’t get obsessed, I was trying to, but couldn’t. I didn’t have doubts that I’ll become obsessed with video games as soon as I get a gaming console. My parents got me a NES (actually, a Chinese NES clone called “Dendy” th