Categories
Development Experiences Laravel

From Digital Ocean App Platform to Self Hosted SpinupWP Managed VPS

Earlier this year, I threw together a silly little joke app built on Laravel in a couple of hours. I had merely wanted to participate in the Digital Ocean App Platform Hackathon and had no further plans for the app.

Another App Platform Hackathon participant liked it enough to contribute some substantial improvements, including a shiny new front end built in Tailwind and, more recently, some logos.

Over time I’ve had a few additional ideas for the app, and I’ve been hacking on some of them on the weekends. As the feature set has grown, so have the infrastructure requirements. This past weekend, I needed a database to store the Jokes.

While the original App Platform implementation was sufficient, I wanted something I could customize a bit more in line with my own hobbyist sysadmin experience, managing a site on a server I control.

Enter SpinupWP

I’ve previously blogged about how straightforward it was to move my WordPress sites to my new SpinupWP managed instances, so I wondered how hard it would be to install and manage a Laravel app. It turns out it was a lot easier than I expected.

Disclaimer: I currently work for the company behind SpinupWP. That doesn’t take away from the fact that they’ve built an awesome cloud server dashboard that I am learning fun new things about every day. It is, however, one of the reasons I applied to work there.

The only webserver software I needed to install myself was Node.js and npm to build the Tailwind front end. To do this, I used the NodeSource Node.js Binary Distributions. I had some problems following the default install of the latest LTS version of Node.js, but I got around it by manually adding the apt repository.

sudo add-apt-repository -y -r ppa:chris-lea/node.js

Once that was done, I could follow the install instructions for Node.js LTS (v14.x) on Ubuntu.

curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs

Next up, I created a new site on one of my SpinupWP managed servers. Instead of choosing the WordPress install option, I went with the “Clone a Git Repository” option. I entered my Git repo URL, branch name, and any build commands I needed for the Laravel app.

I didn’t check the “Enable push to deploy” option. For now, I’m happy to manually push the “Deploy Now” button whenever I make changes, but I’m keen to set this up next.

All that was left was to create the database in the next step of the new site wizard, wait about 30 seconds while SpinupWP provisioned the new site, add the relevant credentials to the Laravel .env file in the project webroot, and click “Deploy Now”. While the site was deploying, I canceled the App Platform app and set up the new DNS settings to point to the server, and in the space of about an hour, things were up and running.

I know SpinupWP markets itself as specifically a WordPress self-hosted server product, but it was really cool to see that it could manage pretty much any modern web app, with just a few small tweaks.

Categories
Experiences

4 Years at Castos – and Why It Was Time to Leave.

This year marks my 4th working at Castos on our podcast hosting, analytics, productions platform and Seriously Simple Podcasting, our podcasting plugin for WordPress.

Today also happens to be the last.

Looking back

Craig Hewitt, founder, and CEO of Castos, first contacted me on December 27, 2016. He let me know he’d recently purchased the Seriously Simple Podcasting plugin from my friend Hugh. He also mentioned that he was wanting to build a podcast hosting SaaS application to support the plugin. At the time, I was on vacation, and we agreed to chat when I got back.

I treated Craig like any other freelance client; I invited him to post a project through the Codeable platform. We started our first project discussions on Jan 9, 2017.

The first plugin update we pushed out to Seriously Simple Podcasting was version 1.15.2 on April 19, 2017, which only included adding support for certain iTunes fields in the RSS feed and a filter for the post meta key that stores the audio file URL. However, in the background, we were feverishly working towards version 1 of Craig’s podcast hosting SaaS idea.

On Apr 6, 2017, Seriously Simple Hosting went live at app.seriouslysimplepodcasting.com. Only one capture for that URL exists on the Internet Archive because it was renamed to Castos soon afterwards. A little known fact of that first version was that Craig, an admitted non-technical person, built all the front end you see on that home page!

On June 01, 2017, Craig and I switched to an ongoing, part-time contractor agreement. Along the way, the team grew to include a second Laravel developer, Danilo, a Customer Support Specialist, Eileen, and our Analytics Engineer, Stefan.

At the end of 2018, I switched from spending a smaller percentage of my time on Castos to spending quite a large portion of my time working on the project. The business was accepted into the first cohort of the TinySeed accelerator, and we added a Growth Marketing Specialist, Denise, to grow our customer numbers. By the time Craig, Danilo, and I met in person in June 2019 at WordCamp EU in Berlin, we were a team of 6 and growing rapidly.

I consider myself extremely fortunate that when the global pandemic hit in 2020, Castos continued to thrive and grow. During that time, we welcomed our new Director of Podcast Success, Matt, bid farewell to Denise, welcomed Becky from Craig’s other business, Podcastmotor, which merged into Castos as Castos Productions, and were joined by Kim on Customer Support, Dennis in Marketing, and Alec and Sergey as our newest Laravel and WordPress developers respectfully.

