Zachiah Sawyer

Long list of technologies I have experience with (incomplete)

  • JavaScript
  • TypeScript
  • Python
  • Ruby
  • Golang
  • Rust
  • PHP
  • Git
  • GitHub
  • GitHub Actions
  • Node.js
  • Jest
  • Vitest
  • Playwright
  • Webpack
  • Rollup
  • Vite
  • Esbuild
  • HTML
  • ReactJS
  • SvelteJS
  • VueJS
  • SolidJS
  • jQuery
  • RxJS
  • Socket.io
  • HTMX
  • CSS
  • TailwindCSS
  • WindiCSS
  • UnoCSS
  • CSS Modules
  • Bootstrap
  • Bulma
  • MaterializeCSS
  • Vuetify
  • Quasar
  • Material UI
  • Flask
  • Django
  • Ruby on Rails
  • Laravel
  • Actix web
  • Axum
  • Wordpress
  • Express
  • Koa
  • Matplotlib
  • Prisma
  • Firebase
  • Supabase
  • MySQL
  • MariaDB
  • PostgreSQL
  • Azure
  • Twilio Flex
  • Linux
  • Debian
  • Ubuntu
  • Amazon Linux
  • Amaon EC2
  • NixOS
  • Nix
  • Arch Linux
  • MacOS
  • Homebrew
  • Bash
  • Zsh
  • Docker
  • Docker Compose

Development Tools I Use

Language experience

  • Rust (1yr)
  • TypeScript (3-4yrs)
  • PHP (2yrs)
  • Python (3yrs)
  • Golang (1yr)
  • Ruby (1yr)

Really want to learn

  • C
  • Haskell
  • OCaml
  • Swift

About my development journey

As far as I can tell, I started programming in March 2018. There was a book at the library called "Electrical Engineering for Dummies" which I saw and decided to read. At the end there was a section on programming a raspberry pi using python so I decided to get a raspberry pi and start with that. Before I knew it I was more into programming then electrical engineering. After that I continued learning many different programming languages, frameworks, tools, and such over the years.

I started freelancing in October 2019 and I’ve continued freelancing up until now. I have had the opportunity to work for various individuals and companies and in so doing to work on a myriad of different things including frontends, backends, web scrapers, and data visualizations.

In May of 2023 I started working for CloudOne (an omnichannel digital marketing company) in Vancouver WA. I worked there for just under a year until I moved to Idaho and had to end that engagement. In this role I worked as a Full Stack Software Developer. My day to day involved updating APIs written in PHP, rewriting and patching legacy PHP code, writing new sites in modern stacks and implementing features for the company backend interface as they were needed.

I am currently actively searching for a job in software. If you think I'd be a good fit for your company please contact me at (360) 369-9991.

About my approach to software development

I am very passionate about writing good software. There are numerous things that go into whether or not software is "good" but here are some of the top things in my opinion:

  • Correctness: Software should be correct. If it doesn't do what it is supposed to, then not much else matters
  • Accessibility / Ease of use: If your users can't use your software then it doesn't matter how good the idea is or how interesting the internals are
  • Reliability: No one likes to use software that isn't reliable. Users shouldn't have to look for workarounds in order to use your software. It should "Just Work" as close to 100% of the time as possible. It is important to consider edge cases that aren't in the happy path.
  • Maintainability: A hallmark of bad software is that it is difficult to maintain. Of course this is subjective, but if it takes exponentially longer to develop each new feature then you know something has probably gone awry. Also I don't think that software is more or less maintainable inherently because it follows some particular design pattern or philosophy. I have a preference for functional programming where it makes sense, but also use imperative and object oriented programming patterns when I feel they better suit the problem.
  • Performance: Software should be performant as a default. There are some cases where writing code in the most performant way requires sacrificing heavily on some of the other items on this list, and for those cases I will often sacrifice a bit of performance. The important thing in my opinion is that you always have performance on your mind as you develop software. If you need to rewrite some of it later to be slightly more performant then you should be able to do so provided you have considered that outcome already due to being performance-conscious from day 1. There is definitely a balance between maintainability and performance and I do acknowledge that they can often be at odds. Where exactly the software I'm writing falls on the spectrum is based on the business requirements and particular problem domain.
  • Beauty: Good software should be beautiful. This is very subjective, but I don't enjoy building software that I hate looking at and will almost always take a little extra time to make things look pretty even if it isn't the top priority.