recentpopularlog in

GameGamer43 : julia_evans   86

« earlier  
Service discovery at Stripe
With so many new technologies coming out every year (like Kubernetes or Habitat), it’s easy to become so entangled in our excitement about the future that we forget to pay homage to the tools that have been quietly supporting our production environments. One such tool we've been using at Stripe for several years now is Consul. Consul helps discover services (that is, it helps us navigate the thousands of servers we run with various services running on them and tells us which ones are up and available for use). This effective and practical architectural choice wasn't flashy or entirely novel, but has served us dutifully in our continued mission to provide reliable service to our users around the world.
Stripe_Blog  Stripe  Julia_Evans 
december 2016 by GameGamer43
Switching to Hugo
I just switched this blog from Jekyll to Hugo! This is a very small thing but maybe you will find it interesting if you find microoptimizing the way you generate your website interesting (like I do, apparently).
Hugo  Jekyll  Julia_Evans 
october 2016 by GameGamer43
What's devops?
I started reading “Effective DevOps” by Jennifer Davis and Katherine Daniels yesterday.

I’m still only part of the way through, but I realized while reading it that I had no idea what “devops” even meant. I had some vague idea that it meant “running programs, administrating servers, using chef and puppet, I don’t know”.
Julia_Evans  DevOps 
october 2016 by GameGamer43
What even is a container: namespaces and cgroups
The first time I heard about containers it was like – what? what’s that?
Linux_Containers  Containers  Docker  Dotcloud_Docker  Julia_Evans 
october 2016 by GameGamer43
"I just want to run a container!"
I wrote “what’s up with containers: Docker and rkt” a while ago. Since then I have learned a few new things about containers! We’re going to talk about running containers in production, not on your laptop for development, since I’m trying to understand how that works in September 2016. It’s worth noting that all this stuff is moving pretty fast right now.
Julia_Evans  Dotcloud_Docker  Docker  Containers  Linux_Containers 
october 2016 by GameGamer43
Spying on Android events without modifying source code
Let’s say you want to intercept events in an Android app, but don’t want to modify your source code. As a simple example, you want to add logging whenever the user clicks on any button in your app. I got a bit curious about whether it was possible so I spent some time last week figuring out how this might work. This was extra fun because I’ve never written and Android app, and it’s been years since I did anything in the Java ecosystem.
Google_Android  Programming  Julia_Evans 
october 2016 by GameGamer43
jvns/ruby-stacktrace
Have you ever wanted to know what your Ruby program is doing? ruby-stacktrace can tell you! Maybe.
Ruby  Julia_Evans  GitHub_Repos 
september 2016 by GameGamer43
How do you decide what to work on?
So, I work as a programmer. Until pretty recently I was working on machine learning, which is really fun and interesting. One thing I like about machine learning is -- it's important (and fun!) to actually spend time with your data manually and understand it and look at individual things.
Julia_Evans 
august 2016 by GameGamer43
Linux debugging tools I love
I gave a talk this weekend about debugging tools I love (here are the slides, such as they are). I think of these tools like a swiss army knife -- if something on your system is wrong or slow, in any programming language, knowing how to use them can really help you out. I've written pretty extensively on this, but I didn't have a central list to refer to. So! Here's the list of my current favorite tools. There are only 5! I've used all of them (except opensnoop) to debug actual problems.
Linux_Debugging  Julia_Evans  Debugging 
july 2016 by GameGamer43
A useful new strace feature
I just upgraded my computer to Ubuntu 16.04, from 12.04. So, expect occasional updates on what has happened in the last 4 years since I am a computer dinosaur.
Julia_Evans  Debugging  Strace 
june 2016 by GameGamer43
Using ltrace to debug a memory leak
Yesterday, I used ltrace to debug something for the first time! I was looking at a memory leak in a Rust async library with Kamal, and it was leaking 500 bytes of memory every time we made a request to the web server that used it. Not good!
Julia_Evans  Debugging 
june 2016 by GameGamer43
How to spy on a Ruby program
I love debugging tools. One of the most frustrating things to me is -- when I run a Ruby or Python program, I can't find out what that program is doing RIGHT NOW.
Julia_Evans  Debugging  GDB 
june 2016 by GameGamer43
What are SSL ciphers & session keys?
This morning I gave a lightning talk at work (about what I learned about CDNs last week). Lightning talks at work are super fun and great. I like hearing about what my coworkers are working on & thinking about a lot, and they're pretty lightweight to prepare.
SSL  OpenSSL  Web_Security  Julia_Evans 
may 2016 by GameGamer43
The Etsy site performance report is amazing
This is gonna be quick -- I just found out yesterday that the Etsy developer blog (code as craft) publishes a site performance report every quarter.
Julia_Evans  Etsy  Web_Performance  Performance 
may 2016 by GameGamer43
CDNs aren't just for caching
I joined the infrastructure team at work this week! So I've been learning a bunch of new things. Today I learned a ton about what CDNs are for.
Julia_Evans  CDN 
april 2016 by GameGamer43
Java garbage collection can be really slow
Yes, friends, I know this is news to absolutely nobody. But today I had up-close-and-personal problems with Java garbage collection for the first time so I am going to tell you about it.
Java  Julia_Evans 
april 2016 by GameGamer43
Some links on Java garbage collection
Basically every time I write a blog post like yesterday's on garbage collection, people reply with a huge amount of information about the topic; way more than I can take in immediately. This is great. Please do not stop doing that.
Java  Julia_Evans 
april 2016 by GameGamer43
you can take the derivative of a regular expression?!
And it's actually useful?!

