Julia Evans

Hey! I'm Julia. Welcome to my blog. Here's every post I've ever written. If you want somewhere to start, try my favorites (the ones with stars next to them, below). Enjoy!

If you like these posts, you might also like my zines about strace & linux debugging tools.

A litmus test for job descriptions
Consistency vs availability (wat?)
What's devops?
Operations for software developers for beginners
What even is a container: namespaces and cgroups
Switching to Hugo
What happens when you start a process on Linux?
A list of Linux container software
"I just want to run a container!"
Getting things done
A swiss army knife of debugging tools: talk & transcript
Some questions about Docker and rkt
How I got a CS degree without learning what a system call is
Learning systems programming with Rust
New zine: Linux debugging tools you'll love
Asking good questions is hard (but worth it)
How (and why) I made a zine
Why do UDP packets get dropped?
Release it, then build it
How do you decide what to work on?
How does gdb work?
A few sketches
Benchmarking correctly is hard (and techniques for doing it better)
One way to make containers network: BGP
How do HTTP requests get sent to the right place?
Linux debugging tools I love
PolyConf 2016
Why do we use the Linux kernel's TCP stack?
Using ltrace to debug a memory leak
Should you be scared of Unix signals?
How to spy on a Ruby program
A useful new strace feature
Ideas for making better conference talks & conferences
Learning to like design documents
Three ways to solve hard programming problems
"advice" for aspiring tech bloggers
Notes from my PyData Berlin keynote
A few reasons to be skeptical of machine learning
Investigating Erlang by reading its system calls
homu + highfive: awesome bots that make open source projects easier
A second try at using Rust
A workshop on strace & tcpdump
What are SSL ciphers & session keys?
The Etsy site performance report is amazing
How does knowledge get locked up in people's heads?
CDNs aren't just for caching
you can take the derivative of a regular expression?!
Some links on Java garbage collection
Java garbage collection can be really slow
Looking inside machine learning black boxes
Some of my favorite blogs
I conquered thread pools! For today, at least.
Thread pools! How do I use them?
I/O matters.
How do you do capacity planning?
tcpdump is amazing
How does perf work? (in which we read the Linux kernel source)
Women-only spaces are a hack
Surprises in Ruby HTTP libraries
What is "the stack"?
perf top: an awesome way to spy on CPU usage
How to measure your CPU time: clock_gettime!
Why I love log files
Have high expectations for your computers
TIL: clock skew exists
How CPU load averages work (and using them to triage webserver performance!)
Fast integer sets with Roaring Bitmaps (and, making friends with your modern CPU)
Sendfile (a system call for web developers to know about!)
Guessing Linux kernel registers
Calling C from Rust
A few notes on my CUSEC talk
Why I ❤ Rust
Talking about stock options = awesome
Java isn't slow
Winning the bias-variance tradeoff
Surviving meetings while remote
Things you should know about stock options before negotiating an offer
2015: Year in review
How to trick a neural network into thinking a panda is a vulture
Women in Machine Learning 2015 (fun!!!)
Why Ruby’s Timeout is dangerous (and Thread.raise is terrifying)
How I got better at debugging
Why you should understand (a little) about TCP
Docker is amazing
PAPERS ARE AMAZING: Profiling threaded programs with Coz
A millisecond isn't fast (and how we made it 100x faster)
Is machine learning safe to use?
An argument for hiring junior developers
Some easy statistics: Bootstrap confidence intervals
AdaCamp Montreal 2015
A zine about strace
Learning at open source sprints (no preparation required)
A few spy tools for your operating system (other than strace!)
Seeing system calls with perf instead of strace
Senior engineering & fantasy heroes
Nancy Drew and the Case of the Slow Program
1:1 topic ideas
You can choose who submits talks to your conference
How the locate command works (and let's write a faster version in one minute!)
How gzip uses Huffman coding
How I learned to program in 10 years
A/A testing
Why a C++ programmer might say "I could never write Python"
Data Day Texas 2015
On reading the source code, not the docs
Programming doesn't belong to men (it belongs to me)
Fear makes you a worse programmer
Reproducing awesomeness
Diving into concurrency: trying out mutexes and atomics
Spying on Hadoop with strace
LD_PRELOAD is super fun. And easy!
PyData NYC (I gave a machine learning talk! yay!)
Harm reduction for developers
Fun with machine learning: logistic regression!
Fun with machine learning: does your model actually work?
What women in technology really think (150 of them, at least)
Working remote, 8 months in (seeing humans is important!)
How to set up a blog in 5 minutes
How does SQLite work? Part 2: btrees! (or: disk seeks are slow don't do them!)
How does SQLite work? Part 1: pages!
Strange Loop 2014
You can be a kernel hacker!
How is a binary executable organized? Let's explore it!
What happens if you write a TCP stack in Python?
Pair programming is amazing! Except... when it's not.
Open sourced talks!
Ruby Rogues podcast: systems programming tricks!
Fun with stats: How big of a sample size do I need?
How I did Hacker School: ignoring things I understand and doing the impossible
!!Con talks are up
Machine learning isn't Kaggle competitions
Asking questions is a superpower
Working remote, 3 months in
Should my conference do anonymous review?
Anonymous talk review is amazing.
Diving into HDFS
I can spy on my CPU cycles with perf!
Computers are *fast*!
Stopping to think
Don't feel guilty about not contributing to open source
Debug your programs like they're closed source!
♥ PyCon
Becoming a better developer (it's not just writing more programs)
"Ask if you have questions" isn't enough
Reports from remote-land: remote pairing works great!
Recovering files using /proc (and spying, too!)
My Rust OS will never be finished (and it's a success!)
Writing an OS in Rust in tiny steps (Steps 1-5)
Debugging shared library problems with strace
Hacker School's Secret Strategy for Being Super Productive (or: Help.)
Pair programming
More practical uses for strace!
Using strace to avoid reading Ruby code
A resume workshop idea
A bookmarklet to flee from Mailman archives
Spying on ssh with strace
"How was Hacker School?"
A few blogs I really like
Three steps to learning GDB
Sounding confident in interviews
CUSEC = fun
What my technical interviews have looked like
You should give talks. They will be awesome. Here's why!
4 paths to being a kernel hacker
Some things my kernel can't do
Sketches for a graph layout engine
Questions I'm asking in interviews
Coding strategies
When is "guys" gender neutral? I did a survey!
A pandas cookbook
Understanding how killall works using strace
Day 46: Never Graduate
Day 45: I now have Rust code for executing executables!
Day 44: qemu + gdb = so great
Day 42: How to run a simple ELF executable, from scratch (I don't know)
Day 41: Linkers are upsetting
Day 39: Writing malloc wrong, for fun
Day 40: 12 things I learned today about linkers.
Day 40: Linkers are amazing.
Day 38: After 6 days, I have problems that I can't understand at all
Day 37: After 5 days, my OS doesn't crash when I press a key
Day 36: On programming without malloc
Day 35: Types in Rust, for beginners
How to call Rust from assembly, and vice versa
Videos from PyData NYC are up!
What happens when you run 'Hello, world'
Writing a kernel using rustboot & rust-core
Day 34b: Writing curl using my TCP stack
Day 34: The tiniest operating system
Day 33: How to make music with ClojureScript
Day 32: Magical Orchestra!!!
Day 31: Binary trees with core.logic!
Day 30: Making music in Clojure with Overtone. Clojure bugs with laziness! Fun!
Day 29: Trying out Emacs!
Day 28: Made a git workflow visualization webapp!
Day 27: Automatically testing changes in state! Visualizing my Git workflow! Floats!
Day 25: ACK all the things
Day 26: Trying to describe the TCP state machine in a readable way. Failing.
Women in Technology workshop at PyData NYC
Day 24: Unit testing this TCP library
Day 22: Got some TCP packets back!
Day 23: Started writing a TCP stack in Python
NYC Python talk
Day 21: Trying to TCP
Day 19: A few reasons why networking is hard
Day 20: Traceroute in 15 lines of code using Scapy
Day 18: ARP cache poisoning (or: In ur connection, sniffing ur packets)
Day 17: How to write a buffer overflow exploit
Day 16: gzip + poetry = awesome
Do Rails programmers use node.js? Visualizing correlations in command usage
Day 15: How a .gz file is structured, redux
Day 14: When it's hard to write tests, that's when I should be testing
Day 13: Off by one errors
Day 12: Why Julia likes Julia
Day 10: Goals. Goals? Maybe I need to be *reading* more code?
Day 11: How does gzip work?
Day 9: Bytecode is made of bytes! CPython isn't scary!
Day 8: Julia writes Julia! And remembers that open source is hard.
Day 7: An echo server in Clojure
Day 6: I wrote a rootkit!
Day 5: I wrote a kernel module!!!
Where to find bike sharing systems' data feeds
Day 4: Processes vs threads, and kernel modules!
Day 3: What does the Linux kernel even do?
Day 2: netcat fun!
Day 1: What does a shell even do?
Hacker School Day 1: Messing around with the stack in C
Hacker School Day -4: unit testing in C. checkmk!
Julia Serano's 'Excluded'
PyData Boston 2013
Open Data Exchange 2013
Transit maps: 1941 vs 2011
Graphing bike path data with IPython Notebook and pandas
Trying out Octopress
Montreal All-Girl Hack Night #2: now with cookies
Montreal All-Girl Hack Night #1: AMAZING