Joshua Davey

Experience Link to heading

Senior Software Engineer at Docker Link to heading

Aug 2023 - Nov 2024 Link to heading

At Docker, I was an engineer on the Scout team. Scout enhances customers’ supply chain security by identifying vulnerabilities and helping to remediate them. With over 2 million users, scaling issues were always top of mind. My expertise in Clojure and PostgreSQL allowed me to deliver new features and improve performance throughout the Scout platform.

Senior Software Engineer at Aclaimant Link to heading

Mar 2021 - Jun 2023 Link to heading

Aclaimant is a SaaS platform providing risk management workflow software. I was as member of the core team of full-stack developers. The core stack is Clojure, Clojurescript, and Postgresql, deployed via Kubernetes. Some accomplishments I’m proud of:

  • Designed, developed and deployed a new asynchronous job runner that improved on our existing serial polling model, leveraging Postgresql’s built-in pub/sub, graceful and forceful cancellation, multi-node scaling, and frontend live reporting.
  • Scaled up an ETL process that was taking multiple hours to complete in the best case and improved the run time to minutes by doing more batch processing on the server, and tranferring the data to the database using my clj-pgcopy library.

Senior Software Engineer at Root Link to heading

Mar 2020 - Mar 2021 Link to heading

Root is an auto insurance provider that uses machine learning to give safe drivers better rates. I worked on the Core Services team, helping to build and support customer billing, among other backend services.

Senior Software Engineer at Suiteness Link to heading

Sep 2017 - Feb 2020 Link to heading

I was one of a handful of full-stack developers for Suiteness, whose core stack is Clojure, Clojurescript, Postgresql, and Redis. Some accomplishments I’m particularly proud of:

  • Designing and developing a transitional event system in Postgresql. The end result was something like Kafka, but without the deployment overhead.

  • Moving our large, long-term cache from Redis to Postgresql. With hundreds of gigabytes of cache data, a disk-based (rather than RAM-based) cache was necessary. Using Postgresql in this way involved challenges to get the write performance up, but the end result scaled beautifully.

Senior Software Engineer at Sonian Link to heading

Nov 2016 - Sep 2017 Link to heading

Sonian (acquired by Barracuda) is a cloud-based email archiving company, with Clojure, Elasticsearch, Postgresql, RabbitMQ, and many other technologies in its stack. I was a member of the core team, which was responsible for developing and maintaining the email ingestion pipeline (including parsing and importing into Elasticsearch) and the customer metadata system.

Principal Developer at Hashrocket Link to heading

Sep 2010 - Nov 2016 Link to heading

While at Hashrocket, a software consultancy specializing in web applications, I worked with many different clients directly. I really enjoyed working through the technical challenges, and also the challenge helping clients find the best solution for their problem space.

After a year at Hashrocket, I became the de facto leader of the our Chicago office, a satellite office of the headquarters in Jacksonville, FL. As the leader of the office, I reported to our CEO, facilitated interpersonal conflicts between our office’s developers, served as a technical person on sales calls, and led local hiring.

Web Developer at Neoteric Design Link to heading

Jun 2008 - Sep 2010 Link to heading

Freelance Software Developer Link to heading

Sep 2005 - Jun 2009 Link to heading

Side Projects Link to heading

In addition to the projects listed below, my GitHub profile provides a fairly comprehensive overview.

clj-pgcopy Link to heading

Clojure, Postgresql Link to heading

This library came about when bulk loading data into Postgresql through the normal Clojure driver wasn’t fast enough, and was becoming the bottleneck in a nightly ETL process. It uses Postgresql’s binary COPY protocol to load data. For our primarily binary data set, it improved load performance three-fold, allowing us to scale up how much we could process each night.

6 Degrees of Kevin Bacon Link to heading

Clojure, Datomic Link to heading

I used IMDB’s data and Datomic to create a “graph” database for exploring actors’ and actresses’ relationships (the famous 6 degrees of Kevin Bacon game). Datomic is not a graph database, but using a combination of direct index access and graph traversal algorithms, I was able to get the kind of performance I wanted, without having to use a dedicated graph database. While the live version of the site is no longer deployed, the source code is still available on GitHub, and I wrote about the trade-offs involved in using Datomic as graph database, as well as tips for improved performance while doing bulk imports into Datomic.

Hammock Link to heading

Ruby Link to heading

A partial implementation of Clojure written in Ruby, with an interpreted runtime. After I had implemented about two-thirds of clojure.core, I paused work on it. As it turns out, an interpreted language on top of another interpreted language can be painfully slow. However, in the process of building, I learned a bunch about Clojure and its internals. I regret nothing.

Education Link to heading

Chicago Theological Seminary Link to heading

2006 - 2008 Link to heading

M.A., Religious Studies

Anderson University, Anderson, IN Link to heading

2002 - 2006 Link to heading

B.A., Religious Studies

Skills Link to heading

  • Expertise in: Clojure, Ruby, PostgreSQL, Clojurescript, Javascript
  • Significant Experience with: Rust, Go, Java, R, Datomic, and lots more