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