
Hey! I build games and websites.
Unlike many game devs, I'm a Linux fan. I build my games using free software, and blog about what I learn along the way.
Hey! I build games and websites.
Unlike many game devs, I'm a Linux fan. I build my games using free software, and blog about what I learn along the way.
I founded a cutting-edge coding academy. If you live in the San Francisco Bay Area, you can learn to code by taking one of my affordable, intensive courses.
I've written some free software, including tools for game dev in Godot. I hope you find them useful!
I had a chance to install Linux and test-drive an Acer Swift (SF114-32) laptop today. What a fantastic unit! This is definitely my go-to recommendation for very-low end Linux laptops. It's got that "ultrabook" form-factor, vibrant 1920x1080 display, and solid battery life, all for below $200 price tag when purchased... Read »
This is a continuation of a previous article: Ubuntu 18.04 on Aspire 1 -- read it for information on this line of computer. With the Acer Aspire 1 (A114-31-C4HH and A114-31-C5GM) being discontinued, the obvious successor is the A114-32-C1YA with almost identical specs. As far as I know, it... Read »
It's been a while since I've been doing game development, so I'm excited to announce (perhaps a bit prematurely) I'm working on a new game! I downloaded the new Godot 3.1. Having not used the 3.x branch much at all, I am really happy with all the improvements... Read »
My exploration of the cloudBook If you just want to install Linux on our Packard Bell N14500, skip down below to the "How to install Linux" section. One of the only other models that fit that criteria is the Packard Bell cloudBook 14 N14500, available on Amazon. Unlike Acer Aspire... Read »
This is a guide on upgrading and/or migrating Mattermost 5.6 (from 4.x) in a deploy that used docker-compose. It's been a year, and I want to freshen up my Mattermost install, get some of the new features. I also want a bit more elbow-room in my Mattermost... Read »
This is an updated version of a previous article -- read it for more comments. About the machine The Acer Aspire 1 (A114-31-C4HH, A114-31-C5GM, A114-32-C1YA, and A114-32-P0K1) is a great and super affordable machine for running a Linux-based operating system. At only $180-220 new, its cheaper than many Chromebooks, and... Read »
Updated version of this article The Acer Aspire 1 (A114-31-C4HH) is a great and super affordable machine for running a Linux-based operating system. At only $209 new, its cheaper than many Chromebooks, and is the only computer at this pricepoint to have a full 1920x1080 HD display. It's very easy... Read »
Mattermost is a popular free software Slack alternative. Slack can get really expensive really quickly for organizations of any sufficient size, so you either bare with the extremely limited free plan (which holds your data "hostage"), or you switch over to a free alternative like Mattermost. With this, instead of... Read »
Over this weekend I jumped back into music production, working on some sounds for my current game project. I decided to switch around my work-flow and learn Ardour. Ardour is a totally free software Digital Audio Workstation (DAW) with a professional feature-set for macOS, Windows, and Linux. It has the... Read »
Thinking of porting a legacy JavaScript library to be a re-usable React component? In this post I describe the process I used to release a React version of JSC3D. Rational I needed a simple, fast 3D mesh ray-tracer in a React 16 project, and none of the few available seemed... Read »
I made a cool thing: Whiteboard is slideshow application for teaching programming. It embeds a code editor, terminal, and web browser into a slide-show like interface to eliminate context-switches and dead-space, while enabling more content content to be set-up ahead of time. It's great for guiding code-heavy classroom lectures, tutorials,... Read »
Already a front-end (or back-end) web developer, and curious about writing your own video games? Maybe want to try a new hobby in indie game dev for PC or console, or publish some mobile games? I made the transition, and so can you! I hope this 10 minute read will... Read »
Perhaps you are working on an action game or action RPG where different abilities need different cooldowns, but here's a tiny snippet that can be a re-usable Cooldown utility to check for when abilities can be re-used. Also useful for "rate-limiting" in general, e.g. adding a maximum rate of... Read »
Earlier this year I realized that there aren't any good cheat-sheets for students new to JavaScript and coding in general to learn the (relatively dense!) syntax of JavaScript. Today I decided to make my own! In the past I've really like printing up cheat-sheets as I learned new technologies. It's... Read »
When writing tasks for asynchronous functions in Python 3 I realized I needed a way to run through all tasks that were queued up with asyncio.ensure_future and similar functions. I wrote an async function to do this. The result is a little hacky, as it needs to catch... Read »
I'm writing this post since there were a lot of guides online on how to set up NPM so you can do npm install -g (that is, a global NPM install) on macOS or Linux without superuser privileges, but all those guides recommended a rather strange directory structure, such as... Read »
As I was configuring my new system (using dotfiles configuration app I wrote for this purpose: stowage), I was exploring the current options for minimalist terminal emulators, and I realized a common pattern I wanted was for new terminals to pop up in the same working directory that I was... Read »
In this post I will describe my my process to port JSC3D, an unmaintained 3D library that uses the browser's <canvas> 2D context, to run entirely in node.js. This allows a quite fast, easy-to-use CLI-based 3D model renderer. It looks quite good, without the need for GPU,... Read »
Drag and drop blocks onto the board to rack up points and advance to the next level in this addictive new spin on the classic game of tangrams. Two different modes cater to both casual and hardcore-puzzler game styles: Zen mode allows you to take your time to use the... Read »
A couple months ago I wrote about realizing "enough was enough" with my feature-creeped game. Along with working on other projects, I spent some time in the next couple months cutting out features and polishing existing ones, all working under a "late-May" deadline. Now, my new (much smaller) vision for... Read »