Nikita Prokopov
tonsky.me · Personal blog · on HN since 2014
Nikita Prokopov, a Clojure developer and creator of the Fira Code font, writes about software quality, UI design, and web development.
What HN saysHN recommends it as a favorite blog, praises his Fira Code font, and values his coherent vision for front-end programming and his UI critiques.
273HN people shared it
139linked it in comments
200stories submitted
17Kstory points
4 months agolast shared
2014people per year2026
Most-shared posts
- 1Time to Upgrade Your Monitor27 people · 1.3K points · first shared 2020 · 1.0K comments on HN
- 2Software Disenchantment (2018)25 people · 1.5K points · first shared 2018 · 488 comments on HN
- 3The Web After Tomorrow (2015)11 people · 83 points · first shared 2015 · 12 comments on HN
- 4It's hard to justify Tahoe icons11 people · 2 points · first shared 2026 · discussion on HN
- 5Hardest problem in computer science: centering things10 people · 1.4K points · first shared 2024 · 455 comments on HN
- 6Homepage10 people · first shared 2015
- 7Good times create weak men9 people · 136 points · first shared 2019 · 40 comments on HN
- 8SwiftUI Defaults Considered Harmful8 people · 209 points · first shared 2020 · 132 comments on HN
- 9The Absolute Minimum Every Software Developer Must Know About Unicode in 20238 people · 6 points · first shared 2023 · 2 comments on HN
- 10Local First, Forever7 people · 701 points · first shared 2024 · 280 comments on HN
- 11Emoji Under the Hood7 people · 434 points · first shared 2021 · 89 comments on HN
- 12Unofficial Guide to Datomic Internals (2014)7 people · 164 points · first shared 2014 · 51 comments on HN
- 13Reinventing the Git Interface (2014)7 people · 127 points · first shared 2014 · 78 comments on HN
- 14A Case for ClojureScript 2.07 people · 12 points · first shared 2023 · 2 comments on HN
- 15Computers as I used to love them6 people · 998 points · first shared 2020 · 257 comments on HN
What HN people wrote when they linked it
ivanech · 2020-02-08
This is a true solo developer:
http://pketh.org/archives/
It looks like this thread is turning into general blog recommendations. I like these, and they haven't been listed:
https://macwright.org/
https://tonsky.me/
https://nadiaeghbal.com/posts/
0xferruccio · 2018-12-19
The blue background is a big rip off from one of my favourite blogs: http://tonsky.me/
vdaniuk · 2015-12-19
I have been using Fira Code font with Atom for some time and I am absolutely in love with the aesthetics. All credit and praise goes to http://tonsky.me/
straws · 2015-06-29
Nikita Prokopov has presented a pretty cohesive vision for front-end programming in the cljs community. Even if you don't agree with all of his opinions, he's one of the only people assembling a big picture about how to write apps in this way. It's worth reading his blog:
http://tonsky.me/
An emphasis on low-level tooling and not enough discussion around high-level architecture/examples has hurt the react+cljs combo adoption from my point of view. It's the nature of Lisp to come up with your own abstractions around application architecture, but the community would be wise to talk more about solving common web patterns and how to cleanly break away from those patterns when necessary.
dillondoyle · 2026-07-01
The abandonment of their own guidelines is sad. Great post below visually outlines how they've totally funked macos drop downs.
Too many icons you can't focus, inconsistent color, icons are unclear, repeated, or have 10 versions of an icon to 'add new folder' or other actions across their own apps.
at least iOS has great features. Surfacing them though.. I regularly learn new ones from tiktok. For instance i just learned about the motion sickness dots.
https://tonsky.me/blog/tahoe-icons/
whicks · 2026-06-11
For those that haven’t seen this very well done write up about Tahoe’s use of icons, I would definitely recommend it: https://tonsky.me/blog/tahoe-icons/
seidoger · 2026-03-22
Yeah, I was wondering (I haven't updated, patiently waiting for the next major). But here's a great piece about them: https://tonsky.me/blog/tahoe-icons/
jmusall · 2026-03-15
The fact is that there were so many character sets in use before Unicode because all these things were needed or at least wanted by a lot of people. Here's a great blog post by Nikita Prokopov about it: https://tonsky.me/blog/unicode/
Tepix · 2026-01-05
Excellent article. What really got my respect was the fact that his videos listed at https://tonsky.me/talks/ are not hosted on YouTube.
layer8 · 2026-01-05
It’s best when only some of the items in a menu (like maybe a third of them) have icons, preferably the most important commands. This gives the menus a visual structure and can also help in better recognizing groups of related items.
The classic Windows menu from the article is a good example: https://tonsky.me/blog/tahoe-icons/[email protected]?t=1767611340
gonational · 2026-01-05
Another great one from Tonsky:
https://tonsky.me/blog/disenchantment/
yayitswei · 2026-01-05
Love Tonsky's articles. My favorite is about centering things: https://tonsky.me/blog/centering/
He has a knack for putting words to the vague frustrations I feel but can't quite articulate. How does he find so many perfect examples that nail exactly what's wrong?
rs186 · 2025-08-06
When I saw the yellow background, I knew this is the website where I read the Unicode article [1]. Sure it is. With great pain I finished it.
I mean, just the fact that the background is yellow is a terrible UX decision. Not to mention that ridiculous "dark mode". No, it's not funny. It's stupid and distracting.
[1] https://tonsky.me/blog/unicode/
karteum · 2025-07-06
> Usually, what you want is either the byte or the grapheme cluster.
Exactly ! That's what I understood after reading this great post https://tonsky.me/blog/unicode/
"Even in the widest encoding, UTF-32, [some grapheme] will still take three 4-byte units to encode. And it still needs to be treated as a single character. If the analogy helps, we can think of the Unicode itself (without any encodings) as being variable-length."
I tend to think it's the biggest design decision in Unicode (but maybe I just don't fully see the need and use-cases beyond emojis. Of course I read the section saying it's used in actual languages, but the few examples described could have been made with a dedicated 32 bits codepoint...)
kccqzy · 2025-04-23
This might have been a good example fifteen years ago. These days with high-DPI displays you can't perceive a difference between font smoothing being turned on and off. On macOS for example font smoothing adds some faux bold to the fonts, and it's long been recommended to turn it off. See for example the influential article https://tonsky.me/blog/monitors/ which explains that font smoothing used to do subpixel antialiasing, but the whole feature was removed in 2018. It also explains that this checkbox doesn't even control regular grayscale antialiasing, and I'm guessing it's because downscaling a rendered @2x framebuffer down to the physical resolution inherently introduces antialiasing.
exusn · 2025-02-13
It's worse. Windows aggressively alters the shape and overall character of fonts to perform anti-aliasing, making them appear sharper on low-DPI displays.
Linux is a goofy with this too, but still looks better than Windows. macOS handles it best on high-DPI displays, but because subpixel anti-aliasing is no longer used, fonts can be a little blurry on low-DPI displays.
Also, https://tonsky.me/blog/monitors/
troupo · 2024-08-11
On emojis I highly recommend "Emoji under the hood" https://tonsky.me/blog/emoji/
emoII · 2023-10-29
The introduction of this is a great read. I liked especially the tautology about abstraction and calling more code; that building upon higher levels of abstraction means ever-smaller missteps are required by the developer to make software significantly less performant. Made me think of the subject discussed in [1]
[1] https://tonsky.me/blog/disenchantment/
helmholtz · 2023-05-13
First, the font that we are used to has an outsize impact on what we prefer. So, if neither of these 'sit right', don't worry.
Digital font designers have to start out by choosing something called the em-height. This is a nonsense holdover from print days, and is especially infuriating because no one agrees on a standard em-height. Therefore, fonts look different despite being set to the same size. Here is a great rant on this: [1]
Lucida Console has a large x-height, which is generally considered helpful in small-size legibility. But it has that in common with both Consolas and Jetbrains Mono.
For me, I can use Consolas, Lucida Console and Jetbrains Mono all down to Size 10 in Git Bash on a shitty 13" 1080p laptop screen. Hence my comment that the ClearType hinting is glorious.
[1]: https://tonsky.me/blog/font-size/
whoibrar · 2022-05-02
i feel it's a great example of software that doesn't get in your way.
I would've love to write about how awesome it is but came across this wonderful essay regarding the same titled _"Computers as I used to love them"_ [0]. Highly checking it out.
[0] : https://tonsky.me/blog/syncthing/
reissbaker · 2021-09-12
Fonts look much better on 4k screens with 2x scaling than on 1440p: https://tonsky.me/blog/monitors/
If you stare at text all day, 4k is pretty nice. The difference between 4k and 1440p is easily noticeable to me even on very small displays, like 15" laptops. I have a 1440p gaming laptop, and the less-sharp text is slightly annoying; I otherwise love it as a laptop, though, so I live with 1440p since it's a fairly small screen anyway. On larger displays like an external monitor I definitely wouldn't use 1440p.
prajwalshetty · 2021-05-27
I personally keep on eye on new things here - https://tonsky.me
asicsp · 2021-05-14
From https://tonsky.me/blog/syncthing/:
>It’s amazing how great computer products can be when they don’t need to deal with corporate bullshit, don’t have to promote a brand or to sell its users.
herbstein · 2020-12-20
Tonsky, the creator of the popular 'Fira Code' monospace font, has a great blog post about monitor DPI and font rendering. A big section is on just how terrible font rendering and display scaling on a modern Mac really is.
https://tonsky.me/blog/monitors/
gpspake · 2020-09-25
As soon as I clicked on this, I recognized the author's signature yellow background and font from their previous post about buying a new monitor (which I also found at the top of HN) https://tonsky.me/blog/monitors/
I enjoyed both posts. Great titles, well written, serious but witty. Props to the author; I'll be subscribing for more.
dmitriid · 2020-09-25
I will gather a lot of downvotes, but still: I find Swift a very haphazardly designed language with very little foresight and forethought. This is further compounded by its standard libraries which are directly lifted from MacOS with all of their idiosyncrasies and huge incompatible changes from version to version.
For what it's worth, [1] [2] [3] [4]
[1] A type system that can't cope with SwiftUI: https://tonsky.me/blog/swiftui/
[2] More syntax to shake a stick at https://twitter.com/dmitriid/status/1276482336486576133
[3] Even more syntax weirdness https://twitter.com/bradfitz/status/1285302091544576000
[4] Standard library between versions: https://twitter.com/dmitriid/status/1201441652507844608 File manipulation functions on String, great design.
MaxBarraclough · 2020-06-12
You might enjoy this 2016 article by Chuck Moore (the Forth guy). His position is pretty extreme, as he dismisses static typing as needless complexity, thinks even C is too elaborate, and he doesn't touch on web technologies, but still worth a read. [0]
Also, mandatory link to the Software Disenchantment article. [1]
[0] https://web.archive.org/web/20160311002141/http://colorforth.com/1perc…
[1] https://tonsky.me/blog/disenchantment/
rgoulter · 2020-06-06
Yes, the increase in accessibility seems much nicer now than waves hand before GitHub and Arch Linux Wiki.
But I found the examples given in this blogpost striking:
https://tonsky.me/blog/good-times-weak-men/
One of the most prominent tech companies (Apple) released a new music program to replace their older music program. The replacement program included several easy-to-notice UX bugs.
The bugs surely aren't from a lack of attention, expertise, or resources. And while obviously it's not easy to write a program like that, I think the best explanation would sound something like "towering pile of shit".
liminal · 2020-05-28
Some time ago there was an article posted with a proposal for redesigning the Github UI [1]. I thought it was mostly great, but it got roundly panned on HN. In general my takeaway was that people don't like change, even when it benefits them. Was unfortunate, especially from a crowd that's supposedly all about technological improvement.
[1] https://tonsky.me/blog/github-redesign/
tomaskafka · 2020-02-20
> knowing that I can't accidentally bungle up the history. I'm always nervous about that when I use git
I just read a great insight yesterday:
> Understanding there’s no harm to be done eases things a lot. It encourages experimenting, which is one of the most effective ways to learn new things and to get familiar with them. Imagine this: you start rebase, mess things up, hit Ctrl+Z several times and try again. Good news is, we can implement Undo/Redo given just ordinary Git implementation. Git already stores all the possible states our repo was in. All Undo/Redo will have to do is to shuffle some branch pointers here and there.
https://tonsky.me/blog/reinventing-git-interface/