Tuesday, February 13, 2018

Game Jam

I made a game last weekend!  It's stupidly hard (and just plain stupid) but I'm a certain fashion of proud of it.

It began with an email I skimmed and ignored last week.  Itch (an indie-friendly gaming site and distribution platform, think Steam but with no real entry barriers) frequently hosts game jams, which are week- or weekend-long (and other durations I'm sure) events where a genre is chosen and game makers are encouraged to quickly build a new game, optionally around some given theme(s).  One-mechanic games were on the docket this time.  I generally don't have time to participate in these jams, so I paid it no mind.

Then a work buddy of mine had a case of beer on which the word "Escape" was written, split by the seam in the cardboard.  He jokingly said we needed to make a game about an ape escaping.  We had some fun chatting about that.  There could be fruits or something to collect, but you would be scolded for doing so.  "Why would you waste time collecting stuff when you should have been escaping?"  Each level could just be the displayed image, with a corresponding bit map of which pixels are grab-able.  With the one-mechanic idea freshly ignored in my brain, the ape could constantly swing his arms, and you could swap which hand he was gripping with using one key or button.  ...This could almost work out.

It's Kim's busy season (beginning of the year, accounting) so she was going to be working Saturday.  That left me plenty of time, should I choose to spend it not sleeping.

Well that was that.  Surely I'm a quick enough programmer to make a one-button game about Esc the Ape escaping!  The event kicked off, and the themes announced were "water", "capitalism", and "man versus machine".  ...Well, that was fine, those themes are optional anyway.

Kim to the rescue, as usual.  I talked to her about this ridiculous plan, and without even knowing the themes, she had a suggestion. "The ape could be collecting anything, even coins.  What does an ape need with a gold coin?"  And there it was.  I could even slap a mild capitalism theme onto this thing.

Anyway, I had already developed some rudimentary code to help turn my scribbles into animations and games.  So I made some scribbles...




...and, with a day-plus of programming, turned them into this game!  Enjoy!


https://itch.io/jam/omgjam3/rate/223986


[ afterward... ]
I got some great feedback.  Fellow indie developers are a great audience, and willing to find good nuggets even in rushed, sloppy work like this.  :^)

[ even more afterward... ]
The people who ran the game jam streamed themselves playing all of the entries.  Couldn't make it past my first level, but I have to credit them for trying.  :^)
https://www.twitch.tv/videos/228848222?t=00h51m03s

Wednesday, January 10, 2018

How to Fix: Firefox 57+ Status Bar


I used to use an extension called Status-4-Evar, which did a lot of neat things.  Mozilla has been ruining Firefox's status bar for a long time, and this extension let us get it back the way we wanted.  For me, I want an area of the screen where URLs and status text can appear, but does not vanish or move depending on where my cursor is.  I also don't want it to overlap with useful page real estate.  Basically everything the new Chrome-style corner status bubble is, I do not want.  Recently, Mozilla made more changes which make Status-4-Evar incompatible with new versions.

Many people would prefer to have their downloads and other extension icons down in the bottom bar as well.  That's where I used to have them, but it doesn't bother me terribly to have them up in the top bar instead.

This fix addresses only my consistent-status-area concern, not the icon stuff.  There are solutions out there which re-position and re-purpose the bookmark toolbar and let icons live there.  This is a much simpler and admittedly less-flexible hack.

Credit where it's due; I started with this:
https://github.com/MatMoul/firefox-gui-chrome-css


My solution is to create "~/.mozilla/firefox/(my profile)/chrome/userChrome.css" containing:
#browser-bottombox {
 height: 1.4em;
 border-top: solid thin #505050;
}
.browserContainer>statuspanel {
 left: 4px !important; bottom: 2px;
 transition-duration: 0s !important;
 transition-delay: 0s !important;
}
.browserContainer>statuspanel>.statuspanel-inner>.statuspanel-label {
 margin-left: 0px !important;
 border: none !important;
 padding: 0px !important;
 background: rgb(0,0,0,0) !important;
 color: silver !important;
}

window[inFullscreen="true"] #browser-bottombox {
 display:none !important;
}
window[inFullscreen="true"] .browserContainer>statuspanel[type="overLink"] .statuspanel-label {
 display:none !important;
}

Your mileage may vary, and unless you use a dark theme (like I do) you'll probably want something other than color: silver for the actual status bar text.

Mozilla, get your house in order.  Let us customize our browser; you are not Google or Apple, that is why we like you.

