2022 Wrap Up
Well it's that time of year again. I do enjoy writing these yearly wrap ups, they are great to look back on. Having started these they're now a yearly tradition that it looks like I'm going to be stuck with. Anyways what's been happening in 2022?
Photo by Stephen Phillips - Hostreviews.co.uk
Managing another agency #
In March I was contacted by another agency who's only developer was leaving the company. This would leave them with no support whilst they decided the best way forward for their development department. This has resulted in me managing Maple Rock and this additional agency at the same time. The first couple of months were pretty stressful whilst I found my feet and discovered the various sites under their control and what levels of support each client required. The majority of the sites are WordPress (using Divi 🤮) with a couple of legacy Drupal sites. Aside from standard day to day client support I've also completed the following projects on their behalf;
- Recruitment website – This was part built however non of the job listing functionality was in place so I wrote a custom solution with custom post types outside of Divi.
- Car Hire website – I ended up rewriting the site's theme/CSS mainly to make my life easier when it comes to carrying out updates in the future. Additionally the most complicated aspect, the customisation of the plugin that handles bookings wasn't considered as part of the build spec so I had to get that up and running.
- WordPress Multisite – There wasn't much to do here but it's given me some experience in working with WordPress Multisite and also Google AdManager.
- Custom WordPress plugin build – The client was told certain functionality couldn't be done. I however knew it could so I wrote them a custom plugin. It also stopped them ringing me up twice a day to carry out database updates 🙈
- Migrated Drupal 7 site to WordPress – This plugin (FG Drupal to WordPress) + WPCLI ended up doing most of the heavy lifting amazing value for $39.99.
Notes on WooCommerce #
There are a number of WooCommerce sites within their control. Having not really done much WooCommerce previously it has given me the opportunity to work with it for the first time. These sites have probably been the biggest challenge, especially when you've not built them and they've had plugins thrown at them to solve a problem. When something breaks debugging ends up being a turn off plugins/dive into their source code to figure out the issue! Additionally keeping on top of WordPress update is really not fun - run update something breaks. I certainly need to look into a better way of handling this; I'm thinking run updates on staging site with tests for the basic purchasing paths, once these are passing then deploy to live. Also a lesson in the importance of documentation (certainly something I also need to get better at!)
That being said I've enjoyed the challenge and it's certainly given me a confidence boost in my abilities and to know that I'm mostly doing things right. It's always nice to get one over the old imposter syndrome.
I realise now that I come to write this section that this could/should have been a blog post in its own right. With that in mind I won't go into too much technical details I'll save that for the post that I now need to write. I think my Instagram post/summary (see below) pretty much explains this in a nutshell. You can take a look over here dragladders.com.
I was chuffed to pull this together, granted sign ups are pretty small currently but it's nice to know that other people are logging in and actually using it❤️. It also gave me the opportunity to try out some new tech and build something at my own pace without any client expectations!
Currently it only allows for a maximum of 64 entries. I cannot for the life of me figure out the algorithm that will allow for any number of entries. I spent hours on this earlier in the year only to give up and hard code the ladder orders into an array. I'd love to find a solution.
Other things I've been working on #
- Custom room booking solution added to existing event purchasing system (Laravel)
- Multilingual (x15 languages) static site built with (Eleventy)
- Custom Ebay API Integration for bulk pushing products to Ebay (Laravel)
- Code review of a legacy Classic ASP site & server - this one truly rolled back the years and really highlighted how far we've come
- Custom WordPress plugin to pull event data from Hallmaster
- Multiple custom themes for WordPress
- Migrated all of Maple Rock's legacy CodeIgnitor/Joomla sites to either static sites with Eleventy or a simple PHP setup. Everything is now running PHP 8 or higher 💪
- Migrated Cheltenham Pub Guide from CodeIgnitor to Laravel
- Public consultation website built with PHP & Tailwind
- Designed a bespoke Golf Umbrella ☔️ and sourced production in China 🇨🇳
- Attempting to improve my skills in Adobe Illustrator
- In last year's review I mentioned that I was researching updating our internal I.T setup. Well I finally sorted this and installed and setup a new Synology Server.
Tech stack #
I'm pretty much using the same old stack that's served me well for the last 5/6 years (see last years wrap up for more).
Photo by Ben Griffiths - Hostreviews.co.uk
Using WordPress and Laravel, obviously I write a lot of PHP. This year for simple sites when we don't need everything that Laravel offers out of the box I've been reaching for a K.I.S.S approach and writing my own PHP solutions, think single index.php entry point with a require for the content for the relevant pages.
I know it says it's titled "PHP for Beginners" but currently I'm enjoying following this series on Laracasts and picking up some new techniques that I wasn't aware of along the way.
Towards the end of the year it's felt like I'm finally starting to understand and make progress in how to write modern & clean PHP. After struggling with containers for a while this finally clicked, (you can read more here)(/posts/modern-wordpress-plugin-development/). Shouts to this article for explaining things in an approachable manner - https://jinoantony.com/blog/code-to-interface-an-example-in-laravel.
My next steps are to embrace typed properties and return types something that I need to get into the habit of writing. I can then start using PHPStan for static analysis 💪 - one step at a time!
Other things I've been using more this year;
- Tailwind – In last year's wrap up I said I'd never use this again. But I gave it a second chance this year and it worked well for my needs. The website in question wasn't the most complex so I only used a handful of Tailwind classes mainly margin/padding and creating basic columns of content - much quicker than rolling out my own CSS.
- Vue – Having written a fair bit of Vue over the years with the Vue 3 becoming the default version in February this year, I've started to use v3 for any new projects (dragladders.com for example). The learning curve wasn't too challenging and I was up and running fairly quickly.
- Laravel Livewire - I've also started using Livewire much more. I find that I reach for this when something is a little too complex for a standard Controller/Blade View approach but also not complex enough to roll out a custom Vue solution. Having written and worked with Vue previously this certainly helped me pick this up. I also found the "Livewire Uncovered" series by Livewire's creator Caleb Porzio on Laracasts extremely insightful.
- Pest - I'm not sure if I'm the only one but it feels like I'm late to the party when it comes to Automated Testing I certainly wasn't taught it at University and wasn't a thing during the early days of my career. That said I've started adding tests to the important customer facing features of existing builds with PHPUnit. dragladders.com is my first fully tested build and I gave PEST a try – it works well but I didn't really feel any huge benefits over using PHPUnit.
- Postmark - I started moving some clients away from Mailgun to Postmark. Additionally with it's bulk email sending ability it meant that we aren't reliant on MailChimp and can do away with the complication of keeping of our user data in sync with MailChimp – we instead send via Postmark. It's also much more reliable than other providers we've used 💌.
Let's talk about DevOps, servers & hosting #
One thing I've ended up doing more of this year it DevOps. This started with an interesting little problem. In February I was contacted by a company that I'd previously done some minor updates to their Laravel site back in 2020. Their emails weren't working and their website was down. Once I'd accessed their Digital Ocean account I discovered they had no droplets which I thought was strange. Turns out they'd failed to pay their bill due to an expired card. If this happens DO completely destroy any droplets, any related backups and DNS records. To further complicate matters the client had no other backups of the site - luckily I'd setup a development version. The only issue being I'd always avoiding spinning up servers as I never felt confident in doing so - nothing like learning on the job. The documentation on Linode/Digital Ocean that walks you through the process are pretty comprehensive so we were up and running again fairly quickly. Thanks to Ben Hutchings for offering me some of his time to double check my workings 🙏
Later on in the year I migrated one of our Laravel apps from our VPS server to its own dedicated droplet on Digital Ocean - this time I opted for Laravel Forge for setting up the server (other contenders were RunCloud & SpinupWP). It certainly made the process seamless that said I've no regrets that the first time I undertook the job that I did it everything by myself - always good to keep learning!
Let's talk web hosting... We've been with out current provider since 2016. I've zero complaints they are great we've now got x3 servers with them. The only place things fall down is technical support. I'm actually pretty good at getting around a server/knowing what is wrong so when I do need technical support I'm after someone that is more advanced than me. Someone that offers much more than the basics and doesn't respond with "You'll need a developer for that". The same can be said for providers like Digital Ocean/Linode all is well until you're stuck and need some support. So a special mention to Phil Taylor of MySitesGuru who stepped in and helped me diagnose an issue with a site constantly going up/down. Turns out WordPress Popular Posts Plugin isn't great and has the potential to bring your site down 🙈. Phil is certainly a great contact to have in your list for the times when you need something diagnosed/fixed ASAP which he does for a flat fee of £88/£138 super value if you ask me https://fix.mysites.guru/.
I've now also migrated all services away from TSOHost (who used to be good ten years ago) but have turned into a truly terrible company that I wouldn't want to touch with a barge pole (Read avoid anything GoDaddy). In researching potential new providers, via various recommendations I came across Cloudabove. I'm yet to try them out fully but in researching a potential server migration I've got to give a special mention to Ryan Devonshire who's been a great help with any questions and set me up on a free trial of their control panel. Hopefully I'll get to try them out proper in 2023.
During the first half of the year I certainly got out more with my camera I'm not sure what happened during the second half of the year 🤷♂️ I purchased a second hand 70-200 2.8 lens which is now one of my go to lenses for most situations. You can find most of my shots on either https://unsplash.com/@maplerockdesign or https://www.flickr.com/photos/richbell/. Always amazes me that my photos have nearly 12 millions views and 72k downloads on Unsplash!
Amazing what you can achieve in a year huh! My brain is constantly telling me I'm not doing enough. Based on the above I should be pretty content that I've tried my best and done some pretty cool stuff in 2022 ❤️
Oh I almost forgot I finally upgraded my MacBook. My old 2015 version was becoming painful to use mainly due to only having 250GB space (and no way to upgrade thank you Apple) I was constantly needing to find space just to open up Photoshop plus the battery needed replacing. I took the plunge back in August. I must say this 2021 M1 version is really nice to use it's certainly increased my productivity 📈 especially when it comes to using Lightroom 💻