I recently reached out to my social media community, to see how many folks I know use our products. The response was humbling.

Coming to a fork in the road

During the latter half of 2020, Craig and I started having some discussions about my role in the company and where he saw it going in the future, with the development team’s growth.

Those discussions made me stop and take a critical look at my professional career and whether I really wanted to keep going down this path.

It reminded me of a poem I’d once had to memorise when I was younger called “The Road Not Taken” by Robert Frost. I was about 12 or so, and I took part in our local poetry Eisteddfod, reciting this poem. For whatever reason, the words have stuck with me since then.

As I thought about my future, I recalled the final stanza, and the words seemed apt to my situation.

I shall be telling this with a sigh
Somewhere ages and ages hence:
Two roads diverged in a wood, and I—
I took the one less travelled by,
And that has made all the difference.

Robert Frost

Asking Why

About six months before I started working with Craig on Castos, I wrote a blog post, mostly for myself, as a reminder of why I’d chosen the current path I was on. At the time, I wrote these words:

The honest truth is that I shouldn’t be working as a freelancer. I should be working for a company, where I am simply a small cog in a bigger machine.

Remembering ‘Why?’ – July 15, 2016

As I took a look back at the last 4 years with Castos and the 12 odd years of software development before that, I found myself re-reading that post and asking myself why again. Surprisingly, the answer I got was very different from what it was before.

In that same post I had said the following:

I became a software developer for the simple reason that I like writing, be it code, a technical document or a tutorial or a blog post. I’m not what I would call a ‘creative’, I can’t draw or design something to save my life. What I can do is develop software that solves a specific problem or write an article or tutorial that helps someone achieve a specific task.

Remembering ‘Why?’ – July 15, 2016

And as I read it, I realized that that statement had changed. I no longer wanted to write code for a living. I no longer wanted to develop software to solve someone’s specific problem. I’d reached a point where I wasn’t enjoying the process of software development anymore. After 16 years of building software, I desperately needed to do something else.

The realisation that I was not enjoying the well-known path anymore, coupled with the fact that my future was looking very much tied into that path, made me stop and consider whether this was the road I wanted to stay on.

As it turns out, the answer was, no.

Now what?

During this process of self-realisation, I took the 16 Personalities Test. As I read it, I discovered that how I felt about my future as a developer had a lot to do with my personality. The frustrations I experienced were less because of the people/product I was working with and more about the actual work. I understood what I probably should be doing, and the path in front of me was very different. It was time to take a chance and see if it would be possible to make a change now or continue down a path that might not work out for the best in the future.

And so today, I leave my position as Lead Developer at Castos to take on an exciting, but also scary, new journey. I will be taking off my developer cap and putting on another one. It’s a path that will challenge me in interesting, new ways. It will promote new learning and growth. Finally, it is a path that I feel is more in-line with my personality and able to do my best work.

I’m taking the road less travelled by, and I believe it will make all the difference.

Categories
Development Experiences Ubuntu WordPress

Migrating My Cloud Virtual Servers to SpinupWP

I’ve never been a fan of managed WordPress hosting. Don’t get me wrong; I appreciate what managed WordPress hosts do, and they are definitely doing amazing work, but it’s just not for me.

As a developer and server admin hobbyist, I prefer to own my own VPS (virtual private servers). I started using Rackspace Cloud VPS in 2008 and managed a few personal and client sites on virtual servers. When Digital Ocean launched, I moved all of my sites to Digital Ocean droplets. I’ve always enjoyed using VPS environments, as they give me complete control over my web hosting infrastructure.

The two downsides to this DIY approach is security and site management. Not being an experienced Linux sysadmin, I was always concerned that I might miss something important that led to my servers getting hacked. Setting up new sites on the same server meant manually creating site folders, databases, and virtual host configurations.

So when I discovered ServerPilot in 2016, it was almost a no brainer. It gave me the flexibility to own my virtual servers to create and manage new sites on the fly. It has some shortcomings, but I could find workarounds for them to get things the way I wanted.

Then, early in 2019, Delicious Brains launched SpinupWP.

I’ve been a fan and follower of the team at Delicious Brains for a few years now, and their take on the cloud-based server control panel was exciting to me. The features listed on the website provided a better feature set than the ServerPilot service. I had to try it out.

Unfortunately, time, work and life got in the way. It took me almost two years to finally give it a try, and now that I have, I’m annoyed I didn’t do it earlier.

What makes SpinupWP better?

There are quite a few reasons I like SpinupWP more; this is just a shortlist of my initial thoughts during the process of migrating my sites over.

1. API Access

SpinupWP connects to your cloud service provider via their API. This is great because it means you can actually spin up 😀 a server from the dashboard. With ServerPilot, you have to create the server from your VPS provider first, and you have to provide root user access, which is a bit of a security risk.

