Work in progress: 181,232 of 181,233 sites checked so far, more every week · updated 2 Nov 2026Missing a blog? Tell us

Top all-time · #4119

D

David Röthlisberger

Personal blog · david.rothlis.net · on HN as drothlisprogramming

David Röthlisberger's personal blog at david.rothlis.net covers programming. Since 2011, 19 different Hacker News readers have linked it 64 times, most often “Simple declarative schema migration for SQLite”. The last post was in 2023, but the archive is still widely read.

Visit the blog
64mentions?
19HN people?
2011–2026first – last linked?
Links on Hacker News per year · peak 14 in 2012

Too few sampled comments (20) to say how often HN recommends it.?

Why HN links it

HN readers link David Röthlisberger's posts on declarative SQLite schema migration, benchmarks of Ninja versus Make, and an Emacs tutorial. Commenters often praise the tutorial and the migration article.

Summarised by Claude from a sample of 20 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.

The author on HN?

drothlis · 720 karma · member since 2009

https://stb-tester.com/ | https://david.rothlis.net/ | david@rothlis.net

From their public HN profile, which links to this site.

Most-linked posts?

  1. Simple declarative schema migration for SQLite
    7 people · 13 mentions · first linked 2022-05-03
  2. Benchmarking the Ninja Build System
    5 people · 7 mentions · first linked 2020-05-14
  3. Distracting syntax highlighting
    2 people · 5 mentions · first linked 2012-11-05
  4. /pageobjects/characterisation-tests
    2 people · 3 mentions · first linked 2020-05-22
  5. /emacs/tutorial.html
    2 people · 2 mentions · first linked 2020-04-15
  6. /c/compilation_model/
    2 people · 2 mentions · first linked 2012-10-06
  7. /ninja-benchmark/
    2 people · 2 mentions · first linked 2016-12-01

