Hi. I'm John.

Sometimes I make games. Sometimes I make websites. This is my blog.

Bullshit calling, it’s for you.


A frame from this video.

The building manager of my apartment was recently fired after a viral video surfaced of him allegedly physically pushing a tenant out of his office. I found it interesting in the same way one does when watching any other train wreck in slow motion. Afterwards, an article was posted on The Record (Waterloo’s local paper) where an IN8 spokesperson, Darryl Firsten, stated:

“This is our 11th building in Waterloo and 10 out of 10 have been done on time, right down to the last blade of grass,” Firsten said.

I live in Sage 3 Waterloo, which is an IN8 development. I can confirm that, when I moved in on May 1st, 2015, it was so unfinished that we didn’t even have blades of grass. Work was being done for weeks after we moved in, including things like laying down sod, putting up fencing, putting furniture in the lobby, insulating pipes in the underground garage, adding locks to the outside doors, actually having a door in some places (rather than just a portal).

We were very lucky that the units themselves were ready. Many tenants of Sage 2 are not so lucky.

Use Pocket Without Being Tracked

Save to Pocket (mini)

I’m a huge fan of Pocket. It’s a read-it-later service that helps relieve some of the pain of losing Google Reader.

What I’m not a fan of is being tracked online.

Pocket has a bookmarklet that lets you save whatever website you’re on to your read-it-later list. I used this happily for months until an odd, compulsory update came along that changed the permissions from read/write access to anything done on only Pocket’s own site to read/write access to every website in Chrome. So, I deleted it, let Pocket know it was a problem via Twitter, and stopped using Pocket. I still loved the service, but without the ability to immediately save a web page to my Pocket, I no longer had exposure to it, and it fell out of my workflow.

That is, until an Internet friend recommended Save to Pocket (mini)! It is an unofficial Pocket Chrome extension that replicates the original bookmarklet’s functionality. Just click it whenever you want to read your current web page later and it goes right into your Pocket. No cross-domain cookies needed. Yay!

‘Nothing is “Built On Twitter”‘

Dustin Curtis nails it when he writes about Twitter:

And that leads to me to the final thing I want to talk about, which is also the most important: Twitter has fucked up its platform. Twitter has turned into a place where famous people and news organizations broadcast text. That’s it. Nothing great is Built On Twitter, even though it should be the most powerful realtime communications platform on Earth. There are simply no developer integration features for building stuff on top of Twitter as a platform, and that is absurd and disappointing. The fact that automatic tweets from apps are considered rude is one of the biggest failings of Twitter’s product team–Twitter should be the place for apps to broadcast realtime information about someone. And yet the culture around the Twitter community has effectively banned such behavior because the product doesn’t have features to filter/organize such notifications.

Twitter started off as a content creator’s dream. They had a freely available API and a massive, growing data-set open to anyone with some basic programming skills. That avenue was closed a few years after launch when they bit the hand that fed them and blocked basic API access to successful apps.

While I agree with Mr. Curtis’ overall opinion of the Twitter platform, I’m not convinced Twitter is “the right person for the job.” The service that Twitter provides should be given to the people who contribute to it, like Wikipedia does. The content and the platform should be completely open. Giving this responsibility to one for-profit company is simply a ticking time bomb.

It’s for this reason that I recommend as many interested people as possible look into running or contributing to the GNU Social platform. It’s a federated Twitter-alike service that’s completely open-source. People on one network can follow and reply to people who are on another. Even better is that there’s no 140-character limit!

Minecraft Resource Pack Fave of the Month

The first resource pack, Faithful 32×32, a 32 pixel by 32 pixel improvement stays true to the original 16 pixel by 16 pixel art style of Minecraft, has lasted longer than a month, but recently I’ve combined it with the Default-3d Minecraft Texture Pack to give it an extra 3d kick. It looks great and gives some new life to Minecraft. You can, of course, simply run the Default-3d Minecraft Texture Pack with the default 16x textures, but they don’t pop nearly as well as they do when paired with the solid Faithful 32×32.

Take a look.


Using Unity3d 4.x In a Team