edit:
In newer Firefox versions, you'll need to enable toolkit.legacyUserProfileCustomizations.stylesheets in about:config.  The link above has updated css files as well; you'll probably want to start with those rather than using mine as a base at this point.

Tuesday, January 09, 2018

Arcade Sticks and MAME and Key Events, Oh My

This is a solution so simple I feel very silly for not thinking of it sooner.

from a virtual console: (as in ctrl+alt+f1 etc)
    xinit /usr/games/mame -- :1


So my actual problem, for anyone who's curious, is that while using MAME to play some arcade games, my window manager (spectrwm) was capturing the "Alt" key (player 1's second button by default) and doing whatever actions alt+this and alt+that were bound to, depending on what other buttons (keys) were being pressed.

"Just remap the buttons" is a common answer, and not a bad one in many situations.  But the keyboard I use when playing arcade games is this big ol' thing:
It looks and feels like and is in fact built from arcade joystick hardware, but for maximum compatibility it acts like a keyboard when plugged into a computer.  It does indeed support remapping its "keys", but I'm running linux for cripe's sake, there had to be a better way.

I started down this logical path:  VirtualBox (virtual machine container; think VMware but open) steals the entire keyboard so that Alt and other modifier keys end up going to the virtual machines it runs, rather than the host.  Now and then, I get trapped on a certain screen for a moment because I can't just alt+number my way to another one.  It's a mildly annoying but useful feature.  MAME, the software I use to run old arcade games, doesn't seem to have any such option, but it really ought to.

VirtualBox and MAME are both open, so I could dive into the code and see how the keyboard grabbing is done in the former, and possibly graft it into the latter.  I imagine the abstractions used in each case are quite different, but I bet given time I (or someone) could figure it out without too much hassle.

But if I'm going to dive into code, maybe there was something simpler I could do.  Spectrwm, my window manager, is tiny compared to VirtualBox or MAME.  It does almost nothing, which is why I like it.  One of the things it does manage is the ability to assign special behaviour to certain programs.  (It calls these special cases "quirks".)  Perhaps I could dig in there and have it ignore all hotkeys when a certain program (mame) is active.

Then it hit me, again, that I'm running linux, for cripe's sake.  Just because I'm using spectrwm on my X server doesn't mean I can't run another X server with no window manager at all.  And sure enough, if I fire up a second instance of X thusly:
    xinit /usr/games/mame -- :1
...then I have a completely isolated X running only MAME, and can switch between it and my main X session anytime.  For me, this is the best of all worlds.  I can keep up spectrwm and mame updated without having to manage any local patches, and I can mash any combination of those big joystick buttons without any unintended behaviour.

Some keyword search phrases, for any future schmucks having similar trouble:
  • mame grab alt key
  • mame spectrwm keys
  • mame window manager keys
  • wrap x keyboard events
  • linux x grab all keys
  • mame grab keys like virtualbox

Monday, November 13, 2017

Book

This is Book.  So named for looking like he's got writing on him, and since "Boo" and "Bo" for short also suit him.  His mellow temperament also reminds us of Shepherd Book from Firefly.


To expand on that particular metaphor, he inadvertently spooks our in-house mental patient, whose most positive reaction to him so far has been along the lines of "keep walkin', preacher man".


We adopted Book as a late anniversary present to each other, and Autumn (River?  ;^) hasn't fully forgiven us since.  They can be civil at close quarters as long as they're sleepy or getting snacks, but otherwise Book is eager to play and Autumn is eager to growl, hiss, and be a drama queen until pesty little brother goes away.

It will be in Autumn's interests to warm up to him sooner than later, since at 8 months Book is showing every sign that he's going to be a big beefy boy.

Welcome to the family little guy, we're happy you seem to like us all.  ...Even though your big sister's a brat.  ...And your human parents are silly enough to keep adopting you young energy-filled cats.


Tuesday, August 08, 2017

Move Moments

We bought a house.  We've been moving into it.  There's more to tell there than is worth telling, and certainly more than is worth reading about.  But the other day we moved a big couch and chair, which required renting a van.  In lieu of my usual long-winded babbling, here are a few captured moments.


 It's just a bruise.  But yeah, it scared me at first too.

 The van and garage doors shared a moment.

Brainstorm: hide away bedside cords from the cat.
(Our implementation was simpler but works :^)

Monday, June 26, 2017

Doodled Dudes

