vadorz: A brief interlude to save the Earth

My enthusiasm for small console games was rekindled with ttysolitaire, so I poked around and found vadorz this morning.


In classic Space Invaders style, your ship is at the bottom of the screen, and endless waves of enemy ships oscillate as they creep down from the top. Your sole purpose in life becomes kill-or-be-killed. Such drama! :shock:

vadorz is a pretty good game; it has all the requisite parts — it’s speedy, it’s responsive and it’s straightforward. Keys are the obvious arrows plus a MegaKill key that wipes the screen of enemies. Plus “q” to quit and “p” to pause.

I particularly like the choice of ASCII artwork. The ships and missiles look appropriate for the shapes they should represent. I also like that you can edit the code and change the size or shape of the ships or projectiles, as you like. Oh, and the MegaKill key has a nice visual effect too.

A few misgivings though:

  • I get a terrific flicker effect whether I’m playing in an emulator or at a virtual console. I don’t know if vadorz is clearing the screen after every “frame,” or if that’s a side effect of working on a (slightly) slower machine. Either way, I worry I’ll develop photo-sensitivity epilepsy, with all that flashing. :roll: :(
  • You have five “lives” at the start, but there’s no real consequence to being struck by a missile. You ship doesn’t explode, there’s no pause to restart the level. The ticker just drops by one, and the game continues. Reach zero and the Earth is destroyed. That also means that you might glance down at the left corner and realize you’ve been hit twice or three times already, and you’re wondering when that happened.
  • Your ship can maneuver anywhere on the screen, including over the score display. Not complaining about that, but it means you can fly above the rows of alien bombers, and safely wait out the assault. I’m not sure why you would do that, since allowing the aliens to reach the bottom ends the game, but I suppose it should be noted.
  • From round-to-round, the score is always the same. There doesn’t seem to be any variation in the value of ships, either in their design or in their distance from you when they’re hit. So reaching the end of a round means you’ve killed the preset number of ships, and gotten the same score as every other round.
  • It’s possible for the MegaKill to miss a bomber. Maybe that was intentional.
  • No color. :(
  • Finally, the best strategy seems to be to press your ship up against the wall of the terminal, and simply hold the space bar down. If your CPU speed allows it, you’ll expel a wall of missiles in a straight line from the bottom to the top. The shape of the alien bombers makes it very unlikely that they’ll drop a bomb within those last three columns (they are as wide as you are, but will probably touch your “wall of missiles” first) so it’s a fairly safe strategy. The only danger is getting to that wall at later levels.

I will stop there, just because I don’t want to color your opinon of vadorz too much, or try to hold it out against things like ninvaders or ascii-invaders. With a little work and some fine-tuning, vadors could be better than either of those, and maybe start to punch above its weight, with things like yetris or ttysolitaire.

sha* (with sha1pass and shasum): Sha-sha-sha

I mentioned md5sum a long, long time ago, and now I feel obligated to include the sha* suite. I think this might be where the free ride ends for checksum generators though. Here’s why:


That’s it, that’s basically all it does. Of course, it’s not like md5sum did much more. You can use this in much the same way as md5sum — checking file integrity where the publisher has a sum available to match, or as a fingerprinting utility where there was an intermediary in the transfer.

I wanted to point out that the sha* binaries are part of coreutils, but my Arch system has two other sha* programs: sha1pass, installed as part of syslinux, and shasum, which came with perl.

I can’t speak for either of those last programs, since I’m not sure what their original intent was. I have a feeling sha1pass works with passwords and encryption, while shasum appears to be a frontend for the sha* binaries. If you use sha* enough, shasum might be helpful.

But that’s why I said the gravy train might be pulling into the station for checksum generators: They have a very slim and specific function. And what I’ve seen of a few other checksum generators suggests that’s all they’re meant to do. :\

style: Similar idea, different direction

Both diction and style are components in the same GNU package, and that’s a little surprising since they obviously do quite different things.


I fed style the same passage as I did diction, but rather than pluck out problematic words or phrases, diction gives a technical and statistical analysis of the text. So no specific grammatical warnings, aside from a tally of how many conjunctions I used — oops, I mean, the writer used. :roll:

However, unless you’re familiar with those tests, the scores listed there are unlikely to mean anything to you. I’ll give you this as a starting link, and from there you can explore on your own. Each test has its own metric, and it may be that just word structure or even number of syllables can swing results in one direction or another.

Actual computation aside, style works in a very fast, very clean manner and presents its results in a useful table. Options-wise, style has flags for specific grammatical structures or voices, plus some triggers for sentence length or certain test results. If you want to screen out sentences more than 20 words long, for example, style is your tool.

So again, style is not so much a grammar checker as it is a writing analyzer, with the added ability to pop out lines that meet certain criteria. Kind of a like a grammar-grep, I guess.

I can’t necessarily endorse either diction or style as must-have tools if you do a lot of writing at the console, or even if you just do a lot of writing. They’re helpful, but might seem primitive compared with some conventional, contemporary applications. Keep them in mind though.

In the mean time, send me a link when you finish your text-based user interface grammar checker utility. The world awaits the arrival of your genius. ;)

diction: The words you choose and why

Earlier this month I pointed out a grammar checker utility that was, because of its age and its arrangement, omitted from this daily showcase of software. And I felt a little bad about that because as far as I can tell, it was the only grammar checker for a text-only environment that I’ve seen in 21 months.

There are two conclusions to be drawn from that: One, that relying on outside sources as a core component of your software might make it obsolete before its time. And two, if you’re a budding programmer looking to make your mark on the world, there’s a big open gap right around text-based grammar checkers.

If you want to take a step in that direction, take a gander at diction.


In that example, I fed diction a short and cumbersome passage from some lunkhead-Linux-blogger-wannabe I found on the Internet. ;) And if you look close, you can see where diction plucks out particular words and phrases, and gives you reminders — sometimes grammatical — on usage.