I’m working in a team for the 2015 NASA Space Apps Challenge and this year, like last year, we’ve run into a billion and a half problems working with Unity3d and git with more than one person. After some searching I found an awesome website that included a gitignore file that seems to do the trick. I’m not trying to rip them off, but I’m incuding the gitignore file here for my own future sanity (and just in case their site goes down).

# =============== #
# Unity generated #
# =============== #
# ===================================== #
# Visual Studio / MonoDevelop generated #
# ===================================== #
# ============ #
# OS generated #
# ============ #

Please don’t change things just to say you did

play-buttonIt was a trend during the dark days of the web (read: before html5, when the world required Flash for animations on the web) that designers would create custom, wacky, non-standard navigation elements on their sites in an effort to look more “hip” or “cool.” When you went to any given website that employed this tactic, the first few minutes were spent hovering over icons to figure out what each of them did. This is, of course, after you waited for the website to “load.” This sort of horrible design got so bad that it became known as Flashturbation.

Thankfully, I haven’t seen much of Flashturbation since around the time MySpace died (correlation, not causation, I’m sure).

Still, it crops up from time to time.

Why am I writing about this? I just wanted to call out Red Bull’s website and their decision to break the play button, which has been a dominant design standard since the 1960s. I got halfway down the page before my mouse accidentally hovered over the triangle icon and it was then I discovered that the images were actually videos that could be played.

It’s okay to style an icon. It’s not okay to break it.

Hellblade Mobs / Xandorus Minecraft Server Warps


As most of our players have noticed, since Minecraft Release 1.8.x, xWarp has been broken. It’s been a mixed blessing: it’s fun to play true, legit survival, but it’s a pain if you want to visit a friend’s build without giving up the ability to warp back home. Until xWarp is fixed (I may have to do it myself), I’ve taken the time to export the warps from their cage in the SQLite database to JSON format. It’s not the easiest to read, but here’s how you can find the X, Y, and Z co-ordinates of your warps:

  1. Open Hellblade Mobs / Xandorus Minecraft Warps in your web browser
  2. Search for the warp name you are looking for (not one at a time, use the Search feature)
  3. Get the X, Y, and Z co-ordinates
  4. Type /tp <player-name> <X> <Y> <Z> in-game to teleport to your warp

Have fun!

Super Useful Windows App: Sticky Previews

I run into this situation all the time when working on graphics, 3d models, or converting web wireframes to HTML+CSS: the need to keep a mini snapshot of what I’m mimicking in the same frame as the window that I’m creating it in. Think Picture-In-Picture but for your desktop.

Enter Sticky Previews.

This handy app lets you create an arbitrarily-sized rectangle snapshot from anywhere on your desktop then lets you place and scale that rectangle on another screen or over other work on the same screen. Take a look at a quick 2 frame video showing a Chinese character in my Google Doc then the Sticky Preview in the bottom left of my Blender window. I’ll use this reference to model the Chinese character in 3d.

I purchased Sticky Previews years ago and have used it hundreds of times to speed up my work-flow. If you’re a web developer or designer, I’d definitely recommend it.

This Developer Hates Mobile

I support free software

There’s a common misconception that mobile is the future of software development. Mobile, in this context, means a touchscreen device like your phone or tablet.

I’m not picking on this particular author — he is simply regurgitating a common assumption — but this is the type of sentiment I’m writing about:

The era of the laptop and personal computer will eventually come to an end, but not until they allow developers and power users to do everything they can on high-end devices as easily on mobile devices. Before this can happen professionals of all sorts, the power users of the various platforms will need as much memory and processing power as they are currently using. (Source: grack.com)

I disagree with this mindset, almost entirely.

I do agree that most software development will happen for mobile devices, but I do not believe that software development will be on mobile devices, at least for quite a while, if ever.

There are two types of users: creators and consumers. The creators among us are the ones who tinker, who take things apart, who build things “just because.” Their needs are entirely different from the consumers, who enjoy having things “just work,” and do not need to know (or want to know) how it does that. Simply, consider the difference between a person who watches a movie and a person who makes a movie.

The problems with being a creator on mobile platforms are not related to the amount of performance we can get from them. Indeed, some of the higher-end tablets are very fast and quite capable of handling software development (my field), at least from a hardware point-of-view. It’s not the performance of mobile hardware, it’s their draconian software licenses and their sick culture of walled gardens which prevent us creators from doing our work.

