Skip to content

Instantly share code, notes, and snippets.


Title: Systems programming as a swiss army knife

Duration: 30 minutes


You might think of the Linux kernel as something that only kernel developers need to know about. Not so! It turns out that understanding some basics about kernels and systems programming makes you a better developer, and you can use this knowledge when debugging your normal everyday Python programs.

We’ll talk about how to use strace, ltrace, /proc, and friends to debug your servers and your misbehaving programs. A few specific tricks we’ll cover:


machine learning mistakes

This isn't an academic machine learning conference. This isn't a business conference. Nobody will tell you "Big data is at the foundation of all the megatrends happening today". This is a conference for people who work with data all day and have stories to tell about it.

This is a conference where we talk about what you do when you have a dataset and a business problem you're trying to solve and

  • you're not sure how to map your actual business problem to a metric
  • and you have lots of data but 80% of it is unlabelled and how should you handle that
  • and you start with a simple model and it does pretty well but could it do even better? and you're not sure.
View !!Con

Abstract for your talk

strace lets you look into the soul of a program and see how it works. Without even seeing the source code! ANY program. I've become kind of obsessed with it and I'd like to share my obsession with you. We'll learn about system calls and go through a couple of practical examples of how to use strace to solve your everyday programming problems.

Timeline for your talk

1: Hello!!!!

2-4 Okay what even is strace?!



  • Bayesian statistics and Markov chains
  • how do you decide what sample size is big enough?
  • likelihood ratio tests
  • go through all of the different distributions. I only really know the normal one :) (this is a really cool question actually! Understanding what distributions come up in real life and how to handle them is super interesting .)


jvns / gpa_vs_team_size.ipynb
Created May 22, 2014
Does team size affect CodeClimate GPA?
View gpa_vs_team_size.ipynb
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Did you see my talk about strace? Do you want to know more? Here's your chance!

If you didn't, and you want to watch it, go watch it! Spying on your programs with strace

more strace resources (Linux-only)



Yesterday we talked about perf. Let's start using perf!

I learned how to make flame graphs with perf today and it is THE BEST. I found this because Graydon Hoare pointed me to Brendan Gregg's excellent page on how to use perf.

Wait up! What's perf? I've talked about strace a lot before (in Debug your programs like they're closed source). strace lets you see which system calls a program is calling. But what if you wanted to know

  • how many CPU instructions it ran?
  • How many L1 cache misses there were?

How to read an executable

I used to think that executables were totally impenetrable. I'd compile a C program, and then that was it! I had a Magical Binary Executable that I could no longer read.

It is not so! Executable file formats are regular file formats that you can understand. I'll explain some simple tools to start! We'll working on Linux, with ELF binaries. (binaries are kind of the definition of platform-specific, so this is all platform-specific.)

Let's write a simple C program, hello.c:

#include <stdio.h>