Serge Zaitsev

zserge.com · Personal blog · on HN since 2012

Serge Zaitsev writes about small toy software projects, such as tiny languages, embedded tools, and C experiments.

What HN saysThe author describes it as toy projects with a minimalist feel; commenters link it for posts on minimal music in C, Brainfuck, and a better-C benchmark.
81HN people shared it
23linked it in comments
85stories submitted
4.4Kstory points
3 months agolast shared
2012people per year2026

Most-shared posts

  1. 1
    The Story Behind Fenster
    8 people · 74 points · first shared 2023 · 10 comments on HN
  2. 2
  3. 3
    A “Better C” Benchmark
    5 people · 207 points · first shared 2021 · 185 comments on HN
  4. 4
    Partcl – a tiny command language
    5 people · 134 points · first shared 2016 · 19 comments on HN
  5. 5
    How Do One-Time Passwords Work?
    5 people · 10 points · first shared 2022 · 1 comments on HN
  6. 6
    Post-Apocalyptic Programming
    4 people · 195 points · first shared 2022 · 162 comments on HN
  7. 7
    KVM host in a few lines of code
    4 people · 160 points · first shared 2020 · 19 comments on HN
  8. 8
    Scalable, Resilient Brainfuck
    3 people · 238 points · first shared 2021 · 44 comments on HN
  9. 9
    Tiny Great Languages: Forth/Mouse
    3 people · 20 points · first shared 2024 · 1 comments on HN
  10. 10
  11. 11
    Cucu: A compiler you can understand (1/3)
    3 people · 8 points · first shared 2019 · discussion on HN
  12. 12
    Minimal Code Editor in JavaScript (2020)
    3 people · 3 points · first shared 2021 · discussion on HN
  13. 13
    What Is Git Made Of?
    3 people · 3 points · first shared 2023 · discussion on HN
  14. 14
    Let's make the worst React ever
    3 people · 2 points · first shared 2020 · discussion on HN
  15. 15
    Let's make the worst VueJS ever
    3 people · 1 points · first shared 2021 · discussion on HN

What HN people wrote when they linked it