2. Easy setup wizards

Setting up a new server instance to creating a new site, you are guided through the process using step-by-step setup wizards. One of the things I like about these setup processes is they’ve thought of the different types of site migration and provide options like setting up a new site to simply provisioning an empty one to be migrated over.

3. Handy help sections

This is one of my favourite parts of the setup wizards. For almost every field you have to enter, there is a help area to the right of the view that describes what that field is for or includes more information or links to a help document. This is very handy when you’re not 100% sure of what you need to input.

4. Click to Copy

Every single piece of text (and I mean every single one) that you might need to copy to be pasted elsewhere can be copied to your clipboard via a single click. You have no idea how much time this saves when you migrate sites over to a new platform.

If I have one complaint here, the domain portion of the TXT record I needed to copy for the SSL certificate generation copied the entire text when I just needed the part before the domain name. That being said, this was the only hiccup I encountered using the product on my first try.

5. Event log

At the top right of the screen is a button to view an entire log of everything you’ve done on the platform. This is extremely useful if you need to see the status of some task running in the background.

6. Security first

Because SpinupWP creates new server instances for you, they automatically disable root access. Then, any time a new site is created, a new user is created to manage that site. These site users do not have sudo access, which means they can only manage the specific site’s files and data. You can create separate sudo users to give you a higher level of control. Finally, you can choose to access your servers using SSH public key authentication for an enhanced level of security.

7. Faster out of the box.

I moved my main domain (this blog) over to a new server first. I specifically chose PHP 7.3 as the PHP version because it was running on the older server. I don’t do any specific speed tuning, and just by migrating my site from a ServerPilot managed instance to SpinupWP, I gained an 11% speed increase on GTMetrix.

Before
After

I managed to move all 3 of my personal “production” domains over to a SpinupWP managed server over the weekend. I’ve not really had a chance to dive into the dashboard fully, but I’m looking forward to seeing what else is possible. I really appreciate the product because you can see it’s the result of years of working with different WordPress hosting types. It’s designed for developers to make it as straightforward as possible to leverage the power, and cost-saving, of cloud-based virtual private servers, with the speed and security of a managed solution.

If you’re a WordPress developer, and you have sites you host yourself, or you want to self manage your client’s web hosting but are concerned about ease of use, stability, and security, I highly recommend giving SpinupWP a spin.

Categories
Development Experiences

How Taking the 16 Personalities Test Helped Me Understand Myself Better

For the past three years, I have been having some serious thoughts about my future as a software developer. Since I turned 40 in 2017, I’ve been wondering if the path I was on was the right one for me. This led to a lot of frustration in my work, especially when it came to the minutiae of managing the process and the people involved in building a software product.

Around mid way through last year, someone I follow on social media posted an article titled “Builders and architects: two types of programmers“. In the article, the author summarizes the differences in this way.

The first ones, the builders, are the programmers who get things done. They work efficiently. Besides their daytime job, they come up with these amazing side projects and to the outside world, it looks like writing code comes naturally to them.

On the other hand, there are architects. They are concerned about sturdy and structurally sound code. They spend hours, sometimes days, debating the right way to solve a problem.

https://stitcher.io/blog/builders-and-architects-two-types-of-programmers

Now, I’ve always known that I am more a builder than an architect. As I’ve gotten older/more experienced I’m starting to think more like an architect, concerning myself with code quality and spending hours, even days, debating the right way to fix a problem. Given the choice, however, I’d rather find a library that an architect has built, and use that to get things done. So reading the article was more of a case of wanting to know how the author perceived it, less about understanding myself

What I didn’t expect was that there was something else in the content that evoked a response in me. In the article, the author discusses the Myers–Briggs Type Indicator test, also more commonly known as the 16 Personalities test. He references the test, how each member of his team had taken it, and how it had helped them work with each other better.

Not only did the majority of people recognise themselves in their profile, it also exposed struggles and hidden frustrations that were never shared before, because no one knew how to deal with them. Now we did.

https://stitcher.io/blog/builders-and-architects-two-types-of-programmers

I had heard about the 16 Personalities test but never taken it. The article inspired me to take the time to run through the questions, and I received my result. As it turns out, I am a Mediator Personality (INFP-T), and as I read the result, I was surprised to discover things about myself that I’d never realized were true until I thought about them.

Mediators tend to crave opportunities for creative self-expression. It comes as no surprise that many famous Mediators are poets, writers, and actors.

It did in fact come as no surprise that I seek writing opportunities whenever I can find them. I even made it one of my personal and professional goals for 2021.

Mediators may feel directionless or stuck unless they connect with a sense of purpose for their lives. For many Mediators, this purpose has something to do with helping and uplifting others.

