I’ve been back into coding this month, on my own projects and not just for work. The passion isn’t “burning bright” anymore, but I’m working towards reigniting it by finding coding little bits of things doing what I want, etc.
https://jtiong.dev is a bit of a commit msg logging script that I had written and integrated with my local GitLab installation; but as you’ll see if you visit the site – October’s my highest number of commits in recent memory on personal projects.
The reason for the skewed figure is because up until about August 2022, I had most of my projects stored in GitHub. Some part of me still thinks I should keep things in GitHub – but I’m looking into using that as more of a backup style system.
The Code Backup Project
I know GitLab has a “mirror repository” feature – but unfortunately it doesn’t seem to be working very well for me (too fiddly).
So to get around that I’ll be looking at building my own little automated flow:

It’s not an ideal setup – but I think it will work for my needs. Because of how nagging it is, I may well end up writing the automation script entirely in PHP (this way, I can integrate notifications to myself over Discord and other things).
Other Projects
This month though, I also worked on:
- snackpack.gg – integrating it with my Snack Pack discord server which’ll let friends and family login with their Discord accounts, and see private content on the domain (members only areas)
- topdownshooter – my first sort of game project, name is self explanatory, written in Godot Engine, sort of to prove to myself that I can make a game that’s more than just a random prototype. It should have levels, a menu, and be packable as a real release
- Private Broadcasting System – a private broadcasting system for a friend – she’s an online radio DJ and runs a virtual club which people can tune in and listen to/participate in a talkback radio show
All-in-all, it’s pretty cool to get back into doing some tinkering things, and having the time and wherewithal to do them.
Recently with my career, health has become a thing I’ve been a lot more conscious of. Physical, mental, etc. So I’ve made the decision to move to 3 days per week, leaving Thursday and Friday available to me for health care and rest.
I’d like to eventually transition to a career in which I can work more independently as well, and the career options are pretty simple:
- Come up with a product – build and sell it (SaaS, etc.)
- Come up with a service – promote and sell said services (Contracting, etc.)
I have a couple of projects and things that I do which fall into the second category – I do some web hosting and consulting on the side, which produce some income for me. So I feel like I could certainly return to pushing those paths a bit more if need be.
Games are a passion project…
– me, now.
However, I’ve always wanted to build a game. Since I was a kid playing Super Mario Bros. on the NES back in the 90s, all the way through my adult life – I’ve always been a gamer.
In my mind, games aren’t something you build to make money – sure there’s that one in a million opportunity to build a Minecraft, or the next World of Warcraft. But that’s both extremely rare, and extremely difficult to achieve. Games are a passion project, and if you’re lucky, you get a financial reward if you find something that strikes a chord with the gamers who try your game out.
I’m at a stage in my career where I can afford one last hurrah at a passion project beyond the gaming events and marketing adventures of yesteryear.
Time to give it a go!
Do you have a plan?
I’m not quite sure about the games I’d like to make yet. But I think the plan is to build:
- Some basic indie games to learn games development, and;
- learn some basic art creation (2D – Aseprite, 3D – Blender) to flesh out said games, and;
In terms of sound creation and audio design – I may just leave to 3rd parties, if I’m honest – Audio is always and will forever be a dark magic for me
Okay…
So why am I blogging here about something I haven’t even started?
To keep myself publicly accountable. I’ve already told my mates on Discord, now I have to just execute 😂
I work on a lot of different coding projects from a personal perspective. Usually depending on mood, or other factors, I will jump from project to project, working on them whenever time permits. My most recent role in my career left me a little bit short of coding and development time; focusing instead more on project delivery, and team management to get a big product across the line at a FinTech startup.
So, to get my coding juices flowing once more, I thought I’d whip up some self-hosted work:
- Deploy and install GitLab to manage my code
- Build a site to track my activity to get back in the swing of things
Cue, https://jtiong.dev
What’s the purpose of this?
It is a simple quick overview of my activity on the code repositories that I’d ported over to my localized GitLab installation. It will let me see what I’ve been working on recently, and keep me motivated, on continuing to polish my skillsets.
What this project demonstrates
Well, this demonstrates several things I thought might be handy going forward:
- Deploying an NGINX Proxy (on an external machine), via Docker Compose to manage the incoming connections to jtiong.dev and other various websites
- Deploying GitLab Community Edition onto a different physical server for my personal use and code management
- Creating a Docker Compose deployment based off the
php7.4-apacheimage for the site - Using my own framework Spark – to create this site
- Using a self written URL Router
- Using PSR-4 to autoload classes
- Interacting with the GitLab REST API
- Using Bootstrap 4.x for a very simple frontend
Source code to the site can be provided as needed to, although I really need to clean it up.
It’s been good getting back in the saddle for some basic web development again! 🙂
I’ve got several servers which I work on, and quite often, this involves running regular cron’d tasks that perform various backups and configuration updates for me at odd schedules (as an example, my Rust server wipes fortnightly, and needs a config update to change the server name to reflect the last date wiped).
To do things like this, I’ve usually just written a script in PHP and run that at a given interval (daily or otherwise). There’s no real reason I chose PHP to write these scripts aside from familiarity with the language, and no doubt the rest could be easily achieved be it through Python, Shell Script or any other language out there.
For now though, PHP serves my needs just fine.
The problem is, I don’t actually keep these scripts backed up anywhere, or organised in any sort of manner!
The age of GitLab
Over the last couple days, I’ve implemented GitLab into my homelab stack (JT-LAB), and will be using it to store most of my code as a “source of truth” and subsequently sync things to GitHub afterwards (depending on the projects of course).
To the Game Servers, Four Branches…
Based off the various server types; specific branches would be used. For now, these would be:
- Rust
- Minecraft
- Factorio
- Satisfactory
Each game would be represented in its own branch, and based off that branch, would deploy a specific set of commands as needed. For the most part, only Minecraft retains itself in persistence, and the rest rely either on a voted wipe, or scheduled wipe paradigm.
To the File Systems, Five Branches…
Then we have servers with actual file resources and assets that I’d like to keep; things like Photos, Design Assets, old code references, etc. These would be:
- Media
- Design
- Research
- Education
- Maintenance
And nine, nine branches were gifted to the Websites
I also run a number of websites for friends and family on a pro-sumer level. I won’t really list these projects, but they do total up to 9! So it all kind of fits the whole LOTR theme I was going for with these titles.
One Repo to Rule them all…
The decision to build everything into one repository to manage all the core backup operations means I have less to track; for a personal system, I think this is fine. Monolithic design probably isn’t the way to go for a much larger operation than mine though!
Announcing…
Cronjobs
So this is the hypothesized project I’d like to build over the next few days; in combination primarily with jtiong.dev which will help track the commits and such that I do. Writing these projects up here as project whitepapers on a more formal basis might help with some resume stuff going forward for my future career 🙂
With the implementation of my JT-LAB homelab; it stands to reason I should probably self-host whatever I can to try and get a decent use out of the stupid amount of money I’ve poured into the project. Being able to ensure I’m only sharing the data that I want to share as well (for whatever reason) – is pretty important to me as well.
Normally, the majority of my code to-date, has been stored on Github (which is fine, it’s fantastic and it’s an amazing free resource for the world). But my workplace had an implementation of Gitlab that I thought was done pretty well.
So, I’m going to take it upon myself to implement GitLab into JT-LAB, and make sure there is a version of my work that runs from GitLab. Github will essentially become my backup for code (Github being way more reliable in uptime than anything I’d run like GitLab etc.)
Why is this so important?
GitLab is going to work as my core repository and project management system; with it, I’ll be able to store and update my code for various projects as previously mentioned
What’s the challenge?
Well, after some wrestling it’s implemented – however the one area that I’m most unsure with, is the AutoDevOps feature of GitLab.
Lots to learn!
So, I’ve got a “main” website – https://jtiong.com (which is currently Error 500’ing)
Which runs on a fairly old version of Laravel. Since it’s inception; the site was used mainly as a central one-stop shop for everything about my presence on the internet. Oh how times have changed.
Nowadays, it makes more sense with a number of domains I own, to split up the content and footprint of my stuff on the internet from a singular jtiong.com website, into a number of different sites based upon what people trying to find me for, or to categorise the activities I do.
Domains I have include:
- jtiong.com (this site) – my personal blog, which is strictly just personal, non-professional stuff
- jtiong.dev – where I hope to eventually host some sort of software development info about myself
- jtiong.network – currently a serverless site experiment, however I hope to change this
- jtiong.com – a central landing page from which people click through to the other domains
So what does this mean?
Two new projects! The .com and .dev domains which will be important as part of my “online resume” so, I really should get them done sooner rather than later…!
However, this also means I need to really look into how I implement these!
Laravel will be driving:
- jtiong.com – a landing page/gateway system
- jtiong.network – services and resources for friends & family
I’m looking at using the Socialite package for Laravel to integrate login via Discord, this’ll mean that certain links and features will only be visible based off friends & family that have certain roles in my Discord server; or at least, that’s been the original intent.
My Own Framework (which I call Spark) – will be driving:
- jtiong.dev – dev blogs, resources
This dev site will be more of a technical dump to keep me consistently working on my coding skills. The setup of this site is a traditional website that’ll ride on the tails of my intended GitLab installation. The fallback of course, is to just use the GitHub API, but I’ll only start looking at that later.
The site should just start listing out my commits and on what projects they’re made on to try and keep things accountable and interesting. It’s just a cool little showcase project.
More features might be added later relevant to doing development work in the future!
I recently chose to go the Unraid route with my media storage server; I was lucky enough to be given a license for Unraid Pro, and straight up, let me say:
- It’s easy to use
- It’s beautiful to look at
- It’s stupid simple to get working
BUT…
My server uses an old spare desktop I had lying around:
- AMD Ryzen 7 1700 (1st generation Ryzen)
- 32GB DDR4 RAM
- B450 based motherboard
But therein lies the problem. It turns out that Ryzens crash and burn with Unraid by default. You need to go into your BIOS settings, and turn off the Global C States power management states settings. Insane.
Why am I writing about this?
Because it took me 2 weeks to reach this point, wrestling with Windows storage, wrestling with shoddy backplanes in my ancient server chassis (which I then ordered a replacement case which set me back a pretty penny); new SAS controller; new SAS cables…
This is an expensive hobby, homelabs.
Local media storage. Yeah.
That’s right, I’m running Windows 10 Pro for a home server 😂
It’s been good so far, the machine is pretty old, but it is there for running things like local media storage, maybe a few other things that aren’t GPU reliant. It has an ancient PCIe 1x GPU in it (a GT 610 haha) that can’t really do anything more than let me remote in and work on the PC.
Although I do definitely want to run:
- Core Keeper
- V Rising
On the PC for friends and family to check out 🙂
Storage is a bit interesting; I forked out for StableBit Drive Pool and StableBit Scanner (there’s a bundle you can get) and it’s a simple GUI to just click +add to expand my storage drive with whatever randomly sized hard drives I have.
Why’d I do this instead of the usual zfs or linux based solution?
Mostly to keep my options open; it’s nice seeing a GUI and if Windows can handle my needs for my local network, I’m not doing anything extremely complicated, and the “server” it’s on is going to act as a staging ground for anything pre-gdrive archive.
I could just as (probably more) easily achieve the same results doing this over something like Ubuntu Server; except for the game servers mentioned above. There are some games that just require a Windows host much better, so this is what this machine is for.
April and May’s been a busy time for both technically for work, and at home with JT-LAB stuff. Work’s been crazy with me working through 3 consecutive weekends to get a software release out the door, and on top of that working to some pretty crazy requests recently from clients.
I had the opportunity to partially implement a one-node version of my previous plans, and ran some personal tests with one server running as a singular node, and a similarly configured server with just docker instances.
I think I can confidently say that for my personal needs, until I get something incredibly complicated going, sticking to a dockerised format for hosting all my sites is my preferred method to go. I thought I’d write out some of the pros and cons I felt applied here:
The Pros of using HA Proxmox
- Uptime
- Security (everyone is fenced off into their own VM)
The Cons of using HA Proxmox
- Hardware requirements – I need at least 3 nodes or an odd number of nodes to maintain quorum. Otherwise I need a QDevice.
- My servers idle at something between 300 and 500 watts of power;
- this equates to approximately about $150 per quarter on my power bill, per server.
- Speed – it’s just not as responsive as I’d like, and to hop between sites to do maintenance (as I’m a one-man shop) requires me to log out and in to various VMs.
- Backup processes – I can backup the entire image. It’s not as quick as I’d hoped it to be when I backup and restore a VM in case of critical failure.
The Pros of using Docker
- Speed – it’s all on the one machine, nothing required to move between various VMs
- IP range is not eaten up by various VMs
- Containers use as much or as little as they need to operate
- Backup Processes are simple, I literally can just do a directory copy of the docker mount as I see fit
- Hardware requirements – I have the one node, which should be powerful enough to run all the sites;
- I’ve acquired newer Dell R330 servers which idle at around 90 watts of power
- this would literally cut my power bill per server down by 66% per quarter
The Cons of using Docker
- Uptime is not as guaranteed – with a single point of failure, the server going down would take down ALL sites that I host
- Security – yes I can jail users as needed; but if someone breaks out, they’ve got access to all sites and the server itself
All in all, the pros of docker kind of outweigh everything. The cons can be fairly easily mitigated; based off how fast I file copy things or can flick configurations across to another server (of which I will have some spare sitting around)
I’ve been a little bit burnt out from life over May and April, not to mention I caught COVID during the end of April into the start of May; I ended up taking a week unpaid leave, and combined with a fresh PC upgrade – so the finances have been a bit stretched in the budget.
Time to start building up that momentum again and get things rolling. Acquiring dual Dell R330 servers means I have some 1RU newer gen hardware machines to move to; freeing up some of the older hardware, and the new PC build also frees up some other resources.
Exciting Times 😂
For some bizarre reason; WordPress has decided to start hyphenating my posts. I don’t recall it ever doing this originally when I used to use WordPress all those years ago, but it’s ridiculous now. It’s not really a great way to present readable content (at all!)
Luckily it’s also much easier nowadays than having to hack apart the style.css in the theme files editor in the Settings section.
Now, I can just customize stuff > add additional custom CSS and paste in…
.entry-content,
.entry-summary,
.widget-area .widget,
.comment {
-webkit-hyphens: none;
-moz-hyphens: none;
hyphens: none;
word-wrap: normal;
}
et voila!