Table of Contents
The purpose of this page is to keep track of the interesting articles that I had read, and which I may want read again at some point. Unfortunately, the search engines are no longer capable of filtering the obvious blog spam out of their search results, therefore I have to maintain this index manually. These articles are mostly about software development, or they are related to it in some arbitrary way.
If you are at the beginning of your career, you may find some of these articles a bit too complicated. That’s okay. Take your time, read slowly, research unknown terms, and in the worst case, read it once again a few months later. Sometimes, I find an article easier to read if I print it out and write my own notes on the side.
Tech
Design
Semantic compression: how to structure your code and make it as simple as possible.
On designing and deploying Internet-scale services [PDF]: a set of best practices for designing and developing operations friendly services, based on the experiences of managing Windows Live Services platform.
The error model: in depth description of error handling in code, tested on a modified C# programming language that was used for Midori (research project to explore ways of innovating throughout Microsoft’s software stack).
Decision tables: how to represent branching and conditional computations in your code.
API evolution the right way: on evolving your API.
Out of the tar pit [PDF]: describes common causes of the complexity that appears in software, and general approaches which can be taken to eliminate them.
Operator precedence by textual substitution: a trick for parsing operator priority.
Sidenotes in web design: a description of different approaches to placing side notes into your web pages.
Performance tuning
The fallacy of premature optimization [PDF]: why bother optimizing programs if the Moore’s Law is going to take care of your bottlenecks?
Extreme HTTP performance tuning: 1.2M API req/s: serving 1.2 million JSON API requests per second on a single machine.
5000x faster CRDTs: An adventure in optimization: speeding up Conflict-Free Replicated Data types (fancy programming tools which let mulitple users edit the same data at the same time).
Storage subsystem performance: analysis and recipes: comprehensive overview of storage systems and tuning their performance.
Memory
The lost art of structure packing: how to reduce the memory footprint of your program and consequently speed up your program.
What every programmer should know about memory [PDF]: in depth description of how computer memory works. It’s probably slightly dated by now, but it’s still the most comprehensive resource on this topic.
Full-system dynamic tracing on Linux using eBPF and bpftrace: a tutorial on Linux tracing.
Redis crashes: on dealing with crashes in Redis.
Virtual Memory Tricks: on using virtual memory allocations to simplify your code.
Misc
Real-time programming with Linux: an overview of creating a real-time C++ application on Linux from scratch.
Text editing hates you: description of problems that you will have to deal with if you decide to roll your own text inputs.
Slow software: an article about human perception of software sluggishness.
I wrote the fastest hashtable: comprehensive description of a fast hashtable design.
Choosing to stay out of the community: why some programmers prefer to stay out of the open source world. See also I gave away the pancakes and I am still broke.
Storing UTC is not a silver bullet: describing software timezone related issues.
Tools for a culture of writing: on communicating design decisions to other engineers.
Starting an ISP is really hard, don’t do it: describing all sorts of challenges one encounters when running your own ISP (Internet Service Provider).
Discipline doesn’t scale: why “you just have to be more careful” approach doesn’t work in a large group of people.
Demystifying Fourier analysis: building an intuition on how the the Fourier transform works.
Career
Personal development
You and your research: Richard Hamming’s thoughts on achieving great results and becoming a respectable member of your field.
Ten lessons I wish I had been taught [PDF]: Gian Carlo Rota’s advice on holding lectures and academic life.
Ten lessons I wish I had learned before I started teaching differential equations [PDF]: Gian Carlo Rota’s insights on teaching.
Public intellectuals have short shelf lives - but why?: on aging and how that affects your career.
Alternative Sources of Advice: on finding sources of advice.
Writing & Presentation
The craft of writing effectively [video]: thoughts and recommendations about writing the type of articles that readers will want to read.
PowerPoint does rocket science: analysis of a PowerPoint slides used in engineering presentations at NASA.
Guidelines on writing Philosophy Paper: how to approach writing a lengthy argument.
Formatting plain text
Tips on formatting Markdown lists: how to format Markdown (or any other plain text format) to improve its readability in the raw format.
Semantic line breaks: how to format plain text to make it easier to read in its raw format. See also: Semantic linefeeds
Company relations
People can read their manager’s mind: explains why are obviously broken things in your company not fixed, despite everyone agreeing that they should be.
The care and feeding of software engineers or why are engineers grumpy: what makes an engineers grumpy and how to make them happy.
Simple Sabotage Field Manual [PDF]: a description of all the things that one could do to sabotage an organization. For office workers, the most interesting content starts with a section “General Interference with Organizations and Production” on a page 32.
Interviewing
- Master Foo and the recruiter: on asking for years of experience in a certain technology.
Sales & Business
Selling to the Fortune 500, government, and other Lovecraftian horrors: business to business (B2B) selling tips.
When and how to charge for your content: things to keep in mind when you are beginning to charge for your knowledge and services.
In thrall to scarcity: how to create free software and make money at it?
The Pmarca Guide to Startups: some information on how to tackle problems that appear in startups.