Paul Wankadia sent me an email yesterday about regular expressions and I thought it was so interesting I decided to write up some of what I learned from it. I thought I knew how regular expressions worked on computers because I took a class on them in university (hi prakash), but it turns out that no, I did not know.
Julia_Evans  Regular_Expressions 
april 2016 by GameGamer43
Looking inside machine learning black boxes
I do machine learning at work. For a long time (the whole time I've had this job, 2 years), I've struggled with a bunch of questions about complicated machine learning models. Are black box models good? Should we be using them? What are the consequences? What can I do about it?
Julia_Evans  Machine_Learning  Programming 
april 2016 by GameGamer43
How do you do capacity planning?
I've been wondering recently about capacity planning. For example! Suppose you run a concert ticket website.
Julia_Evans 
march 2016 by GameGamer43
tcpdump is amazing
It took me 2 years, but I think now I love tcpdump. Before we go into why -- what's tcpdump?
Julia_Evans  tcpdump 
march 2016 by GameGamer43
What is "the stack"?
Last week I was at Papers We Love, my new favorite meetup. And someone mentioned "the stack" in passing, and I decided to ask -- what is that, really? I talked about it with Julian (who, like many people I know, is the best).
Julia_Evans 
march 2016 by GameGamer43
perf top: an awesome way to spy on CPU usage
If you read this blog, you might know that I love strace, so much that I wrote a zine about it. But strace has not ever been able to solve all my problems -- it only tells me about system calls, it can slow down my code up to 50x. Not ideal!
Julia_Evans  Perf 
march 2016 by GameGamer43
How does perf work? (in which we read the Linux kernel source)
perf is a profiling tool for Linux, that I've written about a few times on this blog before. I was interviewed on a podcast recently where the host asked me "so, julia, tell me how perf works!" and I gave a sort of unsatisfying answer "you know, sampling?".
Perf  Julia_Evans  Linux_Kernel 
march 2016 by GameGamer43
How to measure your CPU time: clock_gettime!
I’m super into measuring CPU time. If you have a slow program, the first thing you want to know is whether your program is spending that time calculating things on the CPU, or whether it’s waiting for something else (a disk, a network, user input).
Julia_Evans  CPU  Programming 
february 2016 by GameGamer43
TIL: clock skew exists
I learned some new things yesterday about distributed systems yesterday! Redis is a key-value store that can be distributed, and apparently it has a proposal for a locking system called Redlock.
Julia_Evans  Redis 
february 2016 by GameGamer43
How CPU load averages work (and using them to triage webserver performance!)
CPU load averages have long been a little mysterious to me. I understood that low is good, and high is bad, but I thought of them as a mostly inscrutable number. I have now reached a small epiphany about them, which I would like to share with you!
Julia_Evans  Linux  Linux_Development  Linux_Debugging 
february 2016 by GameGamer43
Sendfile (a system call for web developers to know about!)
The other day I learned about a new (to me) exciting Linux system call! (for newcomers, a system call is an operation you can ask the operating system to do). This one seems really important to know about if you’re configuring a webserver! So let’s learn about it.
Julia_Evans 
january 2016 by GameGamer43
Calling C from Rust
Yesterday I asked Kamal how to call C code from Rust, for a project I’m thinking about. It turned out to be a little harder than I expected! Largely because I don’t know Rust well, and fixing compiler errors is nontrivial. 30 minutes and some number of inscrutable-to-me compiler errors later, we figured it out.
C  Rust  Rust_Lang  Julia_Evans 
january 2016 by GameGamer43
Guessing Linux kernel registers
I have a long-standing project to try to learn to use ftrace, a Linux kernel tracing tool. As usual when I want to learn more, I turned to one of Brendan Gregg’s tools – the perf-tools repo on Github. There’s a whole delightful directory of examples. It’s the best.
Linux  Linux_Debugging  Linux_Development  Julia_Evans 
january 2016 by GameGamer43
A few notes on my CUSEC talk
I gave a talk today! If you came, thanks for coming! Here are some notes and links if you’d like to learn more!
Julia_Evans 
january 2016 by GameGamer43
Java isn't slow
This is probably obvious to many of you, but I wanted to write it down just in case.
Java  Julia_Evans 
january 2016 by GameGamer43
Surviving meetings while remote
I work remote. This means that in most of the meetings I’m in, I’m a remote participant. If you’re in an organization that has a lot of remotes, maybe this will be useful to you! There are two scenarios I want to talk about:
Julia_Evans  Remote  Remote_Teams  Remote_Work 
december 2015 by GameGamer43
Do the math on your stock options
Are you considering an offer from a private company, which involves stock options? Do you think those stock options might be worth something one day? Are you confused? Then read this! I’ll give you some motivation to learn more, and a few questions to consider asking your prospective employer.
Julia_Evans  Stock_Options  StartUp_Information  Business 
december 2015 by GameGamer43
Why Ruby’s Timeout is dangerous (and Thread.raise is terrifying)
This is already documented in Timeout: Ruby’s most dangerous API. And normally I don’t like making blanket statements about language features. But I had a bad day at work because of this issue. So today, we’re talking about Timeout! :)
Ruby  Julia_Evans 
november 2015 by GameGamer43
How I got better at debugging
I had a performance review last week where I was told, among other things, that I’m very good at debugging, especially difficult & confusing problems. I thought about this and I was like YEAH I AM. But I didn’t used to be. What happened?!
Julia_Evans  Debugging  Programming 
november 2015 by GameGamer43
Why you should understand (a little) about TCP
This isn’t about understanding everything about TCP or reading through TCP/IP Illustrated. It’s about how a little bit of TCP knowledge is essential. Here’s why.
TCP  Julia_Evans 
november 2015 by GameGamer43
DO YOU KNOW HOW MUCH YOUR COMPUTER CAN DO IN A SECOND?
Let's find out how well you know computers! All of these programs have a variable NUMBER in them. Your mission: guess how big NUMBER needs to get before the program takes 1 second to run.
Julia_Evans  Computers  GitHub_Repos 
october 2015 by GameGamer43
An argument for hiring junior developers
An argument for hiring junior developers, from a conversation I had with @kamalmarhubi and @zmagg. There’s an interesting follow-up discussion on Twitter. In particular, hiring less experienced people is a long-term investment.
Julia_Evans 
july 2015 by GameGamer43
Some easy statistics: Bootstrap confidence intervals
Hey friends! I am on a plane to Puerto Rico right now. When is a better time to think about statistics?
Julia_Evans  Statistics 
july 2015 by GameGamer43
Learning at open source sprints (no preparation required)
I’m someone who isn’t heavily involved in contributing code to OSS, and normally go to sprints just to learn something new, and not with any particular goals. This has never worked out that well for me, but I had a new idea yesterday! Maybe if you’re like me it will help you.
Julia_Evans  OpenSource  Open_Source_Community 
april 2015 by GameGamer43
A few spy tools for your operating system (other than strace!)
There are so many awesome tools you can use to find out what’s going on with your computer. Here are some that exist on Linux. They might exist on your OS too!
Julia_Evans  Debugging  Linux  Linux_Development 
april 2015 by GameGamer43
Seeing system calls with perf instead of strace
I’m at a local hackerspace this evening, and I decided to get perf working on my computer again. You all know by now that I’m pretty into strace, but – strace is not always a good choice! If your program runs too many system calls, strace will slow it down. A lot.
Julia_Evans  Strace  Perf  Programming  Debugging 
march 2015 by GameGamer43
Nancy Drew and the Case of the Slow Program
I specifically wanted programming-language-independent ways to investigate questions like this, and I guess people who follow me on twitter get me because I got SO MANY GREAT ANSWERS. I’ll give you a list of all the answers at the end, but first! We’re going to mount an investigation.
Julia_Evans  Debugging 
march 2015 by GameGamer43
1:1 topic ideas
Danielle Sucher started this great thread on twitter asking for ideas for what to talk about in 1:1s with your manager. I’m writing some of them up here so I don’t forget.
Julia_Evans 
march 2015 by GameGamer43
How the locate command works (and let's write a faster version in one minute!)
Sometimes I want to find all the Alanis songs on my computer. There are (basically) two ways to do this.
Julia_Evans  Linux_Development  Linux  Programming 
march 2015 by GameGamer43
How gzip uses Huffman coding
I wrote a blog post quite a while ago called gzip + poetry = awesome where I talked about how the gzip compression program uses the LZ77 algorithm to identify repetitions in a piece of text.
Julia_Evans  Programming  Gzip  Huffman_Coding 
february 2015 by GameGamer43
On reading the source code, not the docs
In my first programming job, I worked at a web development company and wrote modules for Drupal sites.
Programming_Blogs  Julia_Evans  Programming 
december 2014 by GameGamer43
Fear makes you a worse programmer
Yesterday morning, I asked on Twitter: Does anyone have good writing about fear + programming (and how being afraid to make important changes makes you a worse programmer?) and I feel like there’s this really important line between caution (a++ excellent) and fear (which holds you back from doing necessary work) A lot of super interesting discussion ensued, and I’d like to talk about some of it.
Programming_Blogs  Programming  Julia_Evans 
december 2014 by GameGamer43
LD_PRELOAD is super fun. And easy!
On Monday I went to Hacker School, and as always it was the most fun time. I hung out with Chase and we had fun with dynamic linkers!
Julia_Evans  C  Linux  Linux_Development 
november 2014 by GameGamer43
Working remote, 8 months in (seeing humans is important!)
I wrote up what it was like to be working remote 3 months after I started. 5 months later, I have some new thoughts!
Julia_Evans  Remote_Work 
november 2014 by GameGamer43
How to set up a blog in 5 minutes
Some people at Hacker School were asking for advice / directions for how to set up a blog. So here are some directions for a simple possible way!
Julia_Evans  Jekyll  Octopress  Blogs 
november 2014 by GameGamer43
Working remote, 8 months in (seeing humans is important!)
I wrote up what it was like to be working remote 3 months after I started. 5 months later, I have some new thoughts!
Julia_Evans  Remote_Work 
november 2014 by GameGamer43
How to set up a blog in 5 minutes
Some people at Hacker School were asking for advice / directions for how to set up a blog. So here are some directions for a simple possible way!
Julia_Evans  Blogs  Jekyll  Octopress 
october 2014 by GameGamer43
Strange Loop 2014
I spent some of last week at Strange Loop. I met lots of new curious, friendly, wonderful people, gave a talk that people really liked, played board games with friends, and generally had a great time.
StrangeLoop  Julia_Evans 
october 2014 by GameGamer43
How does SQLite work? Part 2: btrees! (or: disk seeks are slow don't do them!)
Welcome back to fun with databases! In Part 1 of this series, we learned that:
SQLite  Julia_Evans 
october 2014 by GameGamer43
How does SQLite work? Part 1: pages!
This evening the fantastic Kamal and I sat down to learn a little more about databases than we did before.
Julia_Evans  SQLite  Databases 
september 2014 by GameGamer43
How is a binary executable organized? Let's explore it!
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.
Julia_Evans  Programming 
september 2014 by GameGamer43
You can be a kernel hacker!
When I started Hacker School, I wanted to learn how the Linux kernel works. I’d been using Linux for ten years, but I still didn’t understand very well what my kernel did. While there, I found out that:
Julia_Evans  Linux_Kernel 
september 2014 by GameGamer43
What happens if you write a TCP stack in Python?
During Hacker School, I wanted to understand networking better, and I decided to write a miniature TCP stack as part of that. I was much more comfortable with Python than C and I’d recently discovered the scapy networking library which made sending packets really easy.
Julia_Evans 
september 2014 by GameGamer43
Day 2: netcat fun!
Today Alan taught me some things about networking. IN PARTICULAR that you can transfer a file to your friend on your local network with netcat.
Julia_Evans  Netcat 
august 2014 by GameGamer43
Asking questions is a superpower
There are all kinds of things that I think I “should” know and don’t. A few things that I don’t understand as well as I’d like to:
Julia_Evans 
june 2014 by GameGamer43
I can spy on my CPU cycles with perf!
Yesterday I talked about using perf to profile assembly instructions. Today 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.
Julia_Evans  Linux  Linux_Development 
may 2014 by GameGamer43
Debug your programs like they're closed source!
Until very recently, if I was debugging a program, I practically always did one of these three things:
Debugging  Julia_Evans  Strace 
april 2014 by GameGamer43
Rust Meetup March 2014
The San Francisco Bay Area Rust meetup for March 2014. Talks about Rust: building an operating system, the region system, more TBD.
Rust  Julia_Evans  Air_Mozilla 
april 2014 by GameGamer43
Hacker School's Secret Strategy for Being Super Productive (or: Help.)
At Hacker School, people who are new to programming learn incredibly fast. Hacker Schoolers learn Clojure and Scala and Erlang and Python and Ruby and Haskell and web programming and sockets. They write compilers and BitTorrent clients and generate music and create new programming languages and make games. At Hacker School, people get dramatically better at programming. It’s almost a magical environment, and there are many reasons that it’s like this.
Julia_Evans  HackerSchool 
march 2014 by GameGamer43
Pair programming
So I started at Stripe this week. I did a lot of pair programming at Hacker School, and I found it super productive. As of right now, there’s no culture of pair programming at Stripe. However, Stripe is a place full of delightful people who are willing to try new things. So this past week I’ve found myself explaining why I find pairing productive.
Pair_Programming  Julia_Evans  Stripe  Programming 
march 2014 by GameGamer43
Writing an OS in Rust in tiny steps (Steps 1-5)
I’m giving a talk tomorrow on writing a kernel in Rust.

My experience of writing a kernel that it was like jumping in puddles: it’s a lot of fun, and there are a lot of mishaps:
Julia_Evans  Rust  Operating_System_Programming 
march 2014 by GameGamer43
Recovering files using /proc (and spying, too!)
I’ve had a vague idea for years that /proc was a way the Linux kernel exposed its internals, and that I could look there to find things.
Julia_Evans  Linux  Linux_Development 
march 2014 by GameGamer43
Peeking into Linux kernel-land using /proc filesystem for quick’n'dirty troubleshooting
This blog entry is about modern Linuxes. In other words RHEL6 equivalents with 2.6.3x kernels and not the ancient RHEL5 with 2.6.18 kernel (wtf?!), which is the most common in enterprises unfortunately. And no, I’m not going to use kernel debuggers or SystemTap scripts here, just plain old “cat /proc/PID/xyz” commands against some useful /proc filesystem entries.
Linux  Linux_Development  Linux_Kernel  Julia_Evans 
march 2014 by GameGamer43
Pair programming
So I started at Stripe this week. I did a lot of pair programming at Hacker School, and I found it super productive. As of right now, there’s no culture of pair programming at Stripe. However, Stripe is a place full of delightful people who are willing to try new things. So this past week I’ve found myself explaining why I find pairing productive.
Pair_Programming  Julia_Evans  Programming 
march 2014 by GameGamer43
Using strace to avoid reading Ruby code
This is the start of a new category! I just started at Stripe yesterday, so this is in the things-I-am-learning-at-Stripe category. Yay!
Julia_Evans  Strace  Ruby 
march 2014 by GameGamer43
Spying on ssh with strace
In the shower this morning I was thinking about strace and ltrace and how they let you inspect the system calls a running process is making. I’ve played a bit with strace on this blog before (see Understanding how killall works using strace), but it’s clear to me that there are tons of uses for it I haven’t explored yet.
Strace  SSH  Linux  Linux_Development  Julia_Evans 
march 2014 by GameGamer43
A bookmarklet to flee from Mailman archives
okay I wrote a bookmarklet to help you flee from a Mailman archive towards Gmane . Yak shaving complete.
Julia_Evans  Mailman  JavaScript 
february 2014 by GameGamer43
YOU CAN BE A KERNEL HACKER
Did you see my talk at CUSEC? If you're interested in hacking on the Linux kernel, here are some more resources! If you have suggestions for learning about OS X or Windows, or you're interested in learning about BSD, let me know!
Julia_Evans  Linux_Kernel 
february 2014 by GameGamer43
Julia Evans Projects
Operating system in Rust (2013)
Visualizing Git workflows (2013)
Python TCP stack (2013)
Gunzip in Julia (2013)
Fun with kernel modules (2013)
Visualizing Unix command usage (2013)
Bike availability map (2011)
Master’s thesis (2011)
Julia_Evans 
february 2014 by GameGamer43
Three steps to learning GDB
Debugging C programs used to scare me a lot. Then I was writing my operating system and I had so many bugs to debug! I was extremely fortunate to be using the emulator qemu, which lets me attach a debugger to my operating system. The debugger is called gdb.
Julia_Evans  GDB  C  Programming 
february 2014 by GameGamer43
« earlier      
per page:    204080120160

Copy this bookmark:





to read