Not really a grammar checker, and not really a dictionary, which makes diction something in-between.

Points of note: diction is really just a filter for specific words and phrases, with cued responses inserted where appropriate. That’s important to remember, since rearranging or misspelling those key phrases is going to let diction pass right over them.

Furthermore, diction is hopeless at innuendo, double-entendre, turns of phrase or deliberate wordplay. If it’s not in the onboard repertoire, diction will either run right past it or flag it as some sort of unrelated error. So higher-order writing is susceptible to false positives.

The only other gripe I have is that the output is particularly dense. No color filtering, no line-by-line trapping, no formatting aside from the use of square brackets to set off comments from original text. So while I appreciate the effort diction goes through, the results are going to need some heavy adjustment before they will be readable.

All that being said, this is a step in the right direction for anyone who wants to do some text wrangling from the command line. diction sends its analysis straight back through STDOUT, so it’s a simple matter to pipe it into something else — like one of the million color filtering tools we’ve seen — and further adjust it.

Now let’s move to diction’s little brother. …

gtorrent-ncurses: Not quite ready for prime time

It’s no secret I’ve been an rtorrent fan for nearly a decade now. It has its shortcomings and at times it seems to lack some features that the new kids have. But overall, it has been a reliable standby.

That doesn’t mean it’s the best way of doing things though, and when you stop trying new things, that’s when you get old.

But gtorrent-ncurses — the text-only option to the full gtorrent — might not be the one to take the throne.


It looks like a good start, and as best I can tell it is actually working. But that interface looks suspiciously broken, and as best I can tell, there are only two controls: “a” for add a torrent, and “q” for quit.

No progress indicator. No bandwidth meters. No throttling controls. No help screens, priority settings, peer lists, sharing ratios, tab completion for adding files … the list goes on.

I only looked briefly at gtorrent’s full graphical interface, so it may be that it’s possible to get those things from the full X-based UI. They are suspiciously missing from the text-only version though, and in this day and age, more than a dozen years after the original BitTorrent, it’s a little hard to overlook.

I’m willing to give gtorrent-ncurses the benefit of a gestation time, and come back to it later. Like I said, it appears to be working, even if the “interface” wasn’t doing much to tell me that. I’ll be back in a little while. ;)

truncate: Arbitrarily chopping things off

When I mentioned that there were useful and interesting tools in coreutils and util-linux and bsd-games (and I should probably add binutils), I wasn’t exactly thinking of truncate.


truncate wasn’t on my list when it began five years ago, or even in later additions. I can see why: It’s a rather arbitrary and vicious tool, snapping off files at predetermined lengths and leaving the remainder to flutter away in the wind.

I can’t think of any exact use for truncate aside from determining an exact, to-the-byte length of a file, perhaps for some sort of network testing or disk performance check. And considering the leftovers are summarily discarded, it’s a lethal decision to use it.

truncate follows the same flags for size and units as split and some other toys from coreutils. If you’re familiar with much of what’s in the suite, it will only take you a second to get used to truncate.

And that’s about all I can think of to say about truncate. Use wisely. ;)

ttysolitaire: Your reward for sticking around so long

A thousand posts doesn’t mean a thousand programs, of course — the total number we’ve seen (if you actually stuck around from the beginning) is much higher than that.

After all, the original list that I had from half a decade ago had close to 1,000 on it when I meshed it with some others, and I’ve been adding suggestions as we went along. The math might not seem to work, but the total number of programs checked is probably well over 1,500.

Keep in mind that there are some that have faded away, others that were too esoteric for me to use or understand, a lot that just wouldn’t build, and entire categories that I dismissed out of hand. Plus another whole bracket of modules and modes (think: vim and emacs) that I’m tiptoeing around, because it opens a whole new can of worms.

So don’t feel cheated if I tell you there have been half again as many programs as there are posts. I’m not trying to trick you somehow.

Just to prove my goodwill, I have a marvelous console game for you today: ttysolitaire.


My attraction to this is probably obvious from the get-go: Color like that wins points in my book, any day of the week.

The other strong point — and possibly a stronger point — is simply that ttysolitaire’s controls are fast and easy. Arrows to move your selector. Space to pick up and drop. M and N to hold stacks of cards. Q to quit.

It takes all of about 10 seconds to achieve warp speed with ttysolitaire, and after that you won’t miss the mouse for a second.

Only two (very) small admissions with ttysolitaire: First, I’m going to guess that the suit characters aren’t visible in your virtual console, unless you know about a font that I don’t. It might be nice to see a command-line switch for H-D-S-C, for emulator-less gameplay.

Second, ttysolitaire needs a slightly odd minimum terminal size — I think it’s 57×28, if I remember right. It will run at larger dimensions just fine, but it does mean the classic 80×24 (or 25) is a no-no.

Like I said, those are both exceedingly minor. And since ttysolitaire looks so good and plays so fast, I’m more than willing to overlook them. By all means, accept a coveted K.Mandla gold star, and the honorary spot of post 1,001: :star: ;) Enjoy!