This could not be more true, I often feel as though software development is my job (ie it pays the bills), but helping and uplifting others through software development (writing, speaking, mentoring) is my purpose. I’ve just never had many professional opportunities to do so, so I actively seek out volunteer activities that allow me to express this purpose, and then become frustrated when my job gets in the way.

Mediators can expect so much from themselves that they inevitably fall short. When this happens, they may accuse themselves of being selfish or woefully inadequate. This self-criticism can erode their motivation to get things done and their willingness to prioritize necessary self-care

Which I’m sure doesn’t help my imposter syndrome any…

Mediators generally prefer to avoid conflict. They can put a great deal of time and energy into trying to please everyone. This desire to please others can drown out their own inner wisdom and make them painfully sensitive to even constructive criticism.

This was an eye-opener and explained how I rarely will bring up frustrations and issues I have at work, or at home. Rather I opt to try and put on a brave face, which fails miserably, or rant and rave in my own headspace, where no one can see what I’m going through.

Mediators can succeed nearly anywhere, but certain fields seem to be especially attractive to these personalities. With their curiosity and their love of self-expression, many Mediators dream of becoming writers. They might write novels, seek out interesting freelance niches, or even find themselves doing communications in a corporate field or for a nonprofit organization.

There’s that writing thing again… my favourite year of freelance work was 2019 when I was actively writing for the WordPress.com Go blog.

Mediators may find it demotivating to work in high-stress, bureaucratic, or hectic environments. They may also become frustrated by workplaces that are highly critical or competitive.

Software development….high-stress, check…hectic, check…critical, check…competitive, check…

In reading through my personality type, I came to realise that the way I had been feeling about myself and my career, was less about the work itself, and more about my personality. The part I struggled with was what to do with this information.

What I did know was that I needed to actively look for ways to figure this problem out. I did not want to end up somewhere down the road making a rash decision, which would have unexpected consequences. I needed to take some time and consider my options…

Categories
Experiences General

Kicking 2021 into High Gear with an Electronic Standing Desk

I’ve been interested in using a standing desk for about 3 years now. Soon after I moved into my own office space, one of the first things I did was purchase a decent ergonomic chair, and then a standing desk. Not wanting to buy an expensive adjustable desk I wasn’t sure I would actually fully utilize, I found a second hand, manually adjustable one.

Unfortunately, after I took it home I discovered that adjusting the height required me to climb under the desk, unscrew two large locking screws, manually raise the stand on either side and then tighten the screws again. This desk was meant to be set to one position, either standing or sitting, and not meant to be used to switch between either during the course of a day.

Crawling under my desk and using these on either side when I wanted to adjust the height was not what I had in mind.

I’d since been eyeing the TekDesk v2.0. This was a locally produced product from the Cape Town based company that launched the DeskStand, a unique way to turn a regular desk into a standing desk, back in 2015. While the DeskStand was not what I needed, I’ve followed the company since that launch, and recently they launched the updated TekDesk, which was exactly what I was looking for.

The price had always put me off though, so I stuck with the other desk and my ergonomic chair, until I badly injured my lower back late last year. One of the contributing factors to this injury was the fact that I sit for at least 8 hours a day. Not being able to walk properly for 2 weeks gave me food for thought as to my work habits. So this past Black Friday, I decided to take advantaged of their sales and invest in a TekDesk.

Unboxing

The TekDesk ships in two separate packages, one for the desk top, and one for the stand kit. The desk top is still manufactured locally in Cape Town, using the same material as the original DeskStand, and the stand kit is sourced from China. I will say that it’s all very safely wrapped in solid packing materials, so that everything is well protected, and nothing had a scratch on it.

Desk top and stand kit packages
The stand kit unpacked

Installation

On the product video on their website, DeskStand claim installation takes less than 5 minutes.

What they don’t tell you is that’s specifically for setting up the stand kit, but the process of actually attaching the stand to the desk top, and then sorting out the motor wires and cable tying them to the desk means the entire affair will take about 30 minutes. That’s still pretty quick and I had the entire thing set up, with all my computer hardware and peripherals in place, in under an hour.

Fully installed TekDesk

I would also point out that this was completed using an electronic screwdriver, as the combo allan key/screwdriver they ship with the stand is woefully incapable of being useful. Make sure you have a decent Phillips screwdriver handy.

My favourite features

The thing I love the most about the desk is the 3 memory presets for automatic height adjustment settings. Once I’d figured out my ideal sitting and standing height settings, and programmed the unit, it takes a mere 10 seconds to go from sitting to standing.

The other thing I really appreciate is the locally produced desk top. It is a natural birch top with a surface that is durable, but smooth enough to be used as as a mousepad. I will probably still keep using my actual mousepad, but it’s a really nice place to work on every day.

Local is lekker!

