About Me
I am a resident of BC, Canada and I love web development! I have worked with a number of languages and frameworks and look for work that challenges me in new ways. I have built over 10+ web projects using a plethora of full-stack technolo...
What makes me a great fit for this job is that when I run into a problem that seems insurmountable I am able to take a high-level view and identify possible conflicts or bugs, then go deep into these different areas of concern, reading the documentation and testing data, until I identify the issue and how to fix it. I am intensely persistent, but at the same time know when to ask for help or take a break.
3 aspects of web development that I enjoy
1.) Seeing what I've built come to life and be used by real people.
2.) Continuous learning is a big goal in my life, and while it can become burdensome, I view it that I am lucky enough to think that way. I find it extremely rewarding to gain further knowledge so that I can build cooler and more urgent things as well as stay relevant in an ever changing landscape.
3.) Pursuing meaningful work. The internet was an impactful thing for me at a young age. We had an IT class in high school and I got a taste for programming in (liberty)BASIC, building free frankenstein computers from schools electronic recycling(144 Mhz processors baby!), coding websites with HTML3/CSS2, and feeling like a hacker when I’d change the last item in the url and end up a directory up in the site admins web server.
3 challenges I overcame and what I've learned
1.) With Javascript, it’s easy to learn the basics, but a side-effect of that is that it can be very hard to debug. Since JS converts data types on the fly and is asynchronous and single threaded, it can be easy to overflow the call stack, especially if you are using function values as arguments to functions. I would write code that would run, with no errors, yet did NOT perform as intended, and I wouldn't know why (because of lack of throwing an error). To fix this I learned more about the event loop, SPAs and client-side rendering, the browser, asynchronous programming, and I am learning TypeScript so that I can statically declare my types. Also I test more iteratively.
2.) A client called me in distress saying his web site had possibly been hacked. I was building upon his original design (WordPress) and he doesn't code so it was not secure and really buggy. But he liked what he had done so far and wanted to keep it. Since we were both working on it, I wasn't aware that he updated the PHP version without first backing things up and it crashed the site and locked us out. I communicated with him and found this to be the cause. But in my haste, I had already changed the credentials to his database out of fear of exploitation.
Then when I fixed the PHP issues, it wouldn't connect to the database,(because I had changed the creds) so I had to update the .config file(on line# 17000 or so!) with the new credentials. This valuable crisis scenario taught me to communicate better, to work well under stress, and not rush into trying different solutions until first gathering as much information as possible.
3.) I've learned not to be too hard on myself if my project doesn't look/perform as well as I'd like. I’ll extract as much value and knowledge from the project as I can, then ship it or ditch it. I try to learn fast, and I like to choose projects that support the tech stack I use at work. The purpose of projects is to learn the technology, NOT to launch the next Facebook or Netflix.
One thing I do differently now when considering moderate/large sized side projects, is to spend less time writing the code, and more time split between researching, planning the architecture and data structures, and setting up constraints around type safety, error checking, linting and testing, just to keep things simple and concise at the start, so that as the application grows in complexity, it doesn’t become unwieldy. Also it saves time on the otherwise extra debugging you’d do later on.
Thank you for your consideration and I look forward to taking the next steps in your interview process!
Sincerely John McKirdy
Show MoreSkills
Web Development
Development Tools
Database
Programming Language
Networking & Security
Operating System
Software Engineering
Others
Positions
Portfolio Projects
Company
Ecomm Food Store Platform
Role
Full-Stack Developer
Description
Go to my GitHub to see all my projects: https://github.com/jmckirdy
The Food Store is a Web App and CMS running PHP/Apache/MySQL server-side, and plain HTML/CSS client-side. It's a customer-facing online shopping experience that allows for selecting items for purchase, adding to shopping cart, and of course, checking out.
Also there is an administrative-facing web interface, allowing store managers to add new products and modify existing ones, monitor stock levels, and process customer orders.
Customer-side should be located at localhost/Food-Store.
Admin-side should be at localhost/Food-Store/admin/admin.php.
It uses a mySQL database which allows for complex tasks like search functionality, storing and retrieving binary data, handling transactions, implementing shopping carts, and generating downloadable Excel reports.
Show More Show Less
Company
Portfolio site
Role
Software Architect
Description
Go to my GitHub to see all my projects: https://github.com/jmckirdy
I am passionate about making software and learning new technologies with a focus on full-stack web development. My goal is to create impact on others' lives, inspiring them to be the most creative, productive, and positive version of themselves.
Designed the colors, look, & feel of the site.
It is mobile responsive including a mobile hamburger nav bar.
Pulls in jQuery, as well as has some JS functionality.
It hosts an entire MVC style JS Game called Battleships.
It links to my blog, and also has a printer-friendly page allowing you to print my CV.
Show More Show LessSkills
JavaScript CSS HTML JQuery