const successAndFailure = new Experience;

In my last article, ‘Wait, No… Am I a Developer?’, I talked about some of my earlier experiences with technology, I also summarized some of the online learning I did. In this post I will further dig into my origin story as a junior web developer by elaborating on some of the larger projects I have completed.

A screen shot of one example of the code I have written

By the end of 2015, I had completed 3 university level computer programming courses. I knew several different programming languages and a full-stack web development framework. I had a good understanding of relational databases, version control and some design patterns. Now it was time to build something; anything! I have all these new skills, what should I create?

The CSS was terrible but it worked, the code was DRY and I was proud of it.

I had been playing Dungeons and Dragons with my daughters on the weekends, a passion from my early teens. The 5th edition was new on the market and I didn't see many online tools out yet. A character generator seemed like the most obvious idea. I’d start simple and continue adding features slowly, in an Agile way. In 2016 I spent most of my free time working on my DnD_5e Character Generator. The CSS was terrible but it worked, the code was DRY and I was proud of it. The last thing I needed to implement was spells for magic users and equipment. Then it became apparent that my professional massage therapy website, kwmassage.com, needed attention.

Between 2012 and 2016, kwmassage.com had been hacked 3 times. It was originally built as a self hosted WordPress site. It was great at the time but there must have been some security holes in one of the plug-ins. The first time it got hacked was the worst, someone had gotten into the WordPress admin and installed a replica of a France based electrical companies website. My hosting provider locked me out with only one option, a complete wipe. The company that built kwmassage.com was no longer in business so I had to track down the lead developer in Seattle to get a backup of the original build. Luckily I had a word doc with most of the posts and content I had created over the years. This was in 2012 before I had taken CS50, I had no idea what a server was, what a database was or how to install WordPress. The massage therapy budget didn’t afford hiring help, it was up to me. I figured it out, a bunch of late nights, a lot of research and some trial and error and I was back in action. The next time was similar but I had been through it before and had finished CS50 by that time and knew exactly what I was doing, it felt good to know what I was doing.

In the end I built tooling using ruby to extract the content out of the old WordPress database porting it to Jekyll, adapted and customized the theme and finally deployed it to replace the WordPress site. I haven’t had an issue since.

The third time kwmassage.com got hacked was the final straw, I was getting tired of having to redeploy my website and it was becoming out of date, as modern web sites were responsive; adapting the websites layout to the users device size. I went looking for a solution and came up with Jekyll, a static website generator. All the build logic would be done locally and the server would host static pages only, there was nothing to hack. To save time I settled on a prebuilt bootstrap theme, it looked more modern and was responsive. The time I had available for development work was limited so it took me a few months to implement. In the end I built tooling using ruby to extract the content out of the old WordPress database porting it to Jekyll, adapted and customized the theme and finally deployed it to replace the WordPress site. I haven’t had an issue since. This site is still maintained and operational and provides me with a regular stream of new clients.

With this major improvement to my website complete, I started looking for my next project. I was becoming interested in JavaScript, and one-page applications. I had been using Cliniko.com for my clinical record keeping, appointment calendar and self serve online appointment booking tool but the one thing it didn’t handle was allowing clients to fill out health history forms prior to coming into the office. This would be my next project, I would use Ruby on Rails as a backend to store data and handle user authentication and JavaScript would do the rest on the frontend with Jasmine as a testing library. I wanted to improve my JavaScript skills so I committed to doing it all with vanilla JavaScript, no Jquery, no React, no Vue. The project was going very well and I was getting much better with JavaScript but as I started developing the user authentication and the RESTful end-point with Rails I became uncertain about the security aspects and my full understanding of the security implications related to sensitive client information being passed around on the web. Without anyone to do a full code review and help me assess the risk I felt it wise to leave the project as a front-end app without a back-end server. Maybe it would have been safe to continue the project but I couldn’t afford to have issues with the CMTO (College of Massage Therapist of Ontario). I learned a lot from this project, enjoyed working on it and I feel I made the right decision to not use it as a professional tool.

None of my development work is ground breaking. Simple user interfaces, static websites and small ruby-on-rails projects don’t get a lot of attention. But I do believe they show curiosity, passion, drive and the aptitude to learn and implement highly technical material.

by: Jeremy Bissonnette