Nibble Stew
nibblestew.blogspot.com · Personal blog · on HN since 2016
Jussi Pakkanen, creator of the Meson build system, writes about C++, programming languages, build tools, and software development practices.
What HN saysHN links it in discussions of C++ modules and language design; commenters use his posts as references on those topics.
74HN people shared it
19linked it in comments
217stories submitted
6.0Kstory points
3 months agolast shared
2016people per year2026
Most-shared posts
- 1Statement is 100% correct but misses the entire point8 people · 19 points · first shared 2020 · 2 comments on HN
- 2The road to hell is paved with good intentions and C++ modules (2023)6 people · 92 points · first shared 2023 · 71 comments on HN
- 3It's not what programming languages do, it's what they shepherd you to4 people · 712 points · first shared 2020 · 339 comments on HN
- 4Your statement is correct but misses the point4 people · 442 points · first shared 2020 · 257 comments on HN
- 5An uncomfortable but necessary discussion about the Debian bug tracker4 people · 9 points · first shared 2025 · discussion on HN
- 6Let's properly analyze an AI article for once3 people · 232 points · first shared 2025 · 140 comments on HN
- 7Implementing a “mini-LaTeX” in ~2000 lines of code3 people · 98 points · first shared 2022 · 68 comments on HN
- 8In C++ modules globally unique module names seem to be unavoidable3 people · 41 points · first shared 2025 · 36 comments on HN
- 9Rewriting from scratch, should you do it?3 people · 12 points · first shared 2016 · 1 comments on HN
- 10Looking inside a Linux powered slot machine3 people · 7 points · first shared 2018 · 1 comments on HN
- 11The scalability of C++ module implementations or lack thereof3 people · 3 points · first shared 2023 · 1 comments on HN
- 12C and C++ dependencies: don't dream it, be it3 people · 2 points · first shared 2026 · discussion on HN
- 13Apple of 2019 is the Linux of 20002 people · 805 points · first shared 2019 · 689 comments on HN
- 14What to do with C++ modules?2 people · 226 points · first shared 2025 · 261 comments on HN
- 15Questions to ask a prospective employer during a job interview2 people · 200 points · first shared 2022 · 114 comments on HN
What HN people wrote when they linked it
ho_schi · 2025-09-11
Looking at the examples from using Clang (I use GCC btw.):
clang++ -std=c++20 Hello.cppm --precompile -o Hello.pcm clang++ -std=c++20 use.cpp -fmodule-file=Hello=Hello.pcm Hello.pcm -o Hello.out ./Hello.out Why is something which shall makes things easy and secure so complicated?
I'm used to:
g++ -o hello hello.cpp It can use headers. Or doesn't use headers. I doesn't matter. That's the decision of the source file. To be fair, the option -std=c++20 probably isn't necessary in future.
I recommend skimming over this issue from Meson:
https://github.com/mesonbuild/meson/issues/5024
Reading the last few blog posts from a developer of Meson, providing some insights why Meson doesn't support modules until now:
https://nibblestew.blogspot.com/
ParetoOptimal · 2024-01-03
> I don’t care in which language my editor is written in.
Sure you do. If I offered you a version of your current editor in the Befunge programming language, you'd rightly decline!
Programming languages aren't just all "basically the same".
Programming language choice, communicates something because programming languages have values.
Would you prefer a text editor written in Ruby or one written in Python?
This relates to a favorite article of mine:
It's not what programming languages do, it's what they shepherd you to.
https://nibblestew.blogspot.com/2020/03/its-not-what-programming-langu…
To tie in one of the article's examples:
> Perl shepherds you into using regexps
If you believe that regexes are hard to debug and overly complex, you might resist a text editor written in perl because it's likely that regexes are used everywhere (even when they shouldn't be).
nok22kon · 2026-07-01
> at work it is a different matter
that's what I was asking, of modules are being introduced at scale or if they are a hobbist thing
https://nibblestew.blogspot.com/2025/08/we-need-to-seriously-think-abo…
UltimateEdge · 2023-10-25
Here is a related article I read recently: https://nibblestew.blogspot.com/2022/09/questions-to-ask-prospective-e…
gaws · 2022-07-29
We get it. You already made this comment: https://nibblestew.blogspot.com/2022/07/that-time-when-i-accidentally-…
The author responded:
> In case it was not obvious from the text, I did not do either of these things. No-one else should either.
jcelerier · 2022-02-24
it's obvious that OP meant a performance cost - as generally when you program in C++ that's the n°1 metric. And for that one, exceptions as they are today are often faster than the equivalent error-code-based code: https://nibblestew.blogspot.com/2017/01/measuring-execution-performanc…
Of course if we can get even faster exceptions such as the throwing values model, by all means let's do it... i'm entirely fine with recompiling literally every software / library I use if that can get me half a % more performance
lawl · 2022-01-06
Reminds me of this post: https://nibblestew.blogspot.com/2020/03/its-not-what-programming-langu…
In the case of java though in my opinion the problems start at the std library that sometimes forces you to write really inefficient code, or reimplement everything yourself.
kevinmgranger · 2021-02-18
This boils down to "just don't do undefined behavior". It's 100% correct and misses the point entirely.[1]
1: https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-…
pgen · 2021-02-07
Use this instead: https://nibblestew.blogspot.com/2021/02/why-most-programming-language.…
MrStonedOne · 2020-12-08
Your statement is 100% correct but misses the entire point
https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-…
ratww · 2020-09-13
> In my experience with language design, a little bit of syntactic sugar can have transformative results.
I agree 100%. This also reminds me of this article:
https://nibblestew.blogspot.com/2020/03/its-not-what-programming-langu…
HN discussion: https://news.ycombinator.com/item?id=22696229
yawaramin · 2020-06-08
All of that sounds good in theory until we reach this point:
> Looking for good software engineering advice? Do the same thing with developers.
Which brings us back to the OP:
> Most tech content is bullshit
So we've now come full circle. Hence I would point you to another post that came out recently that would be useful to understand what you wrote: https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-…
rubiquity · 2020-04-13
I leave this for you without comment: http://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-b…
rhn_mk1 · 2019-03-26
There's another post explaining why Meson is trying to do what it is trying to do. My takeaway was that having a single universal build system is easier to deal with than multiple splintered ones, full of duplicated effort:
http://nibblestew.blogspot.com/2019/02/on-possible-futures-of-meson.ht…
jstimpfle · 2018-03-08
It's very easy to explain and there are many examples of bad Makefiles on the internet. Magic variables, unintelligible string replacement routines, unportable extensions. Almost nobody understands the finer points like = vs := and execution order. Using a simple scripting language with well known semantics can be relieving. Maybe try this? http://nibblestew.blogspot.de/2017/12/a-simple-makefile-is-unicorn.htm…
Creating dummy files is inefficient, inelegant, and unmaintainable. Changing SHELL does not solve the inconvenience of having start a new process and having to go through a command-line interface each time.
Btw. watch your language, please.
ggreg84 · 2022-03-04
> And for that one, exceptions as they are today are often faster than the equivalent error-code-based code: https://nibblestew.blogspot.com/2017/01/measuring-execution-...
The example on that blog post is not representative of how error codes are used.
On all programming languages, C included, but also Rust, functions return a completion value that's either success, or error (and when its error, it includes which error it is, and the error state, etc.).
int foo();
switch (foo())
case 0: break; // success
case 1: /* error case 1 */
case 2: /* error case 2 */
...
Instead, the blog post has the function return some value in registers that is not an error, and passes the function an ErrorState* as an argument, that the function first sets via memory, and then the handler reads, also via memory.
That this is slow is not rocket science, which is why nobody does this.
I get why the author has to do it. If they were to do it right, error codes would perform significantly better than exceptions. Since returning the error or success is "free" (the function has to return anyways, and up to 2 registers are reserved by the ABI anyways).
Somebody mentions this in the comments, were as far as fixing it and sending a PR (https://github.com/jpakkane/excspeed/pull/1) but the author complains that this is not how GLib does error codes, so they don't care.
So yeah, if you do C error codes like GLib does, which is essentially a poor man's emulation of…
ovidiuleo · 2020-06-04
This reply frustrated me to the core. This isn't a parenting website. The advice you gave is a parenting one, and bad, at that. The story could have just been concocted for the benefit of understanding the urgency of the situation.
You should probably read this: https://nibblestew.blogspot.com/2020/04/your-statement-is-100-correct-…
It'll make you a little wiser.
As to why your reply frustrated me? I think the internet is overwhelmed by [...] trying to draw lines where no limit should really be required (please note that I'm referring to your comment, not to the request for any sort of protection on Virus Cafe...).
The problem wasn't that he/she gave the ipad/iphone to the daughter, but the lack of security on the site. Better people than us said this is actually illegal, so you see, you're slightly out of line.
I wanted to somehow say you're right, but irrelevant. But you aren't even right. Even a 6 yearold should have access to an iphone or an ipad, CONNECTED TO THE INTERNET, as it were.
The situation forks: 1 - enable parenting rights on the device
...which would mean that if I just want my kid to experience the iphone for 5 minutes I have to enable a feature that afterwards I need to disable... (this forks again, about 3 ways)
2 - buy one especially for the kid
...I don't even want to start... (this actually forks in volumes and volumes of pros and cons)
So let's just stick to the real problem here:
I (and when I say I, I mean a forty smthg yearold) was on…