The Curious Engineer

All blogs / Linux / Unix

eklitzke.org

eklitzke.org

Linux / UnixDatabasesPerformance / optimization

Posts
152 from 27 May 2015 to 5 Dec 2025
Posting
now and then (1 in the last year)
Kind
personal blog

2025 4

  1. std::lower_bound and std::upper_bound
  2. NUMA Cost & Performance
  3. (Almost) Always use -fdebug-info-for-profiling with -gmlt
  4. Blog is Back

2022 1

  1. Using std::unique_ptr With C APIs

2021 4

  1. Handling Updated RPM Package Configuration Files
  2. An Annoyance With std::filesystem::last_write_time
  3. Don't use div(3)
  4. STL Iterators and Performance Revisited

2020 3

  1. How Tail Call Optimization Works
  2. Blog Generator Rewrite
  3. Generating Kernel Headers For BPF Kprobes

2019 5

  1. Making helm-projectile-find-file Fast In Large Projects
  2. Running Build Commands Nicely
  3. Maintaining Sorted Lists In Python
  4. The CBC Padding Oracle Problem
  5. Using Local OPTIND With Bash getopts

2018 12

  1. Weekend Hack: nossl.io
  2. Disabling Ubuntu MOTD Spam
  3. Bash Subcommand Aliases
  4. Beware of strncpy() and strncat()
  5. Lobotomizing GNOME
  6. Using gpg-agent Effectively
  7. An Overview of Bitcoin UTXOs
  8. Making Bitcoin Fast: Introduction
  9. How SystemTap Userspace Probes Work
  10. Using Emacs And RTags With Autools C++ Projects
  11. Indexing Git Repos With Hound
  12. Summing Integer Ranges With dc

2017 37

  1. Generating Segwit Change Addresses in Bitcoin 0.15
  2. An Observation About The Bitcoin Block Size Debate
  3. How Many Bitcoins Did Satoshi Nakamoto Mine?
  4. Notes on std::shared_ptr and std::weak_ptr
  5. Pyflame Packages
  6. Using Google Inbox With mailto Links In Firefox
  7. Dumping Multi-Threaded Python Stacks
  8. PTR Records Are Strange
  9. An Unexpected Python ABI Change
  10. Resurrecting the SRAM Automatix
  11. Production Tornado Deployment With Systemd
  12. Demystifying The Selfish Mining Bet
  13. Bitcoin Transaction Malleability
  14. Setting Up A Headless Raspberry Pi On Linux
  15. Smarter clang-format In Emacs
  16. Down the SSH_AUTH_SOCK Rabbit Hole: A GNOME Adventure
  17. The Traveling Salesman Problem Is Not NP-complete
  18. Declaring C String Constants The Right Way
  19. C String Literals Are Lvalues
  20. PATH_MAX Is Tricky
  21. Pinning GPU Memory in Tensorflow
  22. How To Host Your Own Private Git Repositories
  23. Bash $* and $@
  24. Blog Rewrite In Go
  25. Efficient File Copying On Linux
  26. The Cult of DD
  27. Unix System Call Timeouts
  28. How To Play Pool At A Bar
  29. Neoliberalism
  30. An Introduction to Valgrind Memcheck
  31. All About Linkers
  32. In Defense of C++
  33. Unexpected Places You Can And Can't Use Null Bytes
  34. How TCP Sockets Work
  35. Blocking I/O, Nonblocking I/O, And Epoll
  36. Goroutines, Nonblocking I/O, And Memory Usage
  37. Hanging A Process With Select

2016 49

  1. Stopping A Process
  2. Stdout Buffering
  3. How To Nice A Bash Function
  4. Crosh/SSH and ChromeOS
  5. x86 Register Encoding
  6. Pyflame Dual Interpreter Mode
  7. Call Stacks and Link Registers
  8. Towers of Hanoi in x86 Assembly
  9. Go Compiles Infinite Loops Very Efficiently
  10. Declare Your Bash Variables
  11. Localhost
  12. Gocd
  13. Using ssh-agent and ED25519 Keys on GNOME
  14. Systemd Socket Activation
  15. Esc is Ctrl-[
  16. F-Market Line Considered Harmful
  17. Sponge
  18. 5-HTP Contraindications
  19. Documenting Code
  20. Fedora, QEMU, and 9p Filesystem Passthrough
  21. Inline C/Assembly In Bash
  22. A Funny Thing About C and C++
  23. CRCs vs Hash Functions
  24. GitHub Private Repos
  25. Memory Protection and ASLR on Linux
  26. C++ and Thoughts On Java, Go, and Rust
  27. The Curious Case of Position Independent Executables
  28. GNOME Terminal Server
  29. The x86-64 Red Zone
  30. Free Medical Data
  31. Ptrace, Syscall, and Python
  32. How GCC LTO Works
  33. Generator Comprehensions / Using any() and all() in Python
  34. Autofs
  35. The 64-bit Extensions to x86 Are a Mess
  36. Configuring GNOME
  37. How To Use Autotools
  38. GCC Generates Strange Code
  39. Parsing ELF symbol tables
  40. GPL Licensing
  41. A Ptrace Idiosyncrasy
  42. Demangling C++ Symbols
  43. C Functions Without Arguments
  44. Ptrace (continued)
  45. Using Ptrace For Fun And Profit
  46. SSH Again
  47. Effectively Using .bash_profile
  48. Self-Balancing Trees
  49. LD_PRELOAD Hacks

2015 37

  1. Misunderstanding mlock(2) and mlockall(2)
  2. Linux Swappiness
  3. Bash If/Equals
  4. Some Minor Site Changes
  5. The SF Housing Crisis
  6. Environment Variables
  7. Spacemacs
  8. The Halting Problem
  9. Binding On Port 0
  10. Color and TTYs
  11. Cornering At Low Speeds
  12. The Caveats of TCP_NODELAY
  13. Rdio
  14. The Hate Is Real
  15. Uninterruptible Sleep
  16. eCryptfs on Fedora
  17. Strace
  18. New Bike Day
  19. Envoy and Ed25519
  20. Android Developer Options & ADB
  21. Slack IRC Gateway
  22. Testing Code
  23. Large Data Files
  24. BitlBee Accounts
  25. Shoes
  26. The Thrill Of Riding
  27. BitlBee & HipChat
  28. Mission Bicycle w/ SRAM Automatix Hub
  29. The Commodification of Databases
  30. Rendering Videos From OpenGL Is Hard
  31. Linear Algebra; or, The Folly of Youth
  32. Surprising Things Found While Exploring Bash
  33. Cars And Turn Restrictions On Market St In San Francisco
  34. Being Self-Taught
  35. Resource Management in Garbage Collected Languages
  36. My Philosophy on "Dot Files"
  37. An Important Difference Between mysql(1) and MySQLdb