One thing that I haven't seen dug up from the 1980s, slathered in modern attention-deficit-mediocrity and re-sold to us is those little finger puppet monsters.  They contained no sound chips, activated no unlockable video game content, and were cheap enough to come in happy meals.  Probably.  Who knows if I can remember the 80s correctly.

Alternate opening paragraph:

Nowadays everybody's 3D-printing fidget spinners.  Perfectly fitting for today - can't sit still, noisy, no personality.  Me, I've got a not-completely-atrophied imagination and my little 3D pen came with some flexible rubbery plastic stock.  So now if my fingers need to do some fidgeting, here's what I've got:


Precision, detailed figures they are not.  But, they're cute enough not to have been banished from my desk yet.

Friday, June 23, 2017

Cobbled Counterfiet Cat Carrier Clip

A lifetime ago, we had a sweet kitty who, when boarded at the vet's while we were away, managed to knock over a room full of pet carriers.  Everything survived, more or less, but ever since then our carrier has been suspiciously missing one of the clips that holds it together.

With Murphy, that wasn't a problem since she basically weighed nothing.  Our current kitty, though, has a bit more junk in the trunk, and is going to need proper support when we move, and take her to her overdue vet visit, etc.

3D printers are all the rage, able to turn files from CAD or animation software into physical, strong plastic parts.  I'd like to have one of those some day but for now the closest I've got is a more arts-and-crafts version - a 3D pen that draws in plastic by hand.  It really is to a 3D printer what an ink pen is to an inkjet printer.  With a steady hand and some thinking ahead, it's possible to make useful stuff.


My hand isn't super steady and I don't plan things all that well, but still the replacement carrier clip turned out pretty nicely.  :^)


The inside of a pen with a couple layers of masking tape was just the right size to scribble the part's "hooks" onto.  The flat bits are just a matter of filling in a shape on paper (or on masking tape, since the melted plastic doesn't stick to that quite as stubbornly).


It snapped right into place, just like the "real" one.  If I cared about it being pretty, I could sand it down a bit, but since its lot in life is to clamp together a cat carrier, I called it good as-is.

If it's not a bit dinged up and cobbled-together, it's probably not mine.  (My wife wishes I wouldn't say that, but she's the exception that proves the dinged-up, cobbled-together rule.  :^)

Friday, April 07, 2017

What's Next?

So the Grievous Oligarchy Party has, on behalf of those few who already have everything, have taken by hook and crook the final pillar of this old republic.  Any legitimacy of our institutions is truly forfeit.  Power and money now rule people who once ruled themselves.

And now they're going to war.  Now, it doesn't feel, to me, today, like nuclear annihilation of humanity is certain or imminent.  But it also doesn't feel very far-fetched.  And I suspect that if the day comes, for many of us it will be a bit of a surprise, even now.


Just in case we don't have a lot longer, I want to thank the people who have touched my life.  I hope I've made you smile; that's the most rewarding thing I've found in life.  My thanks to you.  To everyone who's made me smile, and who's made anybody smile.  Humanity has in many ways become a blight on this little blue orb in our little arm of our not-terribly-unique galaxy in our grand cosmos, but I'm happy to have existed.  We are what we are.  We like to pretend that isn't so, that there's "us" and "them".  I do it too.  Right up there, I call out some of us as power-hungry.  Tyrannical.  Illegitimate.  Dishonest.

We're all just humans, which have a tangled and snarly genetic ancestry.  We grew capable of guiding our own development, building our own significance.  That was a neat trick.  We don't know any other critters who managed it.  We even grew capable of authoring our own ending, releasing our own constructs.  It's a shame, it's a waste.  But that is power.

That is what we acquired.  Power does not care whether it is stolen piecemeal or granted by unanimous consent or a byproduct of natural physics.  Power made us, and will some day, some way, unmake us.  Gravitational dances of rocks wield more power than anything we humans have faffed around with.  We can shape and transform our own little sphere, to an extent.  We have the power to destroy everything everybody has ever built, and to feed and care for everybody who's here now.  Most of the time we use our power without such concentration.  Destroy a bit here, care a bit there.

So, what happens next?  There's no "them" to ask, just us.  All of us: what's next?


