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.
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.
Lectures / Presentations
I enjoy giving lectures and presentations, though they’re mostly on software topics.
Building a Debugging Mindset
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.
A video of this talk is available on InfoQ’s website. 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.
Using Race Conditions in Correct Concurrent Software
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).
Nonblocking Algorithms and Scalable Multicore Programming
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 wrote an article for ACM Queue on the psychology of debugging. It is available in the Jan/Feb 2017 issue.
devon dot odell at gmail