The Curious Engineer

All blogs / C++

Nibble Stew

nibblestew.blogspot.com

A gathering of development thoughts of Jussi Pakkanen. Some of you may know him as the creator of the Meson build system. jpakkane at gmail dot com

C++Dev tools / editors / IDEsPerformance / optimizationEssays / personal

Posts
338 from 24 Jun 2015 to 30 Oct 2026
Posting
weekly (25 in the last year)
Kind
personal blog
Feed
https://nibblestew.blogspot.com/feeds/posts/default

2026 21

  1. A slightly better ThreadPoolExecutor in Pystd through types
  2. Implementing a simple version of ThreadPoolExecutor in Pystd
  3. Destroying all of humanity is hard work, even for a superintelligence
  4. Stanisław Lem foretold the current LLM mania in 1964
  5. Digitizing super 8 film yourself
  6. Fixing a super 8 projector from the 70s
  7. Pystd standard library, similar-ish functionality with a fraction of the compile time
  8. Beware of Star Trek managers, especially when bearing MBAs
  9. Faking keyword arguments to functions in C++
  10. CapyPDF is approaching feature sufficiency
  11. Multi merge sort, or when optimizations aren't
  12. Sorting performance rabbit hole
  13. Everything old is new again: memory optimization
  14. Simple sort implementations vs production quality ones
  15. Discovering a new class of primes fur the fun of it
  16. What's cooking with Pystd, the experimental C++ standard library?
  17. C and C++ dependencies, don't dream it, be it!
  18. How to get banned from Facebook in one simple step
  19. AI and money
  20. Converting Chapterizer from Cairo + Pango to CapyPDF
  21. New year, new Pystd epoch, or evolving an API without breaking it

2025 25

  1. An uncomfortable but necessary discussion about the Debian bug tracker
  2. An Appeal from the United Federation of Dictators, Despots, Evil Emperors and Tyrants
  3. 3D models in PDF documents
  4. Creating valid PDF/A-4 with CapyPDF
  5. CapyPDF 1.8.0 released
  6. Building Android apps with native code using Meson
  7. In C++ modules globally unique module names seem to be unavoidable, so let's use that fact for good instead of complexshittification
  8. Trying out import std
  9. We need to seriously think about what to do with C++ modules
  10. Reimplementing argparse in Pystd
  11. Let's properly analyze an AI article for once
  12. Comparing a red-black tree to a B-tree
  13. AI slop is the new smoking
  14. Deoptimizing a red-black tree
  15. Book creation using almost entirely open source tools
  16. A custom C++ standard library part 4: using it for real
  17. Custom C++ stdlib part 3: The bleedingest edge variant
  18. Iterators and adaptors
  19. Optimizing page splits in books
  20. Writing your own C++ standard library part 2
  21. Writing your own C++ standard library from scratch
  22. The price of statelessness is eternal waiting
  23. C++ compiler daemon testing tool
  24. The trials and tribulations of supporting CJK text in PDF
  25. Measuring code size and performance

2024 21

  1. CapyPDF 0.14 is out
  2. Meson build definitions merged into Git's git repo
  3. CMYK me baby one more time!
  4. Compiler daemon thought experiment
  5. PDF/AAAARGH
  6. Happenings at work
  7. CapyPDF 0.12.0 released
  8. On M and S Type Processes in Software Development
  9. Meson's New Option Setup ‒ The Largest Refactoring
  10. Refactoring Python dicts to proper classes
  11. Why refactoring is harder than you think, a pictorial representation
  12. Advanced text features and PDF
  13. Generative non-AI
  14. C is dead, long live C (APIs)
  15. CapyPDF 0.10.0 is out
  16. Aesthetics matter
  17. Color management and API design
  18. CapyPDF 0.9.0 released
  19. Creating tagged PDFs with CapyPDF now sort of possible
  20. CapyPDF 0.8.0 released
  21. C++ module tooling emulator playground