Finally, being locally produced, it also means if any goes wrong with it, I can take advantage of the 3 year warranty on the motors, or the 6 year warranty on the frame.

One final point I would mention, if you’re using a triple monitor set up with a PC, there’s not much space for the computer on the desk with the monitors, and unless all your cables are really long, you probably won’t be able to put it on the floor either. DeskStand does sell a separate holder for a PC, which can attach to the desk. Fortunately, I have a shelf next to my desk, so I put my PC on top of that.

If you’re in the market for a standing desk option, I highly recommend checking out the DeskStand range. They even sell the stand kit separately, if you want to use an existing desk top.

Categories
Experiences General

Personal Goals for 2021

I’ve never really been the type of person who writes “year in review” posts. Mostly this is because I don’t have any ventures that would be interesting to report yearly results on. What I have done in the past was to set some personal goals for the coming year, which I managed to do for 2016 and 2017. For some reason, I skipped setting goals for 2018 but picked it up again for 2019. I also didn’t do any goal setting for 2020, which turns out might not have been the worst idea, given how the year ended up turning out!

If I think about it, one of the possible reasons I skipped out on public goal setting for 2018 and 2020 was the fact that both 2017 and 2019 were quite busy, so I didn’t really have time to set any specific plans for the year to come.

This year I do have some very specific goals for things I want to achieve in 2021, so this post serves as a record for those goals.

It’s worth noting that these are very much personal goals, and fall outside of what I want to achieve professionally in my career as a developer. That’s a whole other blog post…

Write a book

I’ve had the idea to write a book for about 2 years now. My initial attempts to start a book on working with freelance developers didn’t make it past chapter 1. That was partly because, over the course of the last two years, I’ve moved away from freelancing. I think my best option here is to focus on a technical book, something which I’m very comfortable with, and something that I think people will actually pay money for.

I already have one idea, based on a talk I gave at a conference a few years ago. It won’t be the longest book in the world, so I’m not expecting it to make millions, but if it goes well it should inspire me to create more technical content. I’ll probably look at writing it “in public” so to speak, using this blog. What I may do is write the outline and introductory chapter(s) as a couple of publicly published blog posts, and then invite folks to pre-purchase access to the rest of the content, as it’s being written. I’m not entirely sure if this will work but I have a feeling that knowing folks have prepaid for the final book, meaning they want to read it, will help me focus my efforts towards finishing it.

Plugin Testing Course

Earlier this year I came up with the idea of creating a WordPress plugin testing course. I even got as far as creating the outline for the course, but that’s as far as I got, for two reasons. Firstly, I discovered a fellow WordPress developer has already released a similar course (he kindly invited me to take his course and give him my feedback, which I’ve embarrassingly not had the chance to do yet, sorry Fränk). Secondly, the global pandemic had an effect on the amount of time I could spend on non-income-generating activities.

This is still something I would like to look into, perhaps from a different perspective, in the new year.

Open Sourcery Podcast

I initially launched the WP Hacker Cast on a whim, with no real plan other than trying to connect with fellow WordPress folks. Last year I didn’t really have much success with it, but I did at least manage to interview someone I’ve been dying to talk to since it began.

In 2021 I plan to rebrand the podcast and move the focus away from just being about people in WordPress, to being about all folks involved in open source projects. I have some very interesting people I follow on social media, and I’ve never been able to invite them to the podcast, because of it’s WordPress slant. By switching to a more general focus on open source, I hope that I’ll not only be able to interview interesting WordPress folks but folks from all walks of life in our wider open source community.

WP Notify

Speaking of open source, this year I am looking forward to being able to put more time into WP Notify, the WordPress notifications feature project I’ve been working on for almost a year and a half. Over the course of last year, I struggled to find a way to put regular, scheduled time into it, so for 2021 I plan to dedicate at least one hour per week to make sure the project is moving forward.

Moar blogging

In 2020 my blogging efforts suffered. A large part of this is that I didn’t really have a lot of solid ideas to talk about. I tend to prefer to blog about things that might be interesting to my handful of readers, be it general tech content, development tutorials, or personal updates that might interest folks. My hope is that with the goals I’m setting this year, I’ll be doing more interesting things, and therefore have more to blog about.

Categories
Development Experiences General Ubuntu

Building A New AMD Powered Workstation

If there’s one hobby that I have that I don’t get to spend much time on, it’s building/upgrading PCs.

A few years ago I upgraded my 10-year-old workstation/gaming PC, to something a bit more modern. At the time I was working with a fairly limited budget, and so I had to make some concessions around what parts to purchase for the upgrade.

