All blogs / Distributed systems / cloud
Evan Jones
I'm a software engineer at Datadog in New York. I previously worked at Bluecore , fixed interesting bugs at Twitter, and taught a database class at Columbia as an adjunct. I was a co-founder and CTO of Mitro, a password manager for groups and organizations , along with Vijay Pandurangan and Adam Hil
Distributed systems / cloudPerformance / optimizationNetworkingDatabasesCEngineering blogs
- Posts
- 282 from 19 Apr 2001 to 19 Nov 2023
- Posting
- quiet since 2023
- Kind
- personal blog
- Feed
- https://www.evanjones.ca/index.rss
2023 6
2022 5
2021 3
2020 1
2019 5
2016 2
2015 3
2014 1
2011 1
2005 3
2001 1
Undated 251
- Network Latencies in the Data Center
- TCP and gRPC Failed Connection Timeouts
- Advice on looking for a new software engineering job
- Valuing Stock Options for Startup Employees
- Durability: Linux File APIs
- To Update or Not to Update?
- Limit Work for Reliable Servers (with examples in Go/gRPC)
- Networked games: Playing in the past or future
- Saving Space by Mapping Big Objects to Small Integer IDs
- Debugging Go with stack traces
- Load Balancing gRPC services
- PProf Web: A public web UI for the PProf profiler
- You can use floating-point numbers for money
- Kube Web Proxy: Easy access to internal Kubernetes services
- Google Cloud E2 machines: Overselling (finally) comes to the cloud
- Inside your cloud bill: where is the money going?
- Auto scaling changes performance bugs from an outage into a cost problem
- Making Writers Read
- Computer Bits Episode 1: How does a CPU work?
- The Unreasonable Effectiveness of Linear Search
- A Portable Cloud Experiment: SFTP Cloud Storage Sync
- Code that debugs itself: Fixing a deadlock with a watchdog
- Preventing server overload: limit requests being processed
- Quick Hack: Terminal apps in your browser
- Serverless: Platform-as-a-Service done right?
- BigQuery Tools: Dataset and table size report
- Tracing a Python performance bug on App Engine
- fork() without exec() is dangerous in large programs
- Corrupt data over TCP: It was a kernel bug!
- Go Gotcha: Don't take the address of loop variables
- Debugging Java Native Memory Leaks
- Finding the Four Month Bug: A debugging story
- SQLite: A surprisingly good data analysis tool
- Frameworks: Necessary for large-scale software
- Dotfiles: Automating my software setup
- Visualizing Vector Clocks
- Correct incremental builds with Makefiles
- JavaScript modules in the browser, Node, and Closure compiler
- Go: It's about engineering, not type systems
- Real bugs found by the Closure JavaScript Compiler
- Chrome's developer tools are a competitive advantage
- Trouble with Transactions NE DB Summit 2014
- Required reading: Unlocking the Clubhouse
- Google Apps Directory API: Unofficial guide
- Dependency injection and Guice in two minutes
- Yext's build system ICBM: An example of "worse is better"
- Mitro: No longer stealthy
- Static type checking: More productive for large projects
- A quick and dirty guide to finding Java memory leaks
- Social networks: If you can't beat them, join them
- Databases should encrypt unique IDs
- Trouble with transactions
- New York State: Unfriendly to small businesses
- Integer division: Results are language-specific
- Builds are Complicated: Java
- Python Module Name Clashes
- Kill "Summary Paragraphs" in Academic Papers
- Builds are Complicated: C/C++
- Building Software is Hard (for good reasons)
- A TCP "stuck" connection mystery
- LMAX Disruptor: Fast Concurrent Ring Buffer
- Producer/Consumer Tasks and the Scheduler
- Making Writes Durable
- Intel Consumer SSDs: Not appropriate for databases
- Write Latency and Block Size
- More Than You Wanted to Know About Checksums
- Linux Write Caching
- Debugging with a Circular Buffer
- Ken Thompson's "Trusting Trust" Quine
- Buffer Overflows 101
- Weak Isolation in Relational Databases
- Building Reliable Storage on Virtual Infrastructure
- Open Cirrus: Open Source Cloud Infrastructure
- State of Toronto Espresso
- Deploying Distributed Applications
- Model Checking a Paxos Implementation
- Thread-Safe Random Numbers
- Opt-in Flash
- New England Database Day 2009
- Subversion Hooks Stored in the Repository
- Git Command Shortcuts (aliases)
- Random Ubuntu Tips
- A Quick Guide to Confidence Intervals
- Gigabit Ethernet Latency with Intel's 1000/Pro Adapters (e1000)
- Core Engineering Skill: Analyzing Data
- TCP Performance Gotchas
- Rvalue References: Because C++ is not Complicated Enough
- Yahoo Chubby Zookeeper
- Portable Linux Binaries
- Randomized Testing
- Python Code Coverage Tools
- Paper Password Tokens
- Hacking echod
- HOWTO Use User Mode Linux as a Normal User
- Versioning is Hard
- HOWTO Watch Technical Talks Online
- A Brief History of Concensus, 2PC, and Transaction Commit
- Policy-Based Data Structures
- How to Fix an Espresso Grinder
- Conditional Statements with C++ Templates
- Prediction: Sun is Building a Parallel Distributed File System
- Secure Email is Dead
- Use Atomic Operations for Updating Data
- High-Performance Server Architecture
- "Hitting Compiler Limits on Number of Methods Per Class"
- Finding Callers of Thread-Unsafe Functions
- Benchmarking on Hyperthreaded CPUs
- Patent Warfare: IBM vs. Amazon
- Syntax Trees, Parsers, and New Languages
- Buy Good Headphones
- Concurrency is Hard
- Dynamic Web Content is Bad
- Code Reviews Are Good
- Meld
- Billg
- Coding Standards
- Migrated to a New Computer
- Using Unicode in C/C++
- Python Memory Management Part 3: The Saga is Over
- Burn, Capacitor, Burn!
- Vector Graphics and Animation Formats
- Part Two: Things Java Got Wrong
- Part One: Things Java Got Right
- Frequency Allocation Posters
- Tim Bray: Hard Open Problems in Network Computing
- Improving GTK Text Performance
- High-Performance Server Architecture
- Lessons from the Jikes RVM
- VMware Player
- Spyware, Trusted Computing, Cheating, and Online Games
- Buying Movies Online
- Battle for Wesnoth
- New Web Server Performance Champion
- Debugging SSL Applications in Python
- Tips for Writing a Research Proposal
- "Secure" Booting the X-Box
- Atheros + Linux = Happy
- Google Map Hacks: Bike Route Distance
- Portable Byte-Swapping Functions
- Stupid Bugs: Implementing Comparators
- Context Free
- Python Memory Management Part 2
- Parallel Python
- Canadian Espresso Machine Vendors: Part 2
- CPU Architecture is Dead
- Implementing Python
- The Canadian Coffee Industry Sucks
- The Inventor of Ethernet
- Useful Python Modules: PyRSS2Gen
- Python Challenge
- Convex Hulls
- Schneier on Spam
- Dynamic Data Visualization
- Fallout 2
- NFS Shell
- IPv6 API Documentation
- Korean Python Documentation
- Speex and Open VoIP
- Interactive Python Command Completion
- EJ's Guide to Washington, DC
- Instiki
- iPhoto for Windows Part 2
- Using EPS Files in Microsoft Office for Mac OS X
- Mixing Digital Audio
- RSS Marketing
- Wikipedia Needs Help
- Getting Started With ns2
- The Computer Industry is Evil
- Quote of the Day
- Unicode Security
- Testing Memory: memtest86
- Laptop Batteries
- Skype Rocks Part 2
- Security ... What!?!
- First My Hard Drive, Now My iPod
- Fallout
- The Failure of Email Encryption
- Debian Linux and Gnome Revisited
- Women in Math, Science, and Engineering
- Net: A Horribly Addictive Flash Game
- Hard Drive Crash Part 3
- Essential Mac OS X Software
- SSHKeyChain
- Java 1.5 on Linux
- In Defense of Simple
- Hard Drive Crash Part 2
- Tips for Long Running Computations
- Doom 3 is Amazing
- Simultaneous Multithreading Performance
- Classic Games: Adventures
- ISP Traffic = BitTorrent
- AntiRSI
- Converting PDFs to Images on Mac OS X
- Inspiration and Human Achievement
- Python Pitfalls: Scope
- Beautiful Text
- Hard Drive Heart Attacks
- iPhoto for Windows?
- CarbonSketch: Great Mac OS X Example Application
- North American Cities Are Broken
- Gush: A Jabber Client
- Collected Mac OS X IPv6 Wisdom
- Location Service for DHCP
- Basic 802.11 Statistics
- Practical Versus Theoretical
- Hiding Email Addresses from Spammers
- Donations of Web Space and Technical Support
- The Future of Wireless Networks
- Using PAM Authentication With Jabberd
- I Love Wired's Writing Style
- Do it Yourself VoIP
- The Vatican's Astronomer
- Why Microsoft's Monopoly Depresses Me
- Linux Server Configuration
- Tools and Toys
- USB Debugging Tips
- StupidCMS Here We Come
- Tunnelling Through SOCKS Proxy Servers
- Locking Your Mac OS X Screen Before Sleeping
- Raytracer: Finished
- Raytracer: Polygons
- Raytracer: Cubes
- Raytracer: Phong Shading
- Raytracer: Adaptive Anti-aliasing
- Raytracer: First Iteration
- 0wnz0red
- Ubiquitous Home Entertainment Port
- Lessons from Dynamic Languages: Lookup Tables
- Towards a New Paradigm for C++ Program Development
- I love my graphics class
- Blosxom Content Management: Not going to happen
- Mac OS X Anti-aliasing
- Association Engines
- Modern Programming
- Coping with Change
- An Argument for Pervasive Computing
- The Hundred-Year Language
- Courses for 4th year
- Bloxsom Content Management
- Blind Melon - Walk
- You know you are turning into an adult when ...
- Books: Hacker's Challenge 2
- Books: Test-Driven Development by Example
- Data Emergence
- "Computers are useless. They can only give answers" - Pablo Picasso
- The Serendipitous Web
- More "intertwingly" search engines
- Joining the blog world
- database group
- Lookup tables.pdf
- Hstore cc final.pdf