Welcome to Evan Klitzke’s web log.
|
Using std::unique_ptr With C APIs |
|
Handling Updated RPM Package Configuration Files |
|
An Annoyance With std::filesystem::last_write_time |
|
Don't use div(3) |
|
STL Iterators and Performance Revisited |
|
How To Use std::lower_bound and std::upper_bound |
|
How Tail Call Optimization Works |
|
Blog Generator Rewrite |
|
Generating Kernel Headers For BPF Kprobes |
|
Making helm-projectile-find-file Fast In Large Projects |
|
Running Build Commands Nicely |
|
Maintaining Sorted Lists In Python |
|
The CBC Padding Oracle Problem |
|
Using Local OPTIND With Bash getopts |
|
Weekend Hack: nossl.io |
|
Disabling Ubuntu MOTD Spam |
|
Bash Subcommand Aliases |
|
Beware of strncpy() and strncat() |
|
Lobotomizing GNOME |
|
Using gpg-agent Effectively |
|
An Overview of Bitcoin UTXOs |
|
Making Bitcoin Fast: Introduction |
|
How SystemTap Userspace Probes Work |
|
Using Emacs And RTags With Autools C++ Projects |
|
Indexing Git Repos With Hound |
|
Summing Integer Ranges With dc |
|
Generating Segwit Change Addresses in Bitcoin 0.15 |
|
An Observation About The Bitcoin Block Size Debate |
|
How Many Bitcoins Did Satoshi Nakamoto Mine? |
|
Notes on std::shared_ptr and std::weak_ptr |
|
Pyflame Packages |
|
Using Google Inbox With mailto Links In Firefox |
|
Dumping Multi-Threaded Python Stacks |
|
PTR Records Are Strange |
|
An Unexpected Python ABI Change |
|
Resurrecting the SRAM Automatix |
|
Production Tornado Deployment With Systemd |
|
Demystifying The Selfish Mining Bet |
|
Bitcoin Transaction Malleability |
|
Setting Up A Headless Raspberry Pi On Linux |
|
Smarter clang-format In Emacs |
|
Down the SSH_AUTH_SOCK Rabbit Hole: A GNOME Adventure |
|
The Traveling Salesman Problem Is Not NP-complete |
|
Declaring C String Constants The Right Way |
|
C String Literals Are Lvalues |
|
PATH_MAX Is Tricky |
|
Pinning GPU Memory in Tensorflow |
|
How To Host Your Own Private Git Repositories |
|
Bash $* and $@ |
|
Blog Rewrite In Go |
|
Efficient File Copying On Linux |
|
The Cult of DD |
|
Unix System Call Timeouts |
|
How To Play Pool At A Bar |
|
Neoliberalism |
|
An Introduction to Valgrind Memcheck |
|
All About Linkers |
|
In Defense of C++ |
|
Unexpected Places You Can And Can't Use Null Bytes |
|
How TCP Sockets Work |
|
Blocking I/O, Nonblocking I/O, And Epoll |
|
Goroutines, Nonblocking I/O, And Memory Usage |
|
Hanging A Process With Select |
|
Stopping A Process |
|
Stdout Buffering |
|
How To Nice A Bash Function |
|
Crosh/SSH and ChromeOS |
|
x86 Register Encoding |
|
Pyflame Dual Interpreter Mode |
|
Call Stacks and Link Registers |
|
Towers of Hanoi in x86 Assembly |
|
Go Compiles Infinite Loops Very Efficiently |
|
Declare Your Bash Variables |
|
Localhost |
|
Gocd |
|
Using ssh-agent and ED25519 Keys on GNOME |
|
Systemd Socket Activation |
|
Esc is Ctrl-[ |
|
F-Market Line Considered Harmful |
|
Sponge |
|
5-HTP Contraindications |
|
Documenting Code |
|
Fedora, QEMU, and 9p Filesystem Passthrough |
|
Inline C/Assembly In Bash |
|
A Funny Thing About C and C++ |
|
CRCs vs Hash Functions |
|
GitHub Private Repos |
|
Memory Protection and ASLR on Linux |
|
C++ and Thoughts On Java, Go, and Rust |
|
The Curious Case of Position Independent Executables |
|
GNOME Terminal Server |
|
The x86-64 Red Zone |
|
Free Medical Data |
|
Ptrace, Syscall, and Python |
|
How GCC LTO Works |
|
Generator Comprehensions / Using any() and all() in Python |
|
Autofs |
|
The 64-bit Extensions to x86 Are a Mess |
|
Configuring GNOME |
|
GCC Generates Strange Code |
|
How To Use Autotools |
|
GPL Licensing |
|
Parsing ELF symbol tables |
|
A Ptrace Idiosyncrasy |
|
Demangling C++ Symbols |
|
C Functions Without Arguments |
|
Ptrace (continued) |
|
Using Ptrace For Fun And Profit |
|
SSH Again |
|
Effectively Using .bash_profile |
|
Self-Balancing Trees |
|
LD_PRELOAD Hacks |
|
Linux Swappiness |
|
Misunderstanding mlock(2) and mlockall(2) |
|
Bash If/Equals |
|
Some Minor Site Changes |
|
The SF Housing Crisis |
|
Spacemacs |
|
Environment Variables |
|
The Halting Problem |
|
Binding On Port 0 |
|
Color and TTYs |
|
Cornering At Low Speeds |
|
The Caveats of TCP_NODELAY |
|
The Hate Is Real |
|
Rdio |
|
Uninterruptible Sleep |
|
Strace |
|
eCryptfs on Fedora |
|
New Bike Day |
|
Envoy and Ed25519 |
|
Android Developer Options & ADB |
|
Testing Code |
|
Slack IRC Gateway |
|
BitlBee Accounts |
|
Large Data Files |
|
Shoes |
|
The Thrill Of Riding |
|
BitlBee & HipChat |
|
Mission Bicycle w/ SRAM Automatix Hub |
|
The Commodification of Databases |
|
Rendering Videos From OpenGL Is Hard |
|
Linear Algebra; or, The Folly of Youth |
|
Surprising Things Found While Exploring Bash |
|
Cars And Turn Restrictions On Market St In San Francisco |
|
Being Self-Taught |
|
Resource Management in Garbage Collected Languages |
|
My Philosophy on "Dot Files" |
|
An Important Difference Between mysql(1) and MySQLdb |