A few years ago I started working for a company in South Africa that had a great focus on employee growth. Not only within your role at the company, but as a software engineer as a whole.
One of the recommended ways to achieve this growth, was to write technical articles on any topic that you have interest in. These articles were published on an internal platform accessible to all employees.
While writing such articles did raise motivation to learn new things and deepen your knowledge of your chosen platform or technology, it didn't really get much traffic. Of course that meant one wouldn't get a lot of feedback and eventually the number of articles dwindled.
Having seen value in writing articles, I thought it would be good to start writing for a larger audience.
In the two years before starting at the employer I mentioned, I was the director of a small software startup. One of the first (and eventually our staple) projects I took on was to build an ASP.Net MVC application for a client attempting to simplify their internal processes.
Although I spent most of my time doing the project management and client relations parts of the project, I had opportunity to develop some of the parts of the application.
At that point, I had comfortable settled into my role as a mobile developer, with specific focus on building applications for Apple iOS. The parts of the project I built was my first look at ASP.Net MVC and I thoroughly enjoyed the technology.
Seeing it as a good learning opportunity, I thought I would build an ASP.Net application to host my blog instead of signing up to blog elsewhere.
Along with learning ASP.Net MVC, there were some other things that I hadn't planned on having to learn.
Working with CSS, Razor syntax for designing views and probably most complex, Entity Framework. I invested in some courses and started building. It was going pretty well at first, but my rapidly ageing Windows desktop was not making the development any easier.
I had a fairly decent Mac Mini at the time and ASP.Net Core had released. I then started converting the project to .Net Core, so that I could develop on the more powerful Mac machine.
After some time figuring out a few quirks of the new platform, I had a version of the site ready to deploy. I had secured some shared Windows hosting and boom... nothing.
Turns out I couldn't at the time host .NET Core applications with out Kestrel, and with my shared hosting provider I could not set this up. My hosting provider at the time did not allow much access to the SQL Server instance that I needed while I was learning Entity Framework Core.
Eventually I got a shared VPS (VPS Hosting) that wouldn't break the budget, and allowed me all the access to all the tools I needed. Then it dawned on me that I really had no idea how to manage a server.
After a couple of months learning how to get everything setup, I finally managed to spin up the site and get it online. There was a few problems with the design and some bad implementations due to my inexperience but it was there and I was ready to start writing content.
Unfortunately due to circumstances that I didn't quite understand my VPS had to be re-imaged and I had to start over.
Around this time I was really busy with projects at work, and my wife was expecting our first child. With all of this going on, I paused the project and let it sit for a while.
When I eventually found the time to revisit the site, I decided to again rebuild to leverage Razor Pages instead of the previous MVC pattern, because there's not time like the present to learn something new.
This took a little time, but I really like Razor Pages, and I was very motivated to finally get the project done. After a long battle with the question of how to design the database and a few failed attempts, I had to pause the project again.
My family and I made the decision to leave South Africa and move to Ireland, where I was offered an opportunity I could not say no to.
It took some time to settle in and get used to my new role, but I decided to revisit this project one last time. By now, I had been toying on and off with this for nearly two years, and I didn't have enough spare time to learn the things I needed to learn to make this work.
It was time to rethink my approach.
The biggest obstacle that I faced was managing the content of the site. The decision was made to stop being stubborn and trying to build everything myself. I started looking for a content management system.
The requirements were fairly simple:
A CMS built for .Net Core, that was easy to use and would allow me to customise the front-end, so I could keep the pages I had already built.
A quick search later I had a list of CMS's that could be run in a headless mode (without any frontend).
Since I have little experience in web development I picked the first one that seemed easy to get going. It ended up being easy to install and setup, but very painful to customise.
I cleaned up the project and tackled the second one on the list. Again, easy setup and powerful customisation tools, but sparse documentation. I couldn't really make time to invest in figuring it out, so again, I cleaned up the project and picked the next CMS on my list.
Cofoundry (https://www.cofoundry.org/) was a pleasure to setup. The documentation was also detailed enough that I felt this was something I could work with.
Between the simple setup, detailed documentation and code samples on Github (https://github.com/cofoundry-cms/cofoundry) it was a breeze to use.
And here we are, I finally have IronSky Interactive online.
The first lesson I learned in building this site is that you have to manage scope.
Especially when learning a new technology. Picking up a big project is more than likely going to en badly.A lot of time was wasted in learning an entire set of technologies that were not strictly needed.
The second lesson: Don't build yourself what is already available. Trying to build content management features into a site while learning the technology around it was the cause of most of my frustrations and led to the longest delays in finishing the project. All while there are a host of content management systems that do the job a lot better than I could build myself.
The third lesson is to plan properly. Plan the features, as well as the timelines. It's easy to assume how long something might take, then get surprised by how wrong that assumption can be. Life also doesn't adhere to your schedule. Overestimating the time you have available to spend is also a cause for long delays.
With the site finally up, and the first post out there, the question is 'what next?'.
There are some additions to the site that need to be built. The first part would be a portfolio page to showcase some of my work. After that, I will focus on getting the Devlog section up, to group posts related specifically to my game development projects.
Other smaller expansion of the site is also being considered, like author bio pages and integrating a comment system to get feedback on the articles (which was one of the main motivations for building the site in the first place).
The primary focus for the immediate future would be some technical content.