2023 41

  1. Tagged PDF funsies
  2. Even more breakage in the C++ module world
  3. AI silliness: getting to a no
  4. On the scalability of C++ module implementations or lack thereof
  5. CapyPDF 0.7.0 released
  6. CapyPDF, performance and shared libraries
  7. CapyPDF 0.6.0 is out
  8. The road to hell is paved with good intentions and C++ modules
  9. Could we make C arrays memory safe? Probably not, but let's try anyway
  10. Circles do not exist
  11. A logo for CapyPDF
  12. CapyPDF 0.5 is out
  13. The least convenient way of defining an alpha value
  14. Creating a PDF/X-3 document with CapyPDF
  15. PDF transparency groups and composition
  16. CapyPDF 0.4 release and presenter tool
  17. PDF and embedded videos
  18. PDF subpage navigation
  19. Functionality currently implemented in CapyPDF
  20. A4PDF has been renamed to CapyPDF
  21. A4PDF release 0.2.0
  22. Advanced dependency management and building Python wheels with Meson
  23. Annotated PDF, HTML, exporters
  24. The real reason why open source software is better
  25. The unbearable tightness of printing
  26. PDF forms, the standard that seemingly isn't
  27. Some details about creating print-quality PDFs
  28. Got the Star Trek - The Motion Picture Director's Edition box set? You might wan to check your discs
  29. In which you find out that everything you assumed was wrong
  30. The joy of font debugging
  31. The PDF text model is quite nice, actually
  32. First A4PDF release, version 0.1.0 "embarrasment"
  33. My book is finally available for purchase
  34. The code functionality tipping point
  35. Unit testing PDF generation
  36. PDF output in images
  37. Plain C API design, the real world Kobayashi Maru test
  38. More PDF, C API and Python
  39. PDF with font subsetting and a look in the future
  40. Typesetting an entire book part V: Getting it published
  41. PDF, text and fonts, a design by The Devil & Associates

2022 34

  1. A quantitative analysis of the Trade Federation's blockade of Naboo
  2. After exactly 10 years, Meson 1.0.0 is out
  3. Print quality PDF generation, color separations, other fun stuff
  4. Color management, this time with PDF
  5. Going inside Cairo to add color management
  6. Experimenting on how to add CMYK and color management to Cairo
  7. If you don't tolerate it in new code you should not tolerate it in old code either
  8. Making Visual Studio compilers directly runnable from any shell (yes, even plain cmd.exe)
  9. Using cppfront with Meson
  10. "Why is it that package managers are unnecessarily hard?" — or are they?
  11. Diving deeper into custom PDF and epub generation
  12. Questions to ask a prospective employer during a job interview
  13. Looking at LibreOffice's Windows installer
  14. Random things on designing a text format for books
  15. Making decision without all the information is tricky, a case study
  16. Implementing a "mini-LaTeX" in ~2000 lines of code
  17. That time when I accidentally social engineered myself to a film set
  18. Further adventures in creating a custom math-themed jigsaw puzzle
  19. Attempting to create an aesthetic global line breaking algorithm
  20. Creating your own math-themed jigsaw puzzle from scratch
  21. A look in the game design of choose-your-own-adventure books
  22. Sometimes the real world gives you unexpected comedy gold
  23. Of snaps and stratagem
  24. Getting web proxys and certificates working on Linux or "if it's all the same to you, I'd rather take a thousand years of the Sarlacc pit, thankyouverymuch"
  25. Looking at building some parts of the Unreal engine with Meson
  26. The C++ best practices game jam sample project Meson conversion
  27. Please provide tarball releases of your projects
  28. Supporting external modules in Godot game engine with Meson
  29. Typesetting an Entire Book Part IV: The Content
  30. Converting Godot game engine to Meson, how you can help
  31. Compiling LibreOffice with Meson even further
  32. Porting the LO Windows build to macOS
  33. Building a part of LibreOffice on Windows using only Meson and WrapDB
  34. Portability is not sufficient for portability

2021 29

  1. This year receive the gift of a free Meson manual
  2. Typesetting a whole book part III, the analog edition
  3. A call for more downstream testing of Meson
  4. Glyphtracer 2.0
  5. Swappable faceplates for laptops
  6. Hercule Poirot and the Mystery Box, as written by JJ Abrams
  7. Looking at building O3DE with Meson, part II
  8. How much effort would it take to convert OpenSSL's Perl source code generators to Python?
  9. A quick look at the O3DE game engine and building it with Meson
  10. A followup to the Refterm blog post
  11. Looking at the performance of Refterm
  12. Typesetting a full book part II, Scribus
  13. An overhaul of Meson's WrapDB dependency management/package manager service
  14. Formatting an entire book with LibreOffice, what's it like?
  15. Managing dependencies with Meson + WrapDB
  16. Why all open source maintainers are jerks, the Drake equation hypothesis
  17. .C as a file extension for C++ is not portable
  18. Is the space increase caused by static linking a problem?
  19. "Should we break the ABI" is the wrong question
  20. The joys of creating Xcode project files
  21. Converting a project to Meson: the olc Pixel Game Engine
  22. Never use environment variables for configuration
  23. Writing a library and then using it as a Meson dependency directly from upstream Git
  24. Microsoft is shipping a product built with Meson
  25. Mixing Rust into an existing C shared library using Meson
  26. Millennium prize problems but for Linux
  27. Why most programming language performance comparisons are most likely wrong
  28. Using a gamepad to control a painting application
  29. Quick review of Lenovo Yoga 9i laptop