During the course of the 10 years since the original build, I had added a 128 GB SSD boot drive and included additional two additional 1 TB HDD storage drives. So when I upgraded I opted to merely improve the PC internals, namely the motherboard, CPU, memory, and graphics card. The plan was to use this as both a workstation PC as well as for gaming and keep my laptop for remote work/conferences. During the upgrade, I discovered that I had a spare 128GB M.2 SSD from my then laptop that I could use as a secondary boot drive. So I ended up with a dual boot Windows (for gaming) and Ubuntu (for work) machine.

I’ve been using this way successfully for the past two years, but over the course of the last year, a few things become clear to me.

Firstly, while the 128 GB M.2 SSD was nice and fast as a boot drive for Ubuntu, it wasn’t enough space to keep all my work-related files on, so I had to purchase an additional 1TB storage drive, move my work files there, and symlink them all up to my boot drive. This meant that indexing new projects in PHPStorm could often be painfully slow.

Secondly, Steam Play, and especially the work being done on the Proton tool, was getting REALLY good. It’s gotten to a point where most modern triple-A games run natively on Proton or require a few tweaks here and there to get running smoothly. Even Star Wars: Jedi Fallen Order (my favourite game of 2019), got to Gold level status on ProtonDB, even with the EA Origin account sign in required nonsense.

Thirdly, and a little selfishly, I wasn’t actually getting much time to game. Call me stupid, but as it turns out, the plan of having a gaming PC that would double as my workstation, while sounding like an amazing idea (gaming in my breaks during work hours, woohoo!) didn’t quite work out. In the two years since I upgraded the PC, the only game I actually managed to play through was the aforementioned Jedi Fallen Order, and that was only because I took the PC home and played in the evenings during my year-end leave.

With these realizations, I spent the latter part of 2019 and the rest of 2020 putting some money aside for a new build. The new PC would remain at the office, and the older, upgraded one would come home, giving me the ability to work and game at both locations. Over time I will probably only need to upgrade specific parts of the new machine to stay up to date, and then the parts they replace could be moved to the older one. By the time November rolled around, I’d saved enough to buy the parts for a modest mid-range build, with a decent upgrade path for future changes. Given that 2020 turned out to be the year it was, I decided I would like to end the year on a happy note.

A note on naming. I used to always call my workstation/gaming PC “Psyrig”, a portmanteau of my then online nick (Psykro) and the word “rig” (from the term gaming rig). As I got older I’ve dropped that name, and simply called it my workstation/gaming PC. Now that I have two, with different sets of parts, I’m going to have to think up some new names.

The parts

After much online research, I finally settled on the following parts

  • AMD Ryzen 5 3600 CPU
  • Asus TUF GAMING B550M-PLUS (WIFI) Motherboard
  • 16GB Corsair VENGEANCE LPX DDR 4 RAM
  • Samsung 970 EVO Plus 500GB NVMe SSD
  • Gigabyte GeForce GTX 1660 Ti OC 6GB Graphics Card
  • Cooler Master MWE GOLD 650W ATX PSU
  • Cooler Master Masterbox K500L ATX case

The motherboard was the most important part of the build. I wanted something that would be solid now, but have a decent upgrade path. The Asus board supports both the current-gen AMD Zen 2 CPUs, as well as the newly released Zen 3 chips, has PCIe 4.0 connectivity, supports the latest standards for external ports (USB 3.2 and USB Type-C) as well as having built-in WiFi and Bluetooth. So when the time comes to upgrade either the CPU or the Graphics Card (or both) this board should be able to handle it.

I really wanted to get an X570 based board, but the price was just to high for my budget, so the B550 would have to do.

The AMD CPU was the second most important part. I’d been eyeing the Zen2 Ryzen 5 3600 for a while, and it was a great little upgrade from my previous 2600x.

The third most important part was a decent-sized NVMe SSD, that I could use for my boot drive, as well as for storing my work-related files, instead of needing to offload them to a separate hard drive. This also meant I could keep one 1TB HDD with the old PC, for general storage.

When it came to the graphics card, I didn’t quite have enough in my budget to afford an RTX 2060, so I opted for a GTX 1660 Ti instead. Once the current shortage of the new graphics cards is over I’ll probably want to upgrade this to either an RTX 3060 Ti or the equivalent AMD 6000 series card.

I wanted to get DDR4 3200 Mhz RAM, but that was out of stock so I settled on DDR4 3000 Mhz RAM instead. To round out the build, I went with a Gold rated 650W power supply, that can handle any modest planned future upgrades, and the Masterbox case because it was the most understated, within my budget.

The goal of this build is to only ever need to upgrade the graphics card when the current one gets a bit out of date. The rest of the hardware should be pretty solid for at least a couple of years, and I can easily swap out anything that might cause bottlenecks down the line.

The build

I decided to stream the new build, instead of just taking before and after shots. I only ended up streaming the pre-build, where I made sure that all the parts were working, as trying to get a decent camera angle while I put the parts inside the case proved more difficult than I had anticipated.

