Devon H. O'Dell
Software engineer, debugger, and concurrency nut. Usually confused about something.
I work at Fastly as a technical lead for a team working on performance, features, introspection, and debugging. Apart from writing code, this also means that I spend a good deal of time on helping my team members be successful. Serendipitously, my personal interests lie in debugging, concurrency, performance, and teaching. I’m not currently looking for new career opportunities, but I am always interested in sharing my knowledge, and you may be interested in my resume.
My contributions to software projects are varied, ranging from documentation help to web development, firmware and device drivers to network and systems programming. Below is a non-comprehensive list of open source projects I’ve worked on (and a bit about what I did / do for those projects).
ASCIIToSVG: I love both ASCII art and Markdown. When I’m working on technical docs, it just makes sense to combine the two. Markdown handles the text aspect, but nothing really existed that adequately solved the other portion. Enter ASCIIToSVG.
Concurrency Kit: I’m a contributor to Concurrency Kit, a comprehensive library providing atomic primitives, many different spinlocks, wait-free and lock-free datastructures, and safe memory reclamation. I provided the original i386 port and do various other things as I see the need.
Ganglia: We track many many thousands of metrics at Fastly using Ganglia. At some point, it started getting slow, so I developed some patches to improve gmond performance. There’s still plenty of work to do to improve it further.
Go: I ported the Go language toolchain and runtime to FreeBSD on both amd64 and i386 architectures. I maintained cgo for a little bit as well.
Though some might argue that the music I listen to isn’t particularly healthy, I do listen to a healthy amount of it. Occasionally, I try to scrobble to last.fm.
Music is a passion, and maybe it follows that I try to contribute to this space as well. I’m not particularly proficient with any instruments, but I do play a MEINL cajon, an ESP Ltd H7-2015, and a Roland TD-11KV.
Whether you want to call it teaching, tutoring, or mentorship, I’ve always found one-on-one education to be the most helpful for me. In line with my passion for continuing education, I occasionally tutor people on subjects dealing with software engineering and computer science.
I enjoy giving lectures and presentations, though they’re mostly on software topics.
At QConSF 2016, I presented on a topic that has baffled me for years. Why are some folks more successful at debugging than others? Why’s debugging so hard? And what can we do about any of it? This talk is the result of a couple of years of spare-time research I’ve done into the pedagogical aspects of debugging, into psychology, computer science history, and to some extent a reflection of my own experience.
Currently, no video of this talk is available. I have created a rough transcript of the talk with slides for those interested. The slides themselves are also available on SpeakerDeck, but (like many of my presentations) are unlikely to be useful without context.
I spoke at VarnishCon 2016 on the topic of debugging. The talk ranges from the philosophy of debugging to psychological factors involved in the effective practice and learning of debugging strategies. It finishes with some practical approaches and application of these approaches we’ve taken when attempting to solve issues at Fastly.
This talk is largely about linearization, and how this property is used to guarantee correctness in lock-free algorithms. I gave this talk at Strangeloop and OSCon EU in 2015. Slides for the talk are available, and so are videos for my presentation at Strangeloop and my presentation at OSCon EU. (I uploaded the OSCon EU video because there are a few good questions at the end that I didn’t get to answer at Strangeloop).
Samy Al Bahra’s ACM queue paper called “Nonblocking Algorithms and Scalable Multicore Programming: Exploring some alternatives to lock-based synchronization” was the topic of a presentation I gave to the San Francisco chapter of Papers We Love.
A video of the talk is available; the paper is an overview of the challenges behind concurrency in modern software.
In no particular order:
Java Performance Tuning: Many people (including me, historically) complain about Java being horrendously slow. When I finally wrote some Java, I found out why: it’s much easier to write slow Java code than fast Java code.
I’ve also given talks at a number of other user groups, gatherings, and appeared as guest lecturer at JHU several times.
Blogging is a hobby, but I don’t keep up with it much. That said, I do enjoy writing. I coauthored two (now horrendously outdated) books on PHP: Professional PHP4 Programming and Professional PHP4 Multimedia Programming.
devon dot odell at gmail