[ Edit about the whole "going to war" bit: It seems increasingly likely that this was just a bit of illegally-conducted theatre, but we're talking about an unstable amateur bombing an unstable region, and a complicit congress which talks big but does very little to restrain the madmanchild. Let's hope I'm overreacting, like I was about Citizens United and rich bastards lying to us. Oh wait. ]

[ Second edit: Oh for crying out loud what are we doing. ]

Thursday, March 09, 2017

Sockmonster Mk. 4

Autumn is a strange little cat.  There was no distinction in her little head between fun-exercise playing and life-or-death fighting when we first got her.  She's much less rough around the edges now, but when she's feisty, there's a bloodlust and a need for savage close-quarters combat I've not seen in a domestic cat before.  Batting a little ribbon or feather does not cut it in most cases.

In the heat of mock-battle, there's hissing and growling and grabbing and kicking and yelling.  Claws and fangs swing and chomp without restraint.  With my childhood cat, I did this kind of thing by hand, and got a little scratched up.  This one plays ROUGH - bare handed play might end in me bleeding out.  (I have seriously considered buying a falconry glove, but it would need a pretty long sleeve.)


By the by, it is remarkably difficult to A) record video of a cat while playing with her, and B) convince a cat to do even a very usual thing on-command.  This is the best I could get without waiting for her to decide on her own that it was feisty time.

All this brings me to my latest haphazardly-crafted object: Sockmonster Mk. 4!


This is the entire Sockmonster family line, or what's left of it.  The original Sockmonster is actually inside of Mk. 2; its skin was a much flimsier and less interestingly-textured sock, and it was the quickest to spill its (mostly plastic-bag) innards.  All but the latest incarnations have had gashes patched up with the handyman's secret weapon, duct tape.

Mk. 2 subsumed the original and added an inner skin of brown paper for extra crunchiness.  Over time the stuffing got all shoved into the end, and indeed began to get ripped out like viscera.

Mk. 3 introduced a semi-rigid spine, a nice thin chunk of plastic that would bend a bit and spring back.  I also attempted to build it with segregated internal stuffing compartments, Titanic-style, to keep the stuffing evenly distributed.  But as you may be able to tell, the mid-point is a very popular kicking target, so the spine broke and the center stuffing compartment appears to have hernia'd out.


For the fourth one, the spine is a towel rolled up as tight as I could get it.  No plastic to wear out and snap.  The stuffing is in one big tube around the spine, and of the whole thing is wrapped in a couple layers of claw-armor burlap and chompy-thick felt.

Originally, I had both ends sewn up, but the thickness and firmness of the thing made it hard to grip one-handed.  Luckily, one end was pretty weak since this whole thing was an exercise in making it up as I go, and Autumn quickly tore it open again for me.  A little stuffing out of that end, squeeze up the sides a bit and boom, handle.  Much better.  :^)  It's a collaborative process, as it turns out.

So, we'll see how this works.  As one might expect, if one were familiar with cats, now that some effort has gone into constructing a more robust Sockmonster, kitty's aforementioned interest in brutal hand-to-hand combat has begun to sharply drop off.  These days she's all about running and being chased.

I concentrated a lot on physical points of failure, but forgot that a cat toy is a failure right away if the little furball doesn't want it.  Still, we'll see.  She has her moods and phases; it may well fall into favor again one day.


Update:
She may not like the thing I spent time and effort on, but boy does she ever go nuts on this $5 grill mitt.
Another update:
We've gotten our $5 out of the mitt, but it now offers very little fang or claw protection.

Monday, March 06, 2017

How to Fix: Maddening Subpixel Font Rendering

This is mostly a note to my future self so that next time I set up a Linux machine, I don't have to re-invent this particular wheel.

Most computers nowadays, by default, display text using sub-pixel rendering.  Microsoft calls their implementation "ClearType", and I'm sure Apple has some similarly innocent-sounding name for it.  Without getting into the technical details, it's an optical illusion that, apparently, for most of the population, makes text nice and clear to read.  For me, it looks smeary, and makes my eyes continuously strain and toil to make everything all right.  They fail, and I get a mighty headache if I keep looking for too long.



Naturally, on my own computers I turn this noise the hell off.  But for a while now, there has been one niggling little hiccup where the first QT program I load (or maybe it's KDE specific, I really don't know.  All GTK and other programs are fine.) would fail to honor my very explicit settings and fall back on the default behaviour of stabbing me in the corneas.  The workaround was quick and easy, and generally if I'm at the computer I'm busy trying to do something, so I let the problem stagnate.

But in upgrading my laptop recently, I had one more little burst of attempting to figure this nonsense out, and figure it I finally did.

~/.Xresources:

Xft.autohint: 0
Xft.lcdfilter: lcdnone
Xft.hintstyle: hintnone
Xft.hinting: 0
Xft.antialias: 1
Xft.rgba: none

I don't even know which line(s) make the difference.  I just found a handful of Xft settings to try and lo, once these crunch through xrdb when the session starts, all is well.  These can go in a global Xresources file too of course.

I hope this helps somebody else, and I'm pretty sure it will at least help future me.

keywords for searching:
disable subpixel antialiasing
prevent sub-pixel anti-aliasing
qt kde first launch ignore freetype settings
why the crap do some programs use horrible blearytype font rendering
To others whose eyes are allergic to this crap but are also stuck on Windows, be warned: your Windows lies to you.  If you ask it to turn off ClearType, it will claim that it has done so and carry on smearing your text with eyeball-shredding colors.  You have to go through some crazy multi-step "Which of these looks better to you?" quiz to truly turn it off, and sometimes every one of the options presented will be using subpixel rendering.  So, as always, good luck Windows folks.

Tuesday, February 28, 2017

Doubles Storytelling

I have made a toy which two people, near or far, can use to tell stories.
http://rpg2.penduin.net/

I was going to write about it here, but I wrote about it within itself instead:
http://rpg2.penduin.net/#release.json


Thursday, January 26, 2017

Gremlins and Chaos and Being

The gremlins in my head, on a quiet day, ask only that I wash my hands a bit more than an average person would.  On a raucous day, they demand that I create something and share it.  They don't ask nicely.  It doesn't matter what I come up with, whether it's any good, or with whom I share it.  This occasionally causes some embarrassment, but one learns to deal with that.  If the gremlins are ignored, they begin wreaking havoc and this fun, grumpy person becomes an un-fun grumpy person.

A side-effect of paying any attention to the world around me is that when the world goes mad, I go a bit mad with it.  Anxiety and dread leak right inside and stir the gremlins.  "Pain is good for art" and all that.  I'm a very fortunate and privileged person, and not what most would call talented, so my use of the words "pain" and "art" is a bit of a stretch.  But that's fine.  In any case, my brain gremlins and I have been on edge lately.

The gremlins are soothed by simple seeds growing into complex patterns.

I played around with randomized, low-fidelity pixel art.  8x8 noise of a single random color, mirrored for symmetry.  The human brain (well, mine anyway) will turn almost any such shape into something recognizable.  A penguin with antlers.  An armored soldier.  A dog walking upright.  A happy toad or a skull with pigtails.  Once I got a bunch of these drawing on screen, it seemed like asking the simple question "who are you?" might be interesting.



The gremlins like music; during worrisome times, songs get stuck in my head far more easily than usual.  Recently my noggin was cycling this Cat Stevens song, for reasons I won't try to understand.


The bit that kept rolling around in my brain was "if you want to be me, be me".  Might it be interesting to have some kind of interactive mechanic that boils down to "be me" when you meet someone?  Well, I already had plenty of random pixel people to meet.



You can see I've got some other stuff going on there too.  Random names, offspring from mathematically averaging the pixel characters.  I also threw something together to randomly build up a map.  And some random special rooms for whatever weird tools and functions I was playing with. And gave each character random traits that determine what and how they can see, where they can go, how they get noticed.

Why I stuck with an Atari aesthetic (including directions and one action button) I do not know.  Why I wrote the code almost entirely on my phone during insomnia hours rather than from the comfort of a proper computer, I do not know.  Why I named it "RPG1" and retrofitted a bunch of acronyms in its manual, I do not know.

What I do know is that from the chaos, some interesting effects cropped up.  As a moose I traded feet with a bunch of bananas, and suddenly I could go places I could not reach before.  I was a butterfly who talked with and became a spring-propelled robot, after which I could not see the butterfly anymore.  As a thief, I met a two-headed bird and had a screen full of three-headed turtle babies.

Play online:  http://rpg1.penduin.net

It's a bit of a hot mess, but there.  Happy, gremlins?  No?  You already have some more stupid little projects lined up?  Hm.  Gonna be an interesting few years to be me.

Friday, January 20, 2017

Inaugur- (wretch)

Here it is.  The new age, where nothing makes sense and the more asinine it sounds, the more likely it is to be happening.  Good, evil, right, wrong, fact, fiction, none of it means anything.  Things just are.  Because loud, proud ignorance says so.