Warning, content slightly NSFW

The completed build looks more or less how I wanted it to, simple, clean, fairly well cabled managed, and with all the RGB on the motherboard turned off. I still need to turn off the front fan RGB, but that’s only still on (I think) because I didn’t connect up the fan headers to the motherboard properly, so that’s a problem for another day.

Benchmarks

Hardinfo

I discovered Hardinfo when I wanted to benchmark my workstation against my laptop, for my Zenbook laptop review. While the benchmarks are related to the processing capabilities of the CPU, it was nice to see that all of those benchmarks were improved across the board in the new build. The only benchmarks that were worse were the FPU (Floating-point unit) benchmarks, which was interesting, but I have no idea what this means in the grand scheme of things.

BenchmarkWorkstation1LaptopWorkstation2
CPU Blowfish (lower is better)0.971.050.50
CPU CryptoHash (higher is better)1284.821058.341613.40
CPU Fibonacci (lower is better)0.550.390.28
CPU N-Queens (lower is better)5.124.804.40
CPU Zlib (higher is better)2.351.462.82
FPU FFT (lower is better)0.800.650.70
FPU Raytracing (lower is better)2.561.134.47
GPU Drawing (higher is better)16462.808428.9919499.27

UNIGINE

In my Windows benchmarking days, 3DMark would have been my go-to graphics benchmark tool. However, I wanted to test something on Ubuntu. After a bit of searching, I found UNIGINE, and installed and ran the Superposition benchmark, at the “1080p medium settings” configuration on both PCs.

The old machine had a score of 7355, with an average framerate of 55, while the new machine had a score of 11153 and an average framerate of 83.

For completeness, I also ran the benchmark on “1080p high settings” on the new build, and recorded a score of 8111, with an average framerate of 60. While I can’t compare this to the old build, as the 3GB VRAM on the graphics card can’t handle the high settings, it’s nice to know that I should be able to run most games at high settings going forward, or as a worst-case scenario, drop down to medium.

I’m very happy with this new build, and I hope I don’t have to upgrade anything major for at least a year. That being said, I am fully aware that the new AMD CPUs and GPUs, as well as the new nVidia GPUs, have just launched, so I have no idea how long things will last in their current state. I’m a bit of a sucker for new upgrades!

Categories
Experiences

Taking on new (old) challenges

Life is a funny old thing. When I left working for an employer back at the end of 2015, I never dreamed I would, in the short space of 5 years time, come back to being employed full time again.

Back in June of 2019, I shared the news that I had accepted an increased role at Castos, that of lead developer. Accepting this position meant that I could dedicate more of my time to working with Craig and the rest of the Castos team, and would be spending less time working with various freelance clients at Codeable. The agreement between Craig and I was that of a 75/25 split, I would spend 75% of my time on Castos tasks, and the other 25% working with freelance clients through Codeable.

Now, just over a year (and 8000 plus new sign ups) later, the requirements for that role have grown to a point where it needs someone who can focus 100% of their time to it. So, from 1 October 2020, I am happy to announce that I will be dedicating all of my resources to Castos as Development Lead, overseeing the development efforts for our web application and our suite of WordPress podcasting plugins.

The title itself is arbitrary, it’s the journey ahead that excites me. In the past three years we’ve grown from Craig and myself to an 8 person team working on the Castos Hosting and Analytics platform (with a new developer to be added shortly), as well as being joined by folks from Craig’s other business, PodcastMotor, who manage our new Castos Productions service (About page images pending).

So while I will still be working on building new features for our web application and the WordPress plugins, I’ll also be more involved in finding ways to improve our development processes, scaling our platform to meet the demands of our customers requirements, while helping to make sure our software makes our customers more successful, and also supports each member of our team do to their best work.

In line with this change, I’m also looking forward to spending more time on our WordPress plugins, streamlining them for our WordPress users, and making it simpler to build and manage a successful, self hosted WordPress podcast.

Going forward, the content of this blog is also going to undergo some changes. There will be a shift away from freelance developer focused content, and will be more in line with whatever I am working on, or learning, as I navigate this new path. I’ll probably be overhauling my about page, and a few of the general content pages.

Most importantly, I won’t be taking on any new freelance clients. This means if you are looking for someone to work on your development project, I’ll rather redirect you straight to the Codeable developers page, where you can search for your perfect WordPress expert, and start a project with them.

I consider myself very fortunate to be working with such an amazing team of people, building a product that we all believe in, while supporting open source software at the same time. It’s been an amazing 3 years growing into this position, and I am looking forward to the next 5 years (and beyond).

Categories
Development Experiences Freelancing Ubuntu

ASUS Zenbook 15 UX533FD review – an Ubuntu friendly developer laptop