The number one issue holding software development back on mobile devices is the operating systems which they run. Android, iOS, BlackBerry, and Windows Phone, all require “rooting” before most of the software is even available to a developer. As a developer, I don’t want to work on a device that does not obey my commands, nor do I want to work on one that requires a hack in order to obey my commands. This sort of device might be great for your mom and dad to watch things on, but it’s certainly not designed for creators to build things on.

Right now, the ideal development machine is the one in which I use: a PC laptop, running Linux and Windows. It lets me build anything I want quickly and without hassle. I don’t have to deal with any sort of bogus license agreements or ask for permission to build software for it.

In Canada, cell phones are sold locked to a certain carrier. This means that before you can switch providers, you have to call and pay to have your phone unlocked. Who really owns the phone, then? Can you imagine having to do that for your car if you wanted to buy gasoline at Shell instead of Esso/Exxon? It’s outrageous and a huge overstepping of authority by cell phone providers.

The most exciting parts of building hardware or software come from the freedom to explore, to scratch your own itch, then share that solution with your friends, who will go on to use it and change it to scratch their own itches. Mobile is heading in the opposite direction: locking everything down to keep the technical bits hidden away, and the fun of creation along with it.

There is a place for consumers. After all, the market cap of consumers is many times that of creators. But the place for consumers cannot come at the expense of the place for creators. Maybe the two never meet? Would that be a problem? Is there a solution which solves both needs? Does there have to be?

Until things change course and mobile device manufacturers start selling devices with open and libre software set, including operating system, and offering sane license agreements, this creator will stick with his laptop and Linux + Windows, thank you very much.

Notepad++, “Je Suis Charlie” Edition

Finally got around to updating my version of Notepad++. Was surprised but then delighted by this nugget that types itself out when it restarts:

Freedom of expression is like the air we breathe, we don’t feel it, until people take it away from us.

For this reason, Je suis Charlie, not because I endorse everything they published, but because I cherish the right to speak out freely without risk even when it offends others.
And no, you cannot just take someone’s life for whatever he/she expressed.

Hence this “Je suis Charlie” edition.
– #JeSuisCharlie

Google Drive Is Way Less Sucky

Just under a year ago, I wrote an article about how sucky Google Drive was to use. It was specifically about the Windows application, not the web-based interface.

Today, I’m happy to note that, after installing the newest Google Drive application, I’ve noticed that many of my criticisms have been remedied.

Google Drive's settings menu

Google Drive’s New Settings Menu

1. Google Drive now installs to a folder that accepts existing files.

This was a biggie for me since my Internet is horribly slow. I already had all my Google Drive files checked out into a folder on my hard disk. The old Google Drive app wouldn’t accept anything but a clean slate then duplicated files instead of overwriting them after I copied them into the new folder. This is now fixed and Google Drive started by comparing hashes of my existing library right after installing. Yay!

2. Bandwidth controls!

If you look at the screencap above, you’ll see the bandwidth settings feature which will let you limit bandwidth used for the Google Drive app. This is REALLY handy when you’d like to do other work while syncing instead of saturating your Internet connection.

I’m super happy about both of these changes.

Is it enough for me to switch back from using BitTorrent Sync for my music and pictures? No. I don’t think anything will bring me back to storing my files in the cloud the way we used to. Edward Snowden changed all that. Still, these are very welcome changes.

What I’m using Google Drive for: publicly storing my Minecraft server‘s world files. Players who want a copy can go to the folder in Google Drive and get them. For this use-case, with these application improvements, the service works close to perfectly.

The only outstanding thing that could be remedied is an easy way to download an entire folder at once, zipped.

The Power of Twitter (or, how it never hurts to ask)

Transport Tycoon

Open TTD Title ScreenTransport Tycoon Deluxe had a profound impact on my life when I was in high school. A friend an I found it in a nested-away folder on one of those pirate-rich, home-burned CDs that contained ripped games and were passed around between classes. At the start, we had no idea what a great game Transport Tycoon was but the graphics were really impressive and the game ran swell on our hardware (a 486SX at 33MHz and a Cyrix MediaGX at 180MHz). Not only were the graphics great, but the music was really catchy, as well. All of us (friends who later became enamoured themselves with the game) found ourselves humming it for months and years after.

