Daniel Clarke
The code I have written professionally is private and owned by the companies I've worked for. I'd like to share the following two projects in which I've prioritised implementation to focus on particular outcomes achievable in my limited free time.
SAT Solver in Rust
While building Working Title I got really interested in how Constraint Solvers work. I went down a rabbit hole of implementing one myself in rust. I implemented this CDCL SAT solver by first building the most naive version and then working through a series of refactorings to make it faster. I used the flame profile utilities available in the rust ecosystem to make the solver faster (I've since used the profiling utilities available in Haskell and I've been very impressed). It was interesting building datastructures that would work efficiently with rust's borrow checker (such as the fixed sized stack and slot map). I had a revelation for how laziness can yield massive performance improvements when introducing the watched two literals algorithm to this solver.
View Source on GitHub →Personal Journal using Rails
I've been doing a lot of reflection over the past few years and decided at some point I should write more. So I built myself a journal (it seems building yourself a journal app is somewhat in vogue). I chose to use Rails to build this because I wanted to absolutely optimise for spending my time on business logic and product details. I considered Rails, Django, and Phoenix, choosing Rails because of its legacy, but also because it came with built in solutions for deployment and building a frontend (I used hotwire for this). I wanted to make the main page of the Journal similar to Instagram with the idea being that you scroll your own life instead of other people's. Tapping on a tile opens the post which encompasses the image/text and the search functionality will search across all posts and aggregate all matching posts into a scrollable series. I really enjoyed building this for getting to exercise my product thinking brain. I've decided to keep this Journal as software just for me so I can't share links to it (and an empty Journal would be pretty boring to interact with anyway). But I can show it off over a call.
Designing the desktop and mobile views for this app was one of the most satisfying parts of this project.
Desktop View
Mobile View