zserge · 2026-01-14
https://zserge.com - little toy projects and stories on various software topics with minimalist aftertaste, not to be ever used in production or taken seriously
er4hn · 2022-01-12
Okay, but is HFaaS[1] on the roadmap? I'd ask if there is a PoC of it running Doom, but with all this love Chex Quest might be a more wholesome choice. [1] - https://zserge.com/posts/bfaas/
qiqitori · 2021-05-25
Only related if you just read the title and ignore the rest, but I loved this article: https://zserge.com/posts/etude-in-c/ Covered on HN late last year https://news.ycombinator.com/item?id=24940624 ("How to create minimal music with code in any programming language") Also related to bytebeats: https://soundcloud.com/robertskmiles/bitshift-variations-in-c-minor
kristoff_it · 2021-03-24
Copied from my reply on Lobsters (https://zserge.com/posts/better-c-benchmark/) --- For what it's worth, we do understand that the lack of stdlib documentation is a problem. Before I expand on that, here's the current "workarounds" to be immediately productive: https://ziglearn.org is a structured introduction to Zig that covers an introduction to Zig that is very friendly to newcomers. Chapter 2 in particular helps solving common problems and showcases some parts of the standard library while doing so. On the Zig SHOWTIME YouTube channel there are a few videos that can help. One video in particular is about how to approach the Zig standard library today [1], while we wait for better docs. Asking for help in a Zig community [2] is so easy it's like cheating, and it's also a door to knowing when new resources pop up. So, what's up with the stdlib docs? We have an experimental build [3] and, as the name implies, they're incomplete and not considered good. Why are we not working on them? Because the docs are a JS interface to a bunch of metadata generated by the compiler during the build phase. We are currently transitioning to a self-hosted implementation [4] of the compiler and, until it's complete enough, we are stuck with the incomplete and buggy metadata that the current C++ compiler generates. I personally plan to get involved in the docs effort once the situation gets unblocked. > I wish Zig had a better documentation to gain popularity before it becomes too niche…
pjungwir · 2016-07-29
I agree with the recommendation here to read Expert C Programming: Deep C Secrets by Peter Van der Linden. As for practice: the challenge in learning new tech is always to find a small-scale project that motivates you to build something. As a mostly-Rails developer like you I've found a couple opportunities to write C by building Postgres extensions. Here are my two: https://github.com/pjungwir/aggs_for_arrays/ https://github.com/pjungwir/inetrange Both of those are used in production systems and had good justification for dropping down to C. Or here is a tiny patch to the Postgres btree_gist extension that I am hoping to get merged: https://commitfest.postgresql.org/10/332/ The JSON support in Postgres is still pretty new. Maybe you could write some worthwhile additions for dealing with json or jsonb data? I would just look at underscore.js for inspiration. Also if you have a collection of personal shell utilities, you could try rewriting them in C. Here is one of mine: https://github.com/pjungwir/range It is for printing a range of numbers like `1, 2, 3`. It is surprising how many features you can add to a tool like that! (It is a bit of a joke, and I have since learned bash gives you `{1..10}`. But something similar could still make a good learning project.) Perhaps you could also write a ruby gem that wraps some C library. For instance I'm fond of the jsmn JSON parser [1]. Maybe a gem built around that could give performance benefits? Or maybe some way to…
nickpsecurity · 2015-08-11
A Scheme Machine [1] with plenty code and hardware I just found: 60 pages The R5RS Scheme specification w/ example code: 50 pages XML 1.0 specification for structure only: 49 pages Sun's efficient, binary XDR: 29 pages Wirth's Oberon Programming Language spec: 21 pages ECMA JSON specification: 14 pages Jsmn - portable, JSON parser [2] in C: 7 pages I'm sure the above illustrates quite well how difficult and complex XML is. Additionally, while students everywhere implement LISP, there's a whole chapter in Beautiful Code where writing a good XML parser is an accomplishment people pay to see. Far from minimal understanding, reading XML's specification is a HOW-TO guide for how non-programmers that haven't seen superior works (eg Scheme, Oberon) try to handle data management. It was horrible, I used s-expressions/XDR instead, and implemented whole thing in a few hundred lines of straight-forward code. Best of all, unlike XML, my code could've run through a tool to prove it free of the types of bugs hackers love to exploit. So, there's my proof that XML is garbage. Essentially everything it does can be done better by using one or more tools with less complexity, more cost-effectiveness, and more straight-forward implementation. Nobody should waste time learning it. If work demands, they should just learn a library that handles the awful details for them and internally use something else. Also, they should avoid any protocol that depends on it: that's just bad design. [1]…
stevekemp · 2026-07-24
https://zserge.com/posts/fenster/ is what I used when I wanted "basic graphics" in a cross-platform way. But of course that's X11 and much simpler.
veqq · 2025-10-10
Of course. You can do it in a single pass/just parse the token stream. There are various implementations like: https://zserge.com/jsmn/
darccio · 2025-08-26
Neato! It's nice to find zserge around. He built upon the idea of my static site generator Zas [0] to create his own zs [1][2] a few years ago. I think he's still using it :) [0]: https://github.com/darccio/zas [1]: https://github.com/zserge/zs [2]: https://zserge.com/posts/new-site-generator2/
vmsp · 2025-08-25
There's an accompanying blog post at https://zserge.com/posts/fenster/ This author has some pretty cool stuff, like a tiny alternative to Firebase https://zserge.com/posts/pennybase/
gabrielsroka · 2024-09-08
For c/c++. From 2023. Posted here a few times before. See also https://zserge.com/posts/fenster/ > Fenster -- a German word for "window". In Latin, it's "fenestra".
userbinator · 2024-04-20
Uses under 1.5 MB of memory at any one time (most of it is used for drawing the window). Unfortunately there is no screenshot and I have no access to a Mac at the moment, but if View.c is where things actually happen, that is a huge amount of memory just for a (resizeable?) window with a little filled rectangle in it. The memory usage of a trivial app like this should be measured in kilobytes. Comparing applications written in the same language across platforms is IMHO a good gauge of their relative efficiency. From what I've seen, Win32 and Linux (Xlib) are pretty close but Mac is clearly very "think different". I'm sure the liberal use of string constants here doesn't help either. Here's a related interesting comparison: https://zserge.com/posts/fenster/
eatonphil · 2023-01-23
I noticed this project also today. From zserge's latest post: https://zserge.com/posts/fenster/. He uses it along with a minimal cross-platform graphics library to get doom running. Really impressive.
xigoi · 2022-07-20
https://zserge.com/posts/ has some good “build your own X” articles, including: * a clone of React.js and Vue.js in <1K bytes minified * a web-based code editor and office suite * a chess engine * a TCL interpreter * a two-step verification client * a simplified C compiler
pwdisswordfish0 · 2021-10-21
The app will have to be reimplemented in a way that doesn't screw up the input. <https://zserge.com/posts/js-editor/>
aidenyb · 2021-09-17
It's significantly different. The article attempts to build a reactivity model and directives handler (two integral parts of Vue), while this is a Virtual DOM, which is a different approach to declaratively representing UI. I think you meant this article: https://zserge.com/posts/worst-react-ever/ In that case, it's pretty different in implementation
john-doe · 2021-09-17
ahefner · 2021-04-26
"KVM host in a few lines of code" (https://zserge.com/posts/kvm/) is a fun article to get started with.
krige · 2021-04-21
Running Doom on anything and in any form imaginable really is an artform but in this case I can't help but be reminded of the recent "Brainfuck as a Service" post ( https://zserge.com/posts/bfaas/ )
htgb · 2017-05-19
Actually, this is similar to what you can do in Java by using lambdas (Retrolambda for pre-Java 8, e.g. Android pre-SDK 24). Excerpt from a blog post [1] about it: mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // do something here } }); can be replaced with mButton.setOnClickListener((View v) -> { // do something here }); which is nice for all callbacks, but especially together with ReactiveX where they are abundant. [1] http://zserge.com/blog/android-lambda.html
mncolinlee · 2014-08-18
Technically speaking, Android doesn't fully support Java 6. It's only a partial implementation of Java, since Java is overweight. The Android team has been adding requested features to the SDK in piecemeal form. With that said, you can already get Java 8 lambdas in Android using the retrolambda project. http://zserge.com/blog/android-lambda.html

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close