Thursday, June 02, 2016


Some day, I will stop thinking of ways to ruin Tetris. But it is not this day.

A little while ago my brain finally realized that two very familiar sets of numbers match up.  Ten main keys on a computer keyboard's homerow, four main rows of ten keys each.  Ten columns in a Tetris playing field, four orientations for Tetris pieces.  And that was that.  From that moment, I had no choice.
A version of Tetris requiring most of the keyboard had to exist.  If it already did, I couldn't find it.  So now the world has one more Tetris clone.
KBtris has a steep learning curve, which is something I would normally shy away from in a game.  But the idea is too compelling.  Traditionally, when a Tetris piece appears, even if you are a master player you still have to get your fingers or thumbs to input something like:
Now, you can do the same thing with:
One keystroke will both rotate your piece to the desired orientation and move it to the desired column.  This of course means you need to _have_ a desired orientation and column, and then hit the correct key out of forty.  It's efficient, but you need all your fingers and your wits about you to get started.  From there, it's not completely unlike learning the piano.

I've played a lot of Tetris in my life; I consider it one of the purest gaming experiences imaginable.  My first goal now that KBtris exists is to get as good and as fast as I can at it.  I'm curious whether I'll be able to keep up with friends who are faster typists.

Beyond that, I want to see someone get really good.  Way beyond my abilities.  I want to see a KBtris Olympian and be shamed.

Maybe _then_ I'll stop thinking up ways to ruin Tetris.

Tuesday, March 29, 2016

How to Fix: Firefox + Wine + "Open With" List

I forget why I even have wine in the first place, but I do.
(Wine, in this context, is a piece of software that lets me run Windows programs on my Linux system.)

Every once in a while, Firefox and Thunderbird would come across a file or attachment and prompt me for what to do with it.  Infuriatingly, the default choice was sometimes wine or some terrible wine version of explorer, or something.  I scoured Firefox's about:config and anything else I could think of, but there was no mention of wine associated with file types.  Web searches were useless too.

Finally, I found this:

Relevant snippet:
rm -f ~/.local/share/mime/packages/x-wine*
rm -f ~/.local/share/applications/wine-extension*
rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
rm -f ~/.local/share/mime/application/x-wine-extension*

That is what I needed.  ~/.local/share had some crap in it which many desktop applications, Mozilla's included, found and used to figure out handlers for different file types.  I can't imagine that setting anything to do with wine for such things could ever be useful for any reason ever, but if you use windows programs on purpose, you may wish to pick through those files a little bit more carefully than I did.

After nuking those, extensionless text files no longer try to open in some bastardized version of notepad.exe, oddly-formatted image files no longer try to launch some weird windows tool, and I no longer get angry at my computer for trying to run terrible programs for no reason.

My hope is that if I post this, I'll save at least one poor sap some time in their search for the same answer.

Monday, December 14, 2015

BUB on Nintendo 3DS

Well here it is, my first game "published" (in some sense anyway) via entirely-above-board means on a Nintendo console.  (Tong on Wii was great fun to do, but requires a little hacking for others to play.)

I got to draw Ork a couple dozen times.  I got to play and re-play a game-in-progress over and over.  I got to write a program in BASIC, complete with PRINTs, GOSUBs, and DATA blocks.  Every once in a while, I engage in a project that makes me feel like a kid again.  This was such a project.

For anyone and everyone who has SmileBASIC, here is the download code for BUB:

I posted that code on Nintendo's own built-in chat-about-games-you're-playing service, and it looks like some people are already having fun, including someone who recognized BUB from its Gamebuino version!

Anyway, that's my latest.  Some insomnia-hours programming and scribbling has become my favorite-so-far version of BUB.  I like to think somewhere there's somebody whose mind is set to sparking by this and other such toys.  Toys they can enjoy both as games and as a means of learning to program.  May the source be with you!

Friday, December 11, 2015


A short while ago, the best software yet came out for the Nintendo 3DS.  It's not even a game.  It's called Smile BASIC, and it turns any 3DS into the magical kind of flexible, programmable, easily-learnable computer that is sadly otherwise absent from the modern world.