It's an interesting time to be alive.  I've never been bored in my life, but I would sure love to try it.  As it is, though, I'm going to be angry and frustrated and terrified and indignant for some time.  I'd say something like "four years", but let's not assume time or space or anything else are comprehensible phenomena anymore.  Or that dissidents like myself won't be jailed or hanged by then.  Or that all life on Earth won't have simply been obliterated by nuclear weapons.  Nothing's given, things just are.  Because small, spiteful vanity says so.

So far, the worst expectations I could muster have only ended up demonstrating the limits of my own imagination.  But my dense optimism means everybody here has one more ally -- I will stay and fight.  The temptation to abandon this poisoned ship and its lunatic captain will be overwhelming, but we have to stand strong.  Because courage and right and decency say so.  Those things don't exist in this age, true enough, so it falls to each of us to create them.

Dissent is patriotic.  We shall overcome.  [Inspirational quip #3 not found.]

Wednesday, November 09, 2016

Huh.

Well, I was wrong.  This is worse.  Best of luck everybody.

Monday, November 07, 2016

Let's Get This Over With

I know these things happen every four years and therefore cannot last any longer than that, but it feels like I can no longer remember a time when I wasn't worrying that a superbly-qualified world leader might lose the presidency to a prejudiced reality show pseudo-celebrity.

In the primaries I voted for Bernie, because I think we desperately need some socialist ideas and tools to pull us back from the brink of commercialist self- (and planetary-) destruction.  My wife voted for Hillary, and we were both glad to be supporting both candidates.  They each rank among the most honest politicians our country has to offer, and the most progressive.  (Yes really.  Do some actual research if those things sound strange to you.)  Voting felt really good in the primary.

Since then, we've witnessed the rise of a monster created and fueled by the worst runaway features of our young nation - money equaling speech, entertainment posing as news, echo chamber information bubbles, and more racism, sexism, zealotry, bigotry, and other forms of reckless fear-mongering hate than I would have ever imagined.

I've been all but paralyzed by anxiety for what feels like ages.  I'm normally not a terribly worrisome person.  I've always trusted that most of the time, most of the people will do the best they can.  I still feel that way.  But there is so much influence and so much concentrated power which is willing to swallow any pill no matter how horrifying, as long as it means perpetuating itself.  There are so many lies told so often and so loudly.

My wife observed that every four years the Republican party puts up somebody worse than the last time.  We had Dole, who seems a perfectly respectable statesman at this point, then W, McCain, Romney, and now Drumpf.  (I wouldn't necessarily have ranked McCain as worse than Bush if it hadn't been for Palin, who herself almost sounded cogent compared to today's toupee'd cheesepuff.)  In trying to figure out who is next, assuming we get to keep having elections, the only figures who come to mind for me are Scott Walker (yes, more dangerous than Trump, because he's actually accomplished terrible things instead of just blustering on about them) and whomever is the head of the KKK.  (Please excuse my gross ignorance of the grossly ignorant.)

We've always liked the ritual of voting on election Tuesday.  Ours are not particularly ritual-filled lives, but we've got a few we really feel are worth hanging on to.  Next time around though, we think we'll vote early, as so many have done this time.  I doubt I would have quite the same level of apprehension if this thing were already 100% out of my hands.

Anyway, I look forward to being productive again.  I look forward to being able to relax, find some peace, maybe even fall asleep.  I hope I can do it here in the nation of which I was born.  The one where different kinds of people can work together.  I hope that nation is still here.  I think it is.  Hillary Clinton is seeking what seems to me an impossible job, but if anybody on the planet is up to it, if anyone can be prepared enough, strong enough, compassionate enough, she's the one.

Please vote tomorrow if you haven't already.  Let's get this over with.

Monday, October 31, 2016

Happy Halloween!

This election and this year in general can't be over soon enough.  But there is always room for warmth and fun in life, and Halloween is one of my favorite times to find such things.


A big round one with fuzzy facial hair, a cute classy one, and a splotchy little one with fangs.


Pre-carving inspection by this family's splotchy little fanged member.

...And for everybody's sake get out and vote next Tuesday.  (For the sane, qualified one, please.)

Thursday, June 02, 2016

KBtris

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:
left-left-left-left-rotate-drop
Now, you can do the same thing with:
q
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:

https://wiki.winehq.org/FAQ#How_do_I_clean_the_Open_With_List.3F

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:
83DXN3L4

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!

https://miiverse.nintendo.net/posts/AYMHAAACAAADVHksVo-stg

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!