I play the music now and again, even years later. It’s classic 16-bit MIDI is music to my ears. Still, I have always wondered what a live band adaptation would sound like.

Enter Twitter

Conversation on Twitter with John BroomhallSome people wonder what the point of Twitter is. I, myself, was one of those people until I realized about two months after joining that A) your experience is directly related to the quality of the people you follow, and B) it gives you direct access to famous people you would have no other way of contacting.

Hey wait! Why not contact John Broomhall about him doing a live band version of the Transport Tycoon!


Game developers and artists in the game development industry frequently guest post on Gamasutra, a blog dedicated to the art of game development. Guess what? John Broomhall wrote a guest post centred about his 20+ year experience in the game soundtrack field and included a little nugget which interested yours truly: a live band adaptation of Transport Tycoon’s soundtrack!

I’d just like to thank Mr. Broomhall for doing this and giving me such enjoyable music to listen to all these years. Also to Twitter for making it possible for us to directly speak to people who have made direct impacts on our lives!

Disable Oculus Rift Health Warning (Windows)

Oculus Rift Health Warning

I understand the need for a warning when loading an app for the first time off of the Oculus Share store, etc. but as a developer it’s insanely annoying to have to go through this thing every single time you run your game. So, if you’re working on an Oculus Rift app and you want to get rid of it while you work on it, here’s how to do it in Windows.

1. Create a text file called “oculus3d.reg” with these contents and run it.

Windows Registry Editor Version 5.00


2. Open the Oculus VR Config Tool and click on the “Advanced” button underneath the player height field.

3. Check the box confirming you don’t want to see the warning any more.

4. Develop your game faster by being able to save 10 seconds every time you test your game.

5 Types of Bad Gamification

For the past few weeks I’ve been on a personal mission to go through each of the games in my Steam library, one by one, and complete all of the achievements in them. This is known on Steam as a “perfect game.” and is listed in your profile page as such. So far, I’ve got one perfect game, but many others are very close. This award is binary, giving the impression that I’ve only played one game out of my list. This means if I have 99/100 achievements, it will not give me a “perfect game.” I have hundreds of games to play so it’s unlikely I’ll ever actually finish this. Still, it’s something fun to do.

My Achievements

If you’re not familiar with the concept of Achievements, think of Scouts badges: you get badges for completing certain actions in a game up and above the basic gameplay. An example might be completing the entire game without dying or finding all of the hidden gems in a level. They don’t directly affect gameplay but provide an interesting meta-game which encourages players to come back (known as replayability) and also gives a sense of completion when you’ve achieved them all.

There is also a listing, on Steam, which shows, per game, what percentage of players have gotten each achievement. For example, here is the achievement listing for a game called Race The Sun, which is a bit like a racing game where you also have to dodge obstacles.

All this is well and good, but who decides what these achievements will be? The game developers themselves. This is where we get into a sort of gray area where, if the achievements are garbage, they actually serve to disicentivize continuing to play the game. Below, I’ll provide a few examples of these “Anti-chievements.”

1. The “Play for X Number of Hours” Anti-chievement

Hey! You’ve already completed the game but to get this last achievement, you have to rack up some insane amount of hours just to say you did. Let’s say 50 hours? Excellent! This is fun!

Clickr: Play 50 hours!

You’ll note that only 1.2% of players have gotten this anti-chievement. I wonder why!

2. The “Do a Mundane, Repetitive Task X Times” Anti-chievement

There is a game in my Steam library that gives you an achievement once you click your mouse 500,000 times. Let that sink in for a minute.

Clickr: Click 500,000 times.

Clickr: Click 500,000 times.

3. The “Order of Magnitude Score” Anti-chievement

This one sometimes appears alongside #2 but instead of jumping right to 500,000 clicks, you get achievements at 1000, 10000, 100000, then 500000 clicks. Count ‘em: that’s FOUR achievements you get. Just for clicking! Aren’t you happy?

4. The “Play it all again” Anti-chievement