I was a child in the 80s, when Apple II and Commodore 64 computers were everywhere.  You could check out computer books and magazines from any library and type in listings of BASIC programs.  Once you got something running, you could modify or expand on it in any way you were clever enough to figure out.  The first open-source software that got me excited wasn't GNU or Linux or anything like that - it was some random maze-generating program or box-drawing routine that I copied off a printed page.

Now, that same magic, that sense of learning BASIC from examples and figuring out how to make a computer do things of your own design, is available in a $10 download, on a ubiquitous handheld computer.  And in addition to all those tricks we did on 8-bit, keyboard-enclosed, tube-TV-connected 80s technology, a slew of new BASIC commands are available which open up the 3D display, stereo speakers, wireless networking, and many megabytes of RAM to the same kinds of easy programming as PRINTing "Hello World".

If it were up to me, this or something like it would come standard on anything and everything with a CPU.  I don't care if BASIC isn't a powerhouse language, or if the hardware abstraction is limited in some ways, the point is that there needs to be a way to begin learning, on some level, how these gadgets we keep buying actually work!

A while back, I became a registered Nintendo developer.  That meant I could order dev kits, create software, and sell it through Nintendo's eShop services on Wii U and 3DS.  As a long-time Nintendo fan this was an exciting step, but as someone who values sharing ideas (and code) more than making money, it tore me up a bit to think I'd be putting out software which the next generation of me's couldn't poke around in, learn from, and make their own changes to.

Now, I don't have to.  Anybody who creates anything using Smile BASIC can publish it online, ready for anybody else to download, use, and edit just as if they'd copied it out of the back of a magazine.  Stay tuned; I'll be posting my first 3DS game very soon!

Wednesday, October 14, 2015

Ten Years

Ten years ago, Kim and I got married.  We didn't know then what those ten years would look like, nor do we now know much about the next ten, but we'll continue to figure it out together.  (With healthy doses of sarcastic humor and genuine love.)  We're not big on vacations or travel, but we decided to take some time off for our 10th anniversary and visit Lake Superior.  We got to do plenty of walking around Duluth, I got to sample a handful of local brews, and we got to spend a week together on own terms, according to our own whims.

 I'm thankful every day that our lives connected and joined.  We're pretty private and introverted people, but I'm happy to share a little moment like this.

Monday, September 28, 2015

Super Eclipse

Got to stare at the moon and stars with Kim last night while the moon put on a big show for us.  Last time I saw something like this, I was left to my own thoughts.  While I'm always captivated by any and all celestial dances, everything is made more enjoyable when shared with someone you love.

As it happens, we were also accompanied by a camera which was up to the task this time.  We brought some lawn chairs out to the little park area behind our apartment and watched from full moon through after the umbra had passed by before clouds started interfering.  My tripods are still in storage, so the shots I took were hand-held; 1/10th second exposures were about as long as I could get away with, but I still got some very satisfying photos, including this one.

We'd heard "blood moon" among the terms being thrown around leading up to this eclipse, and it really earned its name.

I'll have to play with some of the multiple-exposure shots I took as well.  The camera does have an HDR mode but as I mentioned, no tripod, and besides I don't actually know how to use it yet.  When we bought it, video was my first priority, and learning all the still features took a back seat so distant I still haven't gotten around to it.  :^)  I fumbled around in the dark a good while just figuring out how to get the basic shots I did.

Curiously, at maximum zoom (300mm) I was able to focus behind the moon.  I suppose that means we need to go hunting for Jupiter and Saturn sometime.

(Stars already appear very crisp in these moon shots, so I probably just misunderstand what's going on when I dial the focus past a certain point.  Regardless, gas giant hunting sounds fun!)

Tuesday, August 25, 2015


My wife's been convinced for some time that I've needed new shoes.  Fine, fine, I got a replacement pair.  Same exact make and model, not sure I can even tell 'em apart.  I guess the female mind is just better tuned to pick up on these subtle details.