Last One Flying 2025-03-17 I created a retro-inspired arcade space shooter game. I made it using the with the Phaser Game Framework . Play now for free on itch.io Overview Table Name Last One Flying Client Colin Kiama Project Link https://colinkiama.itch.io/last-one-flying Project Type Game Technologies Phaser.js , Bun , JavaScript Categories Action, Arcade Gameplay # In Last One…
Introduction # I’m pretty comfortable with collaborating in open-source projects however, this wasn’t always the case. A couple of years ago, I was intimidated at the idea of contributing to someone else’s project publicly. I used to think that I was the only one who felt like this but after asking people about this , I’m starting to suspect that many people feel the same way (Not a large enough…
Intro # Recently, I finished writing a blog series over four months. During that time, I refined the process of me writing and publishing my work. The changes I made to my writing process over that period have improved the structure of my writing and increased the frequency that I publish each post over time, especially the time between the last three in my "Making Four-In-A-Row" blog series . In…
Intro # In the previous blog post , you added the status area to the game. Players and spectators now clearly understand what's happening at any time during gameplay. In this post, you'll add the ability to restart the game without having to refresh your browser. You'll do this by adding a "Play Again" button to the game. What Is The Play Again Button? # Let's take one more…
Intro # Welcome back! In the previous blog post , you drew the game board and made the game playable by clicking on the board columns. In this post, you'll be adding the status area component to your four-in-a-row game. Breaking Down The Status Area Component # Let's refer back to the mockup of the finished game: The status area is at the top. It's broken down into 2 parts: Player…
Intro # Welcome back! In the previous blog post , you set up the canvas and created drawings on it. Now in this post, you'll draw the game board. Game Objects # What Is A Game Object? # The game features multiple drawings on the canvas. These distinct drawings take up space both horizontally and vertically. They may be made up of other smaller related drawings. These distinct drawings will be…
Intro # First of all, great job following along with this series! You've completed the first 50% of this tutorial so far! In the previous blog post , you reorganised the project in preparation for work on the front end of the game. This is the post where the work starts. Here's your expected outcome at the end of this tutorial: Here's a breakdown of the image above: Top part: Status…
Intro # In the previous blog post , you checked for wins and draws in FourInARowGame . Now you'll be reorganising the work you've done so far in preparation for the HTML5 Canvas front-end that you'll be creating for the game. Creating The Game Logic Directory # First, create a new directory in the src directory called gameLogic . Now move the src/constants directory and…
Intro # In the previous blog post , you implemented player moves. Now you're ready to check for wins and draws in the game. Checking For Wins # In four-in-a-row, there are three ways for a player to win a game: Place 4 consecutive tokens horizontally Place 4 consecutive tokens vertically Place 4 consecutive tokens diagonally. Since the board in the game has been created using an array of…
Intro # In the previous blog post , you set up your FourInARowGame class's fields. Now you're ready to start implementing player moves and updating the state of the game accordingly. Creating The Method # You'll start by creating a new method in the FourInARowGame class called playMove() : export default class FourInARowGame { // .. static createBoard ( ) { // ..…
Intro # In the last blog post , you set up the prerequisites and file structure of the project. Now let's start implementing the logic of the game. Rules Of The Game # Four-in-a-row is a two-player game played on a 6 (rows) x 7 (columns) rack board, where the objective is to be the first player to form a vertical, horizontal or vertical line with four of your tokens. The player who meets the…
Intro # In this blog series, I'll be walking you through how to make an HTML 5 Canvas Game. Outline: First, you'll create the core logic of the game - A back-end. After implementing the back-end logic of the game, you'll create a front-end for the game using the HTML5 Canvas API. The benefit of this approach is that you reduce the scope of bugs with core game logic by storing it all…
Happy New Year! There have been some big changes since my last blog post. Back to Windows # I switched from hopping between Linux distros to settling with Windows 11. I really value a predictable, well-supported environment. Windows 11 has also fixed a lot of the complaints I had about aesthetics of Windows 10. I’m pleased with what they are doing with Windows 11. Web Dev to Game Dev # After…
Vala Website (2022) 2022-07-15 I created a website for a programming language called Vala. It replaces an old set of wiki pages with a website that: Showcases Vala projects and features Shows off the language's branding Is optimised for speed Has improved accessibility (especially regarding navigation and colour contrast). Overview Table Name Vala Website (2022) Client Vala Community Project…
My System # I own a Starbook Mk V . I wanted the most seamless experience possible with the OS of my choice: elementary OS and wow, it delivers! It's fast, smooth, gets regular firmware updates over fwupd and support is great (in terms of drivers, touchpad support and customer support). Despite how slim it is, battery life is great. I average around 6-8 hours but on other operating systems…
Jailtime 2022-04-10 A browser extension that blocks websites by allowing you to add sites to a block list, making you more productive! Available on both Google Chrome and Mozilla Firefox. Overview Table Name Jailtime Client Colin Kiama Project Link https://chrome.google.com/webstore/detail/jailtime/ffkepigdcjmnioppkooocmpgndoiopjd Project Type Web Browser Extension…
I never remember the command for cleaning my remote branches so I decided to create an alias for them. The alias # git sweep This is a shortcut for the git fetch --prune command and a script that finds branches marked as gone then deletes all of them. There's more detail about the process here:…
Introduction # Around the time this article was written, this website was generated using Zola - a super-fast, modern static-site generator written in Rust ! Why is Zola used for this website? # My requirements were: Speed - I need the site to be generated as fast as possible Frictionless setup - I just want something that is simple to download and install. I don’t want to deal with potentially…
My thoughts # I feel like we could explore forums more Reddit lets anybody create a community around a topic. Discourse added a lot of dynamic social media-like interactions to the experience and allows you to host the whole experience yourself And there are still the old reliable static ones still used in some places. No JS required xD However, I haven’t really seen a balance of user freedom and…
At least one of these things have happened: 1. You aren’t happy # Take a break, do your favourite hobbies, go on a holiday, sort yourself out, sort your life out. You do your best work when you love what you do, feel good about yourself and when your are in a positive mood 😄! 2. You went straight to learning about how to do a task without starting it first # You’re overwhelmed and you’re probably…
February 2026 Update! Now includes gdb adapter instructions and additional configuration fields for a better debugging experience! Prerequisites # This tutorial assumes that you have a Vala program set up with Meson Build project structure. Vala is a pretty underrated programming language in my opinion (but I'll probably get into that in another post). Find out more about it here:…
One function in a new file is all you need # Check this out! // BlockListItem.js // / HTML Output // /<li class="block-list-item" data-controller="block-list-item" data-block-list-item-url-value="{{url}}"> // <span>{{url}}</span> // <button class="primary" data-action="block-list-item#delete">Remove</button> //…
Yachting Partners International (2021 Redesign) 2021-03-25 Covers all aspects of yacht services such as brokerage, chartering and management. I was the front-end developer for this project. Overview Table Name Yachting Partners International Wesbite (2021 Redesign) Client Yachting Partners International Project Link https://www.ypiyachts.com Project Type Website Technologies Twig ,…
Here's what I use on my personal computer! Operating System # I run Pop!_OS 20.10 on my main laptop. It's based on Ubuntu and it's the fastest and most productive Linux distribution that I've ever used! Development Tools # Visual Studio Code # My main code editor. It's has an easy to use layout, very customisable and is widely supported! Git # I use this for Version…
Pomodoro Timer UWP 2020-11-12 A pomodoro timer app with features like "always-on-top" mode, background support and the ability to customise your each interval and how many sessions you'll have. Overview Table Name Pomodoro Timer UWP Client Colin Kiama Project Link https://www.microsoft.com/store/apps/9PJSR2QK1V1V?cid=colinkiamaSite Project Type App Technologies UWP ,…
Dysprose 2020-11-12 A Windows 10 Application for times when your ideas aren't coming together/you need to focus. Start a session where you have to keep typing within a regular interval or risk all your work fading away right in front of you then save your work at the end. Overview Table Name Dysprose Client Colin Kiama Project Link…