Wizorb is the most notable for this transgression. Part of the game has you rebuild a village over time using the coins you collect during game play. But, after you’ve beaten a large portion of the game, you may realize that there is an achievement for beating the game without rebuilding the town. If you didn’t notice this before you started playing, you would have gotten hours and hours into it, only to have to restart and replay the game again without doing this one thing at the very beginning.

5. The “Rely Completely On Luck” Anti-chievement

Faerie Solitaire was a fantastic game. The achievements were pretty good, overall, and would appear naturally as you progressed through the game. Still, there were two that most people never got and it’s not because they were bad at the game. They never got them because receiving the achievements were based entirely on random luck.

Essentially, during game play, there is a small chance that an item will drop. That item gives you the two achievements. The only way to get this item is to keep playing the game, even after you’ve long gotten every other achievement and beaten it many times in the hope that maybe you’ll win the lottery.

6. (Bonus) The Multiplayer Anti-chievement

If you are an indie game developer, please do not make multiplayer achievements for your game until you’ve got a large and thriving online multiplayer community in your game. Many games, even from small developers, will include some sort of “play against other people online” component. The trouble is that indie games tend to not have enough people on during the day for players to actually compete. So, in this case, it’s impossible to get achievements based around the multiplayer component of the game.

Moving a site from Drupal to WordPress

I’m in the process of moving my videogaming blog, GameBlaster64, over to WordPress. The most recent security vulnerability with Drupal coupled with the fact that core updates must still be done manually has pushed me to head in that direction.

In under a month, GameBlaster64 will be 4 years old. There are hundreds of posts, thousands of pages, and tons of images. It’s going to be 301 redirect galore. To help with this, I wrote a small php script to grab the URLs of the taxonomies and articles I’ve been writing. I’ll use file_get_contents to fetch these URLs and parse out the body content I want, then dump them into a stock, vanilla WordPress site I’ve got installed locally.

Here is my script. Depending on when you see this, it could either be completely finished or just a few functions. Regardless, if you’re doing something similar with your own site (moving from Drupal to WordPress), you’ll likely find something useful.

Xbox Live Beta Tester 2002

Let me set the scene: It’s 2001, pre-9/11, high school.

Having finally accepted the Dreamcast’s fate and being a major anti-PS2, Dreamcast fanboy (cut me some slack, I was 18 and lived in my parents’ basement), I became enamoured with Microsoft’s first foray into console gaming: The Xbox. I bought one on day one, fervently posted on all of the major forums, racked up hundreds of hours in local multiplayer Halo…

Then, to my happy surprise, I was to be part of the Xbox Live beta test. I was a bit of an online PC gamer at the time (Tribes 2 ftw) and had played quite a few hours of online console games on the Dreamcast.

Fast forward 12 years, and here we are.

I have been re-organizing my office since a number of people have given me boxes of their old videogame collections. In one of my chests, I found my Xbox Live beta tester box, which I received from Microsoft in September of 2002. Here are some snaps!

Original Xbox Live beta box

Original box – names removed to protect the innocent :)

Xbox Live Beta Test Discs

This is before consoles tracked how many hours you’ve played each game, but I bet “hundreds” for MotoGP and Re-Volt, each.

Xbox Live Beta Test Discs

Welcome to the future of gaming!

Xbox Live beta end of life

Set your clocks: 11.15.02.

By 2004 I had moved almost exclusively to the PC. I bought an Xbox 360 but sold it to a friend shortly thereafter, unimpressed. I was also very disappointed that they gave away my Xbox Live GamerTag, which was supposed to be ours for life.

C’est la vie.

Tough love, listening

I recently got some harsh and direct feedback from a person that I trust.

It was hard to listen to, but I needed to hear it.

For the past two years, I have lived alone. I’m responsible for me in almost every respect. In those two years, my skin has grown thicker, my balls bigger, and my confidence stronger. Because of this, it feels like going against the grain in society has become normal.

Many times over the course of a day someone whom I don’t know will point and laugh at me on my ebike or will criticize my decisions as former group lead of GDG Waterloo. Sometimes it’s hard to live with, but in a way I’ve just gotten used to shrugging it off and doing it my way because, well, everyone’s a critic.

