I am a Web Developer with over 15 years of professional experience. I enjoy
learning new web technologies and finding creative solutions to tricky problems.
I'm creator of VanWalks, a walking tour web app of Vancouver, and co-owner of Pleasant Mountain Music, a music school also in Vancouver.
I am currently looking for tech positions that allow me to continue building my skills while keeping flexibilty for my various responsibilites.
Most recently I've been making a 3D, idle, real-world game with my new friend Claude. "Shards Game" is guide coded, not vibe coded.
VanWalks is my brainchild. I conceived of a walking tour app of Vancouver while using similar apps in other countries. I took a
working vacation to Mexico to build to the prototype, and had plenty of time to finish and launch the project during the pandemic. I'm currently
iterating and developing the sales channels for the app.
I led a small team of freelancers, who helped with the Branding, UI, Research, and Content
Writing. Having worked with most of them on previous projects, I was able to really dial in their skills for the needs of VanWalks.
VanWalks started as a React Native app using Expo, but I switched it to be web only in 2023.
The back-end for the app uses AWS Serverless, specifically API Gateway, Lambdas and
DynamoDB. I tried, as much as possible, to use Rick Houlihan's Advanced Design Patterns for the
DynamoDB data structure.
The marketing site, VanWalks.ca is a dynamically generated static site using Gatsby. It pulls from the same
data source as the app, so it's always up to date. When there are content updates, I
simply publish a new build that has the newest content.
Supporting Projects: A map admin app, a photo editing and uploading tool, and a sales rep admin site for keeping track of sales and commissions
A wildly popular, text-based, crime MMO game, Torn had already been around for 20 years when I started working with them.
I was tasked with updating their player admin panel, replacing some pages that had been in use for the full 20 years with a
modern, responsive front-end.
I also streamlined some critical data flows related to player management.
The first was reducing mutiple different types of player reports, cheating etc, into a unified reporting system.
This allowed the mods to research and investigate player complaints and make punishment decisions much faster.
There was a similar issue with the tools related to investigating players using multiple accounts.
Many different pages and tools had been developed over the years to gather information, such as IP address and login times.
I combined these into one flow so admin could select targeted players, save the evidence, and determine punishments on one screen.
As a modern and forward thinking web developer, I started using Claude Code mostly so I could have an opinion about AI based coding.
I immediately enjoyed the experience. After a few wins making scripts and a web extension for my music school, I decided to undertake a harder challenge.
I have been brainstorming for a while a game that combines elements of idle gameplay with neighbourhood-based real-world collaboration and combat.
I decided to take a crack at it with the help of Claude, and bit of Codex. It's been a pretty wild ride so far.
Sometimes things click into place almost immediately and replace hours of research and typing, other times I burn a whole usage window just trying to make some objects move correctly.
So far my main take away from AI guided coding is that the ownership of the code is critical.
The AI generated code will handle the logic properly, but will often forget about the project structure and place all the new code in the currently open file.
I suspect this is because, to a computer, one long file or 5 shorter files are functionally the same.
My strategy to mitigate this is to use Merge Requests and Issues to keep the scope under control.
I have the final say on what code is added to the codebase.
The game is pre-alpha at the moment, but you can enjoy these screenshots and gameplay video.
Philanthropi
I was the first full-time developer for Philanthropi, a fintech startup building a
charitable donation platform that focused on Donor Advised Funds. Initally, I worked on
all aspects of the platform, including the front-end, back-end, and integrating with the
banking platform.
I joined a team of AWS employees and contract workers to launch the new AWS Backup
service. Using React and Typescript, we build a slick platform that lets you select your
AWS assets and start backing them up on a schedule of your choosing.
After saving up my developer pennies for many years, and learning that my two bandmates
both had full teaching schedules, we decided to embark on a new chapter. The three of us
got together and opened our own music school. We opened our studio in Vancouver, March
2022.
The website is a custom Wordpress setup that publishes a static site to an AWS S3 bucket
to keep costs low.
An online photography competition. It used CRON jobs to automatically update winners and start new battles. Had a rotating selection of battle categories based on popularity. Winning photos, new battles and high scoring submissions were posted automatically to Facebook and Twitter. The winners got certificates that were generated dynamically on demand. I also set up algorithms and IP tracking to prevent vote stuffing. Moderators approved all photos before they were visible.
Not currently active.
The Oh Wells
A website for local indie-pop band The Oh Wells. It was built on a custom Wordpress theme
to allow the band members to post news, events and photos. Featured a sticky music
player and right hand sidebar.
The Maneuver
A website for local party funk band The Maneuver. It's built on a custom Wordpress theme
to allow the band members to post news, events and photos. The site has achieved front
page Google results for "The Maneuver" (beating out the Heimlich Maneuver), as well as
"Vancouver Funk Band" and "Party Funk Band".
Website for the Vancouver band The Elixxxirs. The opening sequence used jQuery animation
and failed gracefully if javascript was disabled or on slow connections. There was also
a backstage area for the band to update gigs and news automatically.
Startup Clicker
An idle clicker in the vein of Cookie Clicker or A Dark Room. Built with React and Redux.
Saves the game state to local storage every 30 seconds.
I've been tinkering with Aurdino for a couple years now. I've built a LED drip clock, a
robot halloween costume, a sunrise simulator lamp, a
light up bass and a failed quadcopter. I'm planning on making a digital handpan/synthesizer.