About
Working Together
My goal is to ship clean, scalable code while communicating clearly and minimizing friction for everyone involved.
What You Can Expect From Me
Autonomy
- No baby-sitting necessary. I treat every project with the care and attention that I would if it were my own.
- My many years of experience allow me to make decisions on my own, when necessary (provided that's allowed).
Transparency
- I bring up concerns/blockers as early as possible.
- I share what I'm doing and where things stand on a regular basis.
Speed & Accuracy
- I like getting things done and done well.
- If there is a repetitive task, I will automate it (usually with Python).
Future-proofing
- I write code that can be easily read and maintained.
- I love documentation, if not for you, then for myself 6 months in the future.
Humility
- I welcome feedback and critique.
- I don't think I know everything.
- If you know a better way of doing something, I want to know about it.
Respect
- I do not believe in being late, I know your time and attention are valuable.
- I like hearing other perspectives and ideas.
What I Expect From You
- Clear communication. Written is my preferred form so that I can reference later if I forget something.
- Respect that my time and attention are also valuable.
- Under-promise and over-deliver (in respect to work that is done for other people) and not the other way around.
What Makes Me Sad
- Scope creep. Sometimes things have to change, but I expect changes to be accounted for and them to change other parts of a project.
- Expectations/deliverables being vague. I don't need everything laid out, but it's best for everyone if we're all on the same page.
Tech
This is the tech that I have experience with.
*Preferred
Languages
- HTML
- CSS
- Sass/SCSS*
- Tailwind CSS
- JavaScript
- TypeScript*
- PHP
- Python (Tooling)
Frameworks & Libraries
- React / Next.js*
- Vue / Nuxt.js (2 & 3)
- Vuex
- Pinia*
APIs
- GraphQL
- REST
Content Management Systems
- Contentful*
- WordPress (headless, monolithic)
- Shopify
- Custom (I have worked with many custom backends)
Testing
- Cypress
- Jest
- Playwright
- Axe DevTools
- Chrome Lighthouse
Tooling
- Vite*
- Webpack
- ESLint
- Prettier
- npm
- yarn*
- Git
Personal Philosophies in Development
Empathy is my guiding principle. I always try to think about how someone else might use something I have built.
These are not exhaustive lists.
Accessibility
Accessibility isn't just about those who are differently-abled, it's about making things as frictionless as possible.
- I expect that others will use a site differently than I anticipated.
- Input fields should have proper names and types so that tech, like autofill, works the way a user expects.
- Markup should be semantic.
- Don't rely on color to communicate.
- Text size should be adjustable.
- Respect the users preferred color scheme.
- Respect users that prefer less motion.
- Expect third-party APIs to not work.
- Expect network conditions to not be ideal.
- Don't prevent users from taking normal/expected actions (zooming, being able to select/copy/paste text, back button actually goes back, etc).
- Optimized and properly sized images should be the norm, but also give users the ability to download the full size.
- WCAG 2.1 compliance should be the standard.
Performance
- Assume the user is on slow internet.
- Use solutions like SSR (Server-side rendering), SG (Static generation), selective hydration, and/or lazy loading to make the experience as fast as possible.
- Layout shift is a heinous act. Nothing worse than trying to click on something and clicking on an ad instead.
- Minimize third-party scripts unless they're essential.
- Cache static assets effectively.
- Defer non-critical scripts and styles.
- Bundle only what's necessary. Split code by route or feature.