All blogs / Software / engineering practice
Yossi Kreinin
Worse is better
Software / engineering practiceC++Performance / optimizationEngineering management / careers
- Posts
- 123 from 6 Jan 2008 to 18 Sep 2026
- Posting
- now and then (5 in the last year)
- Kind
- personal blog
- Feed
- https://yosefk.com/blog/feed
2026 4
2025 4
2024 7
2019 1
2018 1
2017 1
2016 6
2015 8
2014 9
- Capital vs labor: who risks more?
- Do company names actually matter?
- A better future
- Things from Python I'd miss in Go
- How to make a heap profiler
- Why bad scientific code beats code following "best practices"
- Working simultaneously vs waiting simultaneously
- Can your static type system handle linear algebra?
- A simple way to "get more people to code"
2013 13
- Very funny, gdb. Ve-ery funny.
- Delayed printf for real-time logging
- Coroutines in one page of C
- Do call yourself a programmer, and other career advice
- How FPGAs work, and why you'll buy one
- The bright side of dark silicon
- Parallelism and concurrency need different tools
- 10x more selective
- checkedthreads: bug-free shared memory parallelism
- Amdahl's law in reverse: the wimpy core advantage
- Is program speed less important than X?
- Efficiency is fundamentally at odds with elegance
- How profilers lie: the cases of gprof and KCachegrind
2012 17
- It's "locking" if it's blocking
- C++ template fuckwittery
- Why custom allocators/pools are hard
- "Value", the irksome euphemism
- Will OpenCL help displace GPGPU? Parallella, P2012, ...
- Do you really want to be making this much money when you're 50?
- C as an intermediate language
- Error codes vs exceptions: critical code vs typical code
- Aren't side effects fundamental in complexity analysis?
- What "Worse is Better vs The Right Thing" is really about
- "It's done in hardware so it's cheap"
- Work on unimportant problems
- Hardware macroarchitecture vs microarchitecture
- Which of those would you like me to write?
- Passing shell script arguments to a subprocess
- Why programming isn't for everyone
- Compensation, rationality and the project/person fit
2011 8
- Cycles, memory, fuel and parking
- Could SOPA give us back a decentralized Internet?
- Coding standards: is consistency prettier than freedom?
- Graham & Coase: when big companies are a good idea
- Engineers vs managers: economics vs business
- SIMD < SIMT < SMT: parallelism in NVIDIA GPUs
- An unusual hardware architecture: APA (Associative Processing Array)
- Machine code monkey patching
2010 9
- Making data races manifest themselves
- The Iron Fist Coding Standard
- My history with Forth & stack machines
- The Internet age/reputation paradox
- If a tree falls in a forest, it kills Schrödinger's cat
- Applied mathematics in business consulting
- Lack of wealth through lack of empathy
- API users & API wrappers
- Digital asses in the computing industry
2009 8
- The Virtue of a Manager
- Getting the call stack without a frame pointer
- What makes cover-up preferable to error handling
- The C++ Sucks Series: petrifying functions
- Coding standards: having more errors in code than code
- The nomadic programmer
- Humans and compilers need each other: the VLIW SIMD case
- Pearls of wisdom
2008 27
- The C++ Sucks Series: the quest for the entry point
- The internal free market
- Consistency: how to defeat the purpose of IEEE floating point
- I want a struct linker
- The cardinal programming jokes
- I love globals, or Google Core Dump
- Extreme Programming Explained
- OO C is passable
- Redundancy vs dependencies: which is worse?
- I can't believe I'm praising Tcl
- Python: teaching kids and biting bits don't mix
- Side effects or not, aliasing kills you
- Optimal processor size
- IHateCamelCase
- Code, data and interactive programming
- The Algorithmic Virtual Machine
- "High-level CPU": follow-up
- The "high-level CPU" challenge
- Everybody agrees with yosefk
- Fun at the Turing tar pit
- Interrupt? Let the Bastard handle it!
- Why don't we have a word for it?
- Teeth marks at the rear end
- AI problems
- A writer of the lame kind
- Low-level is easy
- Blogging is hard