Hi, I'm Elliot 👋
I’m a product designer turned software developer keen on building, problem solving, performance and databases. As can be seen by the articles here, my interest in recent years has been in the Swift and Rust ecosystems. I still mostly write Swift professionally (and would love the opportunity to write Rust professionally), but I also believe the wonderful Elixir has a very bright future and am focussing a lot on that at the moment too.
I currently freelance but am interested in joining a team full-time writing Rust and/or Elixir. If your team is hiring, please get in touch!
Posts
- Let's Build a Proof of Concept Dynamic Image Generator with Elixir & Phoenix
- How to Write Custom Validations for Ecto Changesets
- SQLite and iOS: Advanced GRDB
- SQLite and iOS: Getting started with GRDB
- The UX of vague user input and educated guesses
- The scripts I use for blogging with Vim and Hugo
- Upgrading my Hackintosh from El Capitan to High Sierra
- How to group posts by date Daring Fireball style in Hugo
- Introducing Snooker: Lightweight spam detection for blog comments
- How to show the full post unless there’s a user defined summary in Hugo
- Google Drive and Hugo: The new publishing setup for this blog
- How to find an available TCP port in Rust
- Receiving 3rd party webhooks on a locally hosted web app
- Handling optional trailing commas in macro_rules!
- Introducing iron-middlefiddle: Route specific middleware made easy in Iron
- DeltaE 0.2.0
- Setting Iron’s response MIME type with middleware
- Now in beta: DeltaE – a library for quantifying the difference between two colors
- A workaround for box-shadow not passing through to the inside of a border
- How to seed a Postgres database with Knex
- How to set up environment varying code in your Rust web app
- MVC mappings for CtrlP
- Saving users a click with autofocus
- Hashing sensitive data in Rust with argon2rs
- Deleting the contents of a directory in Rust
- Matching, saving and replacing text with the regex crate
- How CSS selector specificity is calculated
- The building blocks of a healthy community
- Screencast #2: A tour of my .vimrc
- “Write a Fahrenheit to Celsius converter in Rust” solution
- Moving lines of code around in Vim
- Tracking commits to a GitHub repo with RSS
- Dynamic input values, .value and .getAttribute(‘value’)
- Improving webfont performance with FontFaceObserver and sessionStorage
- Screencast #1: How I manage my dotfiles with GitHub
- Configuration for a cleaner command history in ZSH
- Conditionals and regular expressions in Javascript
- jQuery to pure JS: Target each direct child of an element
- How to stop Javascript from running until an iFrame’s DOM is ready
- Jekyll: Create a list of all posts in the same category
- Jekyll: Display the full post unless a custom excerpt is specified
- Guard clauses in Javascript
- Now serving over HTTPS and HTTP2
- Setup CtrlP to use ripgrep in Vim
- Sorting lines in Vim
- jQuery to pure JS: Event listeners on dynamically created elements
- Search through a full text index of your browsing history with Falcon
- Using ripgrep and fzf instead of The Silver Searcher and CtrlP in Vim
- Deploy Middleman 4 to GitHub Pages
- How to switch from rvm to rbenv
- Better find and replace in Vim
- Readership branding WIP
- Greener Grass
- Specify: Quickly generate a shape with specific dimensions in Sketch
- Faster layer renaming in Photoshop
- My iOS to Mac screenshot workflow
- Save for Web in Photoshop CC 2015
- Quick Export in Photoshop CC 2015
- A post WWDC link roundup
- Advice for developers getting into design
- Collapse folders and styles after running Bjango Actions
- On hearing and accessibility
- Remove the default gradient background in ZBrush 4R7
- Let’s breakdown the ‘Save in Ember’ browser extension
- How to copy an RGB value in Photoshop
- The end of an era for Land Rover
- How to Create High Resolution ICNS Files
- A Guide to Optimising Photoshop Performance
- 300,000×300,000 pixel Photoshop files
- How to Export SVGs from Photoshop
- Designing Apps for the Visually Impaired
- Working with Type in Photoshop
- A Guide to Pixel Hinting