2020 42

  1. Some things a potential Git replacement probably needs to provide
  2. How Apple might completely take over end users' computers
  3. Adding (very) preliminary support for C++ modules in Meson
  4. The Nine Phases of an Open Source Project Maintainer
  5. Proposal for target-private directories for compilers
  6. You wanted Boost via Meson subprojects? You got it! (sorta)
  7. How to build dependencies as Meson subprojects using SDL as an example
  8. The Meson Manual: Good News, Bad News and Good News
  9. Cargo-style dependency management for C, C++ and other languages with Meson
  10. Does C++ still deserve the bad rap it has had for so long?
  11. Is your project a unique snowflake or do you just think that it is?
  12. Want GCC's cleanup attribute in Visual Studio? Here's what to do.
  13. Proposal for a computer game research topic: the walk/game ratio
  14. Resist the urge to argue about app store security
  15. It ain't easy being a unique snowflake, the laptop purchasing edition
  16. Most "mandatory requirements" in corporations are imaginary
  17. The second edition of the Meson manual is out
  18. About that "Google always builds everything from source every time" thing
  19. Pinebook Pro longer term usage report
  20. The ABI stability matryoshka
  21. What if? Revision control systems did not have merge
  22. What is best in open source projects?
  23. The human brain comprehends atoms but it does not comprehend electrons
  24. Short term usability is not the same as long term usability
  25. The need for some sort of a general trademark/logo license
  26. Enforcing locking with C++ nonmovable types
  27. Let's talk meta
  28. You have to kill your perlings
  29. Do humans or compilers produce faster code?
  30. Your statement is 100% correct but misses the entire point
  31. Meson manual sales status and price adjustment
  32. It's not what programming languages do, it's what they shepherd you to
  33. The character that swallowed a week
  34. Meson manual sales numbers and a profitability estimate
  35. Unity build test with Meson & LibreOffice
  36. Open source does not have a reward mechanism for tedious
  37. Building even more of LibreOffice with Meson, now with graphics
  38. Trying to build a slightly larger slice of Libreoffice with Meson
  39. Building (a very small subset of) LibreOffice with Meson
  40. Creating your own physical or PDF manual
  41. How the Meson manual sales pipeline is set up and how to set your own
  42. The Meson Manual is now available for purchase

2019 27

  1. How about not stabbing ourselves in the leg with a rusty fork?
  2. What can clang-format teach us about the human condition?
  3. Notes on tax issues on selling digital goods internationally
  4. There are (at least) three distinct dependency types
  5. Process invocation will forever be broken
  6. Some intricacies of ABI stability
  7. What is -pipe and should you use it?
  8. Apple of 2019 is the Linux of 2000
  9. A look into building C++ modules with a scanner
  10. New Meson mugs, get them while they're hot!
  11. C++ modules with a batch compiler feasibility study
  12. Building C++ modules, take N+1
  13. Metafont-inspired font design using nonlinear constraint optimization and Webassembly
  14. A personal story about 10× development
  15. Initializing all local variables with Clang-Tidy
  16. Tweaking the parallel Zip file writer
  17. Looking at why the Meson crowdfunding campaign failed
  18. Emulating rpath on Windows via binary patching
  19. Why crowdfunding freely licensed documentation is illegal in Finland
  20. The Meson manual crowdfunding campaign
  21. An important message to people designing testing frameworks!
  22. Could Linux be made "the best development environment" for games?
  23. What if everything you know is wrong?
  24. Introducing the Meson Quest
  25. Why is cross-language cooperation so hard?
  26. On possible futures of Meson
  27. Meson's new logo: a design process