We live in a very judgemental society. Everyone is looking with disdain at someone else who may be different in some respect. Because of this noise, it’s too easy to miss or dismiss signal.

As much as I wanted to say that the reason I failed was because of someone else or something else, that’s just not the case. He called me on it and made me face it, and I’m stronger for it. You can bet that I’ll be doing my best to make sure it doesn’t happen again.

I’ve read this and re-read it trying to think about exactly what it is I’m trying to say. I think it is: We can’t see ourselves as others see us, no matter how hard we try or how much we think we can. When someone criticizes you and they’re right, admit it. To them and to you. Face the truth, no matter how hard it is, and do the right things to fix it.


I really needed the answer to that.

I really needed the answer to that.

Ever consider biking to work?

Last month, I bought an e-bike. It’s an Emmo Alien. I got it used on Kijiji for $600. Where I live, it doesn’t require insurance or a license to ride. It costs me nothing to charge since my rent includes utilities.

Emmo Alien E-bike

Emmo Alien E-bike. Mine’s black, though.

Like pretty much everyone in Canada, I’ve had at least one bike at any point in my life. I never once considered riding it to work. My mental picture of a person that biked to work was a sun-glassed, angry man in really tight spandex. I couldn’t imagine biking all the way to work, sweating the whole way there, angry at other drivers for cutting them off or not knowing the rules. It’s just not for me. It felt like riding a bike to work meant you had to join some sort of environmental cult.

The truth is, while I care very much about the environment, I’m a cheapskate. And I’m lazy. Riding an e-bike is free. And I don’t just mean free as in beer. It feels free, as in freedom. I haven’t used my car in so long, a tire went flat from sitting. The insurance on my car (never mind gas or repairs) per year pays for more than two e-bikes per year. I could actually buy a second one, put it into a dumpster, light it on fire, and I would still be ahead.

And, do you know what? Riding an e-bike is fun! It’s liberating. My girlfriend finds it empowering. She’s never gotten the hang of riding a regular bike, but she’s learned how to ride the e-bike. We do groceries (it has hooks to put the bags as well as two storage compartments), we go for picnics, we go out and get fresh air, we get some sun.

Sure, a cyclist looks ridiculous, but when a driver in a big pickup truck zooms past in a testosterone-filled money-burning pissing contest, who looks more ridiculous?

I’m a bit late in posting this, but June is Bike Month in Waterloo Region. The thing is, it doesn’t have to be just June or just Waterloo Region. Have you ever tried biking to work? Do it tomorrow and let me know what you think.

If you’re interested in some data, it takes about 7 hours to charge from completely empty to completely full. A full charge lasts me about 2 and a half hours of continuous use, or about 50-70km, depending on whether or not it’s just me or with a passenger. My trip to work (including to McDonalds for breakfast) is 7.5km, each way. I do this trip Monday to Friday, rain or shine.

The single largest trip I've made on the ebike so far.

The single largest trip I’ve made on the ebike so far. With a passenger. Had half charge left when I got home.


An experiment in front page design

My gaming site and gaming persona, GameBlaster64, has been online for just over 3 years. In that time, the front page has never changed in any significant way. It’s still a blog layout, much like this one. Given that it’s more of a videogame review/preview/opinion site combined with a sort of wiki archive, it doesn’t make a whole lot of sense to have it this way.

So, tonight, I changed it.

GameBlaster64 Front Page

The New Layout

Instead of articles listed in chronological order with full bodies, only the 9 most recent article titles + one thumbnail each will be displayed, with no pagination, in a grid. People who go to the front page of a site aren’t interested at all in articles that are months old, so why bother offering pagination? They want to see, immediately, what’s new and what’s changed since the last time they hit the site (if they don’t already subscribe to the RSS).

The content on the site is categorized by taxonomy, aka tags, so users who want to look at, say, all the articles on Minecraft, are totally free to do that. The taxonomy pages are laid out just like the front page, except with pagination, since those folks are probably looking for an article in particular or just want to read from A-Z. The most popular taxonomy tags and posts are available in the header.

The only other site I can think of that eschews pagination on the front page in favor of a grid layout is Google News.

Hopefully my users will like it!