What Hacker News says?

  1. Possibly not much. I've never used XCode for C++ development but I imagine it has pretty nifty Clang integration, given Apple's investment in Clang. Anyone who suggests using ctags, GNU Global, gtags, CEDET's own parser (implemented in elisp!), etc. for C++ navigation is basically saying "use a C parser to parse C++ code", which works well enough if you're writing 1990s style C++, I suppose. There are projects out t…

    Comment linking /emacs/howtolearn.html

    on “Emacs Rocks”
  2. Submitted Simple declarative schema migration for SQLite as a story · 109 points

    HN discussion
  3. NateEag · 2020-04-15Recommends
    I'm a moderately experienced Emacser - been using it heavily since 2009 (first encountered it in 2003). I have written a few small extensions and contributed features and bug fixes to bigger ones. Credentials established, I cannot recommend this tutorial enough: https://david.rothlis.net/emacs/tutorial.html He walks you through most of the core of what makes Emacs great by showing you how to make a change to a proje…

    Comment linking /emacs/tutorial.html

    on “Ask HN: Resources to grok Emacs and use it well?”
  4. Submitted How to learn Emacs as a story · 18 points

    HN discussion
  5. I wonder if most of those include files were the files auto-generated by the C pre-processor to track header file dependencies. In a toy benchmark[1] GNU Make spent 98% of its time processing those include files (for a no-op build). Ninja has a special optimisation for these files, where it reads them the first time they're created, inserts the dependency information into a binary database, then deletes them so it d…

    Comment linking /ninja-benchmark/

    on “The Emacs dumper dispute”
  6. Submitted How to Learn Emacs (2012) as a story · 2 points

    HN discussion
  7. column reordering is simple to fix with this migration script https://david.rothlis.net/declarative-schema-migration-for-s... if you are using Zig (and like to live on the bleeding edge), you can also just use my library which includes similar script and also a simple query builder https://github.com/cztomsik/fridge?tab=readme-ov-file#migrat...

    Comment linking /declarative-schema-migration-for-sqlite/

    on “Distributed SQLite: Paradigm shift or hype?”
  8. Submitted How to Learn Emacs (2012) as a story · 2 points

    HN discussion
  9. This technique is also known as characterisation testing, golden-master testing, snapshot testing, and probably other names too. I recommend looking into https://approvaltests.com/ (already mentioned by another commenter). I use characterisation testing all the time, in a perhaps unusual application: Checking the behaviour of "Page Objects" (classes used to model the application-under-test in GUI-level automated tes…

    Comment linking /pageobjects/characterisation-tests

    on “Using `make` and `git diff` for a simple and powerful test harness”
  10. Submitted Test.ai’s Appium plugin: How does it work, and how accurate is it? as a story · 2 points

    HN discussion
  11. I recently put this guide together: http://david.rothlis.net/emacs/howtolearn.html Its focus is on self-driven discovery by leveraging the Emacs built-in help and source code. Feedback welcome.

    Comment linking /emacs/howtolearn.html

    on “An Emacs conference”
  12. Submitted Ruby on Rails: An experience report as a story · 2 points

    HN discussion
  13. I should rephrase, by dependencies I mean third party dependencies. That is on the build system not the compiler. And make tends to fall significantly behind Ninja in my experience for cold builds. Here’s a post from someone else that echoes my experience https://david.rothlis.net/ninja-benchmark/ but for a sufficiently complex project even a well tuned make build is about 20% slower on CI, which is about 10-20m per…

    Comment linking /ninja-benchmark/

    on “Using Make – writing less Makefile”
  14. Submitted Why Emacs as a story · 2 points

    HN discussion
  15. > I think it would be interesting to compare the results with a similar eye track of a program written with more emphasis on data flow It would also be interesting to compare with code with decent syntax highlighting. For some reason I don't quite understand, most syntax highlighting out there highlights the wrong thing: keywords. It needs to highlight the site-of-definition of functions, variables, etc. For example…

    Comment linking /code_presentation/distracting_syntax_highlighting/

    on “How do we read code?”
  16. Submitted Helpful programming tools: Case studies as a story · 2 points

    HN discussion
  17. The OP is 100% right that ninja's biggest architectural insight is the "assembler" metaphor. I came to this same conclusion in https://lwn.net/Articles/706404/ Sad to hear the overall experience has been so negative for him. Ninja has certainly had a large impact! I can relate to the open-source burnout, even though I've experienced only a tiny tiny fraction of it compared to the success of Ninja. Re. speed, I wonde…

    Comment linking /ninja-benchmark/

    on “The Success and Failure of Ninja”
  18. Submitted Benchmarking the Ninja Build System as a story · 1 points

    HN discussion
  19. I agree that the specific key bindings are the least interesting thing about Emacs.† This is the approach I tried to take in my tutorial: http://david.rothlis.net/emacs/howtolearn.html -- namely, teaching you how to find the commands you're looking for; finding the key binding is trivial once you know the name of the command. If you have time to cast your eye over the tutorial, I'd love to hear your feedback. † Howe…

    Comment linking /emacs/howtolearn.html

    on “How to Learn Emacs: A Hand-drawn One-pager for Beginners”
  20. Submitted Writing a large build system with GNU make as a story · 1 points

    HN discussion
  21. http://david.rothlis.net/emacs/howtolearn.html For example, this chapter: http://david.rothlis.net/emacs/customize_c.html walks you through this example: What command is run when I press TAB? How do I find out? How do I find its (elisp) source code? How do I find the documentation for built-in elisp functions or macros or "special forms"? All culminating in figuring out (from the elisp source code) which variable yo…

    Comment linking /emacs/customize_c.html

    on “How to Learn Emacs: A Hand-drawn One-pager for Beginners”
  22. Submitted Distracting syntax highlighting as a story · 1 points

    HN discussion
  23. Great "learn the terms" section. So many tutorials come with a huge up-front wall of text explaining every possible term you could ever come across, when all you want is to get to the useful stuff! The approach I took in my own guide to learning Emacs[1] was to mention those terms (like "C-x", "buffer", "frame", etc.) as if the reader already knew them, but hyperlinked to a glossary. The most important part of Sacha…

    Comment linking /emacs/howtolearn.html

    on “How to Learn Emacs: A Hand-drawn One-pager for Beginners”
  24. I would recommend: When you want to customise the behaviour of some command, don't google for the answer. Instead do `C-h f` or `C-h k` to read the built-in documentation for that function or key. From the help screen, click the link to view the function's source code -- if you don't see that link install the "emacs-el" package (using your system's package manager). See what variables that function uses. Do `C-h v`…

    Comment linking /emacs/customize_c.html

    on “Software on Steam”
  25. A lot of commenters suggesting "pipefail" aren't realising the full extent of the problem. Here's an example that might be clearer, from https://david.rothlis.net/shell-set-e This prints “a”, as you’d expect: set -e myfun() { printf a; false; printf b; } myfun printf c ...because the “set -e” terminates the whole script immediately after running the “false” command. But this script prints “a-b-True”, where some peop…

    Comment linking /shell-set-e

    on “Why doesn't Bash’s ‘set -e’ do what I expected? (2021)”
  26. I like to highlight just the places where you are defining new variables/functions/types so that the definition is easy to spot. What is the point of highlighting keywords? I suspect that highlighting engines do it simply because it's easy to do, not because it's useful. It looks like this: http://david.rothlis.net/code_presentation/distracting_synta...

    Comment linking /code_presentation/distracting_syntax_highlighting/

    on “Turning off syntax highlighting”
  27. This benchmark would imply that isn't usually the case: http://david.rothlis.net/ninja-benchmark/ .

    Comment linking /ninja-benchmark/

    on “Modern CMake short tutorial and best practice”
  28. Some environments make it easier to browse the source than others. See for example the way you would figure out how to customize indentation in Emacs, by asking Emacs for the source code to the command that is run when you press TAB: http://david.rothlis.net/emacs/customize_c.html#style (Note that the above refers to browsing the source of Emacs itself, not using Emacs to browse any arbitrary source -- unfortunately…

    Comment linking /emacs/customize_c.html

    on “Learn to read the source, Luke”
  29. Years ago I wrote the Emacs tutorial I wish had existed when I was learning Emacs: https://david.rothlis.net/emacs/tutorial.html It follows a similar philosophy as the OP: Start by reading Emacs's built-in tutorial, and then my tutorial shows you how to leverage the built-in help system to figure out how to achieve what you want to do.

    Comment linking /emacs/tutorial.html

    on “Bad Emacs Advice”
  30. Yes, I particularly enjoyed applying security fixes from the so-called stable branch and suddenly having all my validation messages corrupted, or form parameters randomly truncated.[1] [1] http://david.rothlis.net/rails/experience_report/#stable_bra...

    Comment linking /rails/experience_report/

    on “Ruby Frameworks? Which one? Bye bye Rails.”

Search all of HN for david.rothlis.net

Linked by the same people?