I help raise my daughter and son. I take care of my wife. I also build websites.

Wow, it’s been way too long since I’ve taken the time to update this website. Parenting in a pandemic hasn’t left much time for personal projects. Using a touch of my holiday time to work on this. So I’m a full-time full-stack/backend website developer for over nearly a decade now; I’ve also been a dad for a majority of that time.

I’ve been working for BYO Recreation for nearly two years now. One of my first major accomplishment was that I spearheaded migrating them fully into the cloud, so we could retire the aging local server. Though it would turn out to be incredibly useful several months later when the pandemic forced us to transition to working remotely.

Migrating BYO

I would like to think that one thing I particularly excel at, is being able to adapt to just about anything I work on. One example, as I mentioned above, I migrated BYO to the cloud; that was my first time using Amazon Web Services (AWS), and the first time I was orchestrating more than a single production server.

It should also be noted that BYO was partially in the cloud when I started, and despite only being partially in the cloud, their costs were through the roof. I reduced their AWS costs by 75%. I also set up robust automatic backups of all servers (nightly, weekly, and monthly). Migrating to the cloud involved updating all their PHP applications to support the current version, which was PHP 7.2 at the time; and migrating from MySQL to MariaDB which provided a surprising number of challenges due to some ill-designed queries.

Website Details

For anyone interested, this static website was generated via Jekyll, using a HTML5 UP template, which I turned into a jekyll theme. The code for this website is in a git repo, as all code should always be, in this case it’s stored on github, since they offer free private storage, and that is where my public code is already. This theme is one of my public repos on github.

In my professional life, I have always had separate development and production servers, even if it meant having to set up a development server for projects that previously didn’t have one. In my personal life, I used to write directly on the production server in vim, and a majority of that was via my phone. Nowadays, this website is hosted on DigitalOcean’s App Platform, so updating it is as simple as pushing a commit on the git repo.

Recent Projects

Vigilant Form

One issue, that we had been contending with, had been spam form submissions. There had been a simple system for trying to identify bad form submissions, so that our sales team didn’t have to deal with them constantly. I ended up building out a new system, which could take form submissions from all of our websites, and evaluate them both on the submitted content, but also on the metadata about the submission.

After a form submission is received and stored, it is sent to a queue, where additional information is looked up such as geo-locating the IP address, validating any zip codes given, then it will be scored, categorized, and finally acted upon depending on how it was categorized. The initial version of the system was fairly simple, reviewing each form submission independently, scoring predominantly by the content submitted. The current version will flag things like excessive submissions from a single IP address, and compare the locations based on IP address, zip code, and phone number.

Drought Alerts

In my previous job, I’ve built a drought alerts system, based in Symfony 4. The idea being that users can sign up for notifications about changes in the drought conditions at different locations and scales (city/zip, county, or state level). While currently we are only building out support for a single dataset, the United States Drought Monitor (USDM), we plan on offering a full suite of choices to the users, if that goes well.

It was interesting to design, I probably over-engineered it just a tiny bit, the final list of entities stands as such: Users, Tokens, Alerts, Locations, Counties, and States. As part of integrating this within the existing infrastructure, I was given our common list of counties and states to work with. Since we needed to allow users to subscribe and unsubscribe without having to create logins, authentication is achieved via unique tokens, each one belonging to a particular user, with a specific purpose.

Recent articles

Tech I Use: Nextcloud

Feb 5, 2019

I first tried owncloud years ago, back when it was still a bit unstable and upgrading was difficult and complex,

Tech I Use: KeePassXC

Feb 4, 2019

For years, I’ve used LastPass, my decided to take a peek at options which enable me more control over my data, without having to give up functionality.

Privacy: Google and More

Feb 3, 2019


I had a very stark realization one day about my Google usage, google knows more about me then I do.

Pronouns and Variations Thereupon

Jan 20, 2019

Ladies and Gentlemen and Variations Thereupon.

I’m watching an episode of Doctor Who, and the stewardess addresses the crowd as “Ladies and Gentlemen and Variations Thereupon”, which made me think about how we should really make a point to better acknowledge that not everyone fits into the old-fashioned two gendered system.