RSSAmplifier

Blog

Colin Kiama

Welcome to the blog!

colinkiama.comRSS feed ↗26 posts

Latest posts

Last One Flying

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…

Git Kingdoms - Feel confident about contributing to open-source projects

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…

My Writing Process

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…

Making Four-In-A-Row Using JavaScript - Part 9: Play Again

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…

Making Four-In-A-Row Using JavaScript - Part 8: Status Updates

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…

Making Four-In-A-Row Using JavaScript - Part 7: Drawing The Board

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…

Making Four-In-A-Row Using JavaScript - Part 6: Blank Canvas

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…

Making Four-In-A-Row Using JavaScript - Part 5: Reorganisation

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…

Making Four-In-A-Row Using JavaScript - Part 4: Winning Ways and Tedious Ties

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…

Making Four-In-A-Row Using JavaScript - Part 3: Making Moves

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 ( ) { // ..…

Making Four-In-A-Row Using JavaScript - Part 2: Beginning

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…

Making Four-In-A-Row Using JavaScript - Part 1: Setup

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 2023! - What's new?

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)

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…

How I code in 2022

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

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…

Git Sweep Alias - Deleting stale local remote-tracking branches

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:…

My experience with Zola - The static site generator

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…

Forums

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…

For whenever I feel down and/or unproductive

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…

Get started with debugging Vala programs in Sublime Text

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:…

Dynamically creating component layouts in JavaScript

One function in a new file is all you need # Check this out! &#x2F;&#x2F; BlockListItem.js &#x2F;&#x2F; &#x2F; HTML Output &#x2F;&#x2F; &#x2F;<li class="block-list-item" data-controller="block-list-item" data-block-list-item-url-value="{{url}}"> &#x2F;&#x2F; <span>{{url}}<&#x2F;span> &#x2F;&#x2F; <button class="primary" data-action="block-list-item#delete">Remove<&#x2F;button> &#x2F;&#x2F;…

Yachting Partners International (2021 Redesign)

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:&#x2F;&#x2F;www.ypiyachts.com Project Type Website Technologies Twig ,…

How I code in 2020

Here&#x27;s what I use on my personal computer! Operating System # I run Pop!_OS 20.10 on my main laptop. It&#x27;s based on Ubuntu and it&#x27;s the fastest and most productive Linux distribution that I&#x27;ve ever used! Development Tools # Visual Studio Code # My main code editor. It&#x27;s has an easy to use layout, very customisable and is widely supported! Git # I use this for Version…

Pomodoro Timer UWP

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&#x27;ll have. Overview Table Name Pomodoro Timer UWP Client Colin Kiama Project Link https:&#x2F;&#x2F;www.microsoft.com&#x2F;store&#x2F;apps&#x2F;9PJSR2QK1V1V?cid=colinkiamaSite Project Type App Technologies UWP ,…

Dysprose

Dysprose 2020-11-12 A Windows 10 Application for times when your ideas aren&#x27;t coming together&#x2F;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…