I’ve always been a fan of Dell laptops. While often a little more pricey than their counterparts, their laptops are usually well built, typically run Ubuntu without any hassles, and Dell have great after sales service. My last two laptops where Dell.

I’d been eyeing the Dell XPS 15 for about a year, and I had planned to purchase one when I was due for an upgrade. However, sometime back in 2017, someone I follow on Twitter suggested something I had not thought of, the Asus Zenbook range.

Now as a PC gamer, Asus is a well known brand. The produce some of the best PC gaming hardware around. In recent years they’ve switched to more integrated hardware, from tablets (my first Android tablet was an Asus) and more recently to laptops. So I was curious to see how the Zenbook range compared to the Dell XPS range.

The first thing that struck me was the wide range of ZenBook Series laptops available. After some extensive research, I eventually settled on the Asus Zenbook 15 UX533FD.

General impressions

I’ve been using this laptop for almost a year now, and I’m very happy with it. It boots fast, runs all my applications without any problems, and is super light and easy to carry around. Whenever I’m working in it, it never gets hot, and I hardly hear the cooling fans spinning up, so it’s super quiet as well. It has a average of 10 hours battery life if I’m using it for development all day, and an added bonus is that it looks really good, with the Royal Blue finish. You can read more about the tech specs here, but it has everything I need in terms of connections. Finally, the charging cable is also small and light, so when it’s in my laptop backpack I hardly even notice it’s there.

Cost Effective

I always prefer to limit myself to a specific budget, this time around, no more then ZAR25 000. I also tend to have specific minimum hardware requirements when it comes to a work laptop, preferring a decent Intel Core i7 CPU, at least 16GB of RAM and a 512 GB SSD hard drive. I’m not too worried about getting the latest and greatest of the Intel chips, nor do I need a 4k or touch enabled screen. I’m also not concerned about super powerful graphics or the number of additional ports it has, I just need at least one or two USB ports and an HDMI port.

Based on these specifics the Asus Zenbook was the clear winner, being available within my budget at ZAR7000 less than a Dell XPS, configured with almost exactly the same hardware.

Ubuntu friendly

Whether it comes pre-installed with Windows Home or Pro does not really matter to me, as long as I can install Ubuntu on it without any problems. At first I had some issues with getting Ubuntu installed, but after a bit of research online I discovered that updating the laptop firmware to the latest version would resolve any issues. I also decided to install the most recent Ubuntu version, which usually contains the most recent kernel updates and therefore less hardware compatibility issues. The base OS install was a breeze and I didn’t need to jump through any hacky workarounds to get certain things working. I’ve since successfully upgraded the OS to the recent LTS release (20.04), again with very few issues.

Performance

I’ll be the first to admit that I know nothing about performance benchmarks, so all I did was find a benchmarking tool on Ubuntu that would give me some scores to compare. Hardinfo seemed to be a solid option, so I ran the benchmark suite on the laptop and compared it to my AMD Ryzen powered workstation.

I was pleased to discover that not only were many of the benchmarks pretty close, but a few of them were better on the laptop, mostly in CPU related tests. I honestly can’t say I can tell the difference when I’m working on my laptop vs the workstation, except when it comes to graphics intensive applications, like games.

BenchmarkWorkstationLaptop
CPU Blowfish (lower is better)0.971.05
CPU CryptoHash (higher is better)1284.821058.34
CPU Fibonacci (lower is better)0.550.39
CPU N-Queens (lower is better)5.124.80
CPU Zlib (higher is better)2.351.46
FPU FFT (lower is better)0.800.65
FPU Raytracing (lower is better)2.561.13
GPU Drawing (higher is better)16462.808428.99

I’ve since had quite a few online interactions with other developers who’ve also discovered the joy of the Zenbook range.

So if you’re looking for a small, powerful, good looking, well priced, Ubuntu friendly laptop, you won’t go wrong with an Asus Zenbook.

Categories
Experiences

Nobody likes you when you’re 43

When I met my wife in 2000, I had just turned 23. The previous year, Blink182 had released “What’s my age again?”, and she took great delight playing it for me.

I’d never streaked anywhere, but I’d done some pretty weird shit up till that point.

Today, I turn 43, meaning it has been 20 years since that event. Amazingly, my 23rd year was probably my own personal “rock bottom”, as I’d spent 5 years after leaving high school wandering aimlessly from job to job, living from party to party, with no idea of what I wanted to do with my life.

Meeting the woman who would become my wife, and the mother of my boys, changed all that. She saw something in me that I didn’t, and together we’ve shared an eventful 20 years together, 12 as a married couple. I am extremely grateful for her presence in my life.

So this year, on my day of birth, I am thankful not only for her, but for all the wonderful people who have helped shape the life I have made for myself today. If you are reading this, it means you are probably one of those people, so thank you for being a part of the journey that is my life.

Here’s to the next one!