2018 24

  1. The performance impact of zeroing raw memory
  2. Compile any C++ program 10× faster with this one weird trick!
  3. Simple guide to designing pleasant web sites
  4. Some use cases for shared linking and ABI stability
  5. Things Microsoft could do to make life of developers easier
  6. The compiler as a shared library
  7. Linker symbol lookup order does not work the way you think
  8. The Internet of 200 Kilogram Things: Challenges of Managing a Fleet of Slot Machines
  9. Implementing a distributed compilation cluster
  10. Building native multiplatform GUI apps with Meson
  11. Why Git is terrible in four pictures
  12. How expensive is globbing for sources in large projects
  13. Easy MSI installer creator
  14. Dependencies with code generators got a lot smoother with Meson 0.46.0
  15. Cookie purging the simple way
  16. Comparing Meson with Bazel on a Raspberry Pi 3
  17. And now for something completely different
  18. Stop trying to guess display language based on keyboard layout
  19. Compiling Cargo crates natively with Meson
  20. On the unoptimalities of language specific build systems
  21. Projects and features Meson could use help with
  22. Automatically finding slow headers in C++ projects
  23. Meson's dependency manager in action building GTK
  24. Looking inside a Linux powered slot machine

2017 35

  1. These three things could improve the Linux development experience dramatically, #2 will surprise you
  2. Creating an USB image that boots to a single GUI app from scratch
  3. "A simple makefile" is a unicorn
  4. Comparing C, C++ and D performance with a real world project
  5. Aiming for C++ sorting speed with a plain C API
  6. Comparing C and C++ usage and performance with a real world project
  7. Dependencies, why are they so hard to get right?
  8. Apple laptops have become garbage
  9. Reconstructing old game PC speaker music
  10. Managing the build definitions of a big project with many subprojects and interdependencies
  11. Experiment: binary size reduction by using common function tails
  12. Is every build system using Ninja just as fast as every other?
  13. Writing your own simple GUI SSH client
  14. Of XML, GUIDs and installers
  15. Optimizing code: even the simplest things are unbelievably complex
  16. Gee, optimization sure is hard
  17. Emulating the Rust borrow checker with C++ part II: the borrowining
  18. Emulating the Rust borrow checker with C++ move-only types
  19. A list of common Meson antipatterns
  20. The Infinity Horse
  21. Why don't you just rewrite it in X?
  22. How Meson is tested
  23. Meson project status update
  24. Inspector Gadget as an allegory of software engineering profession in the modern age
  25. Debian package dependency browser
  26. Is static linking the solution to all of our problems?
  27. Dependencies and unity builds with Meson
  28. Looking into what Rust can do that other languages can't ... or can they
  29. Enabling HTTPS is easy
  30. Testing exception vs error code behaviour with real world code
  31. A Python extension module using C, C++, FORTRAN and Rust
  32. Using a smart card for decryption from the command line
  33. Measuring execution performance of C++ exceptions vs error codes
  34. Clarifications to xz compression article
  35. Beating the compression performance of xz, or has the time come to dump tar?

2016 20

  1. Comparing executable size of C++ exceptions vs plain C error structs
  2. What is the global cost of Autoconf?
  3. On reversing btrees in job interviews
  4. What does configure actually run
  5. Building code faster and why recursive Make is so slow
  6. Exposing a C++ library with a stable plain C API
  7. Unix Userland as C++ Coroutines
  8. The unspeakable horror of Visual Studio PDB files
  9. How to convert an Autotools project to Meson
  10. Weird USB disk slowdown with multiple readers
  11. Comparing GCC C cleanup attribute with C++ RAII
  12. Running COBOL on Arduino using the Meson Build System
  13. Meson build system now has Arduino support
  14. Performance testing a new parallel zip file implementation
  15. Jzip parallel unzipper performance results
  16. Rewriting from scratch, should you do it?
  17. A look into Linux software deployment
  18. Testing performance of build optimisations
  19. Simple new features of the Meson build system
  20. Snappy Answers to Stupid Questions - Google Job Interview Edition

2015 19

  1. Are exceptions slower than error objects
  2. Always use / for directory separation
  3. Build speed comparison on the Raspberry Pi 2
  4. Solving the C/C++ dependency problem through build system composability
  5. A difference in complexity
  6. Shell script or Python?
  7. Proposal for launching standalone apps on Linux
  8. Some comments on the C++ modules talk
  9. Linux ABI compatibility even reduxer
  10. Linux applications backwards compatibility redux
  11. Proposal for a dependency security scheme for sandboxed apps
  12. Make your tool programs take file name arguments
  13. Not handling filenames with spaces should be classified a fatal bug
  14. Running Linux installs with a different CPU
  15. List of achievements for an open source project
  16. Strange requirements of low level packages
  17. The fable of mashed potatoes
  18. How many is too many?
  19. Simple structure of arrays with C++ templates