Inexpensive Dry Erase Markers with Magnets on their Caps

Dry erase markers with magnetic caps

I have a set of the bigger chisel-tipped Expo dry erase markers, but I’m not a big fan of large pointed markers. I’ve been using a random set of cheap skinny dry erase markers that I picked up at some sort of dollar store. I liked these cheap markers much better than the chisel tip markers, and the two black markers that came in the set lasted over six months.

Since the cheap black marker died I’ve been using the big chisel tips again. I finally remembered to actually look for replacement markers while I was shopping a few weeks ago. I ended up finding some very good markers at Wal-Mart.

The brand name on the package is “@ the OFFICE” and a six-pack of markers was about three dollars. They have very fine point tip but they don’t write as dark as most markers. They do have one feature that I am very excited about, though…

They have magnets in the caps!

I am constantly misplacing markers, so this seems like a very good idea. The magnets are very cheap and very weak. I ended up hiding a few strategically placed washers behind the trim of my white boards, the markers stick to those just fine.

I have a stack of tiny 4mm disc-shaped rare earth magnets sitting here. I taped one to a large Expo marker. The little rare earth magnet has no trouble holding the Expo marker up on one of the nails that holds my whiteboards to the wall. The cheap, flexible magnet on the Wal-Mart markers can’t even come close to sticking to those nails.

My Backup Strategy for My Laptop

A good backup strategy is very important. Most people only own a single hard drive at any given time and they will never think about backups unless they are unlucky enough to have that hard drive die on them. I probably have over a dozen hard drives here at home. With this many drives it, is inevitable that one or more will fail unexpectedly.

Automated btrfs Snapshots

I’ve been running btrfs for quite a while now. This has been both a blessing and a curse.

btrfs gives me the ability to instantly create snapshots of my file systems. This is my first line of defense against stupid mistakes. At any given time, my snapshots give me access to most of the files that existed on my laptop over the past four weeks. This is the only backup I am likely to need to rely on for anything short of a hard drive failure.

I’m scared of btrfs. I haven’t lost any data to it so far, but I am still quite paranoid.

Automated rdiff-backup Backups to My Laptop’s Second Hard Drive

The boot drive in my laptop is an 80GB SSD, and the second drive is a 320GB spinning drive. I run rdiff-backup daily, using cron, to back up the majority of /home and /etc to the second drive.

rdiff-backup is one of my favorite pieces of software. I currently have 176 daily backups of my home directory stored on my laptop’s second hard drive. In my case, the total space required for that is about twice the size of my home directory.

Automated Off Site Backups of Important Data

I would like to be able to automatically back up all of my data off site every day, but it just isn’t feasible for my data. My home directory is actually quite small, only around 10 to 15GB. The problem is that I often have large files that are only present for a few days at a time. Much of my home directory is pretty unorganized, except for the data I really care about.

If it is worth my time to create a file, then I figure it is also worth my time to put it in revision control. Everything worthwhile that I’ve created in the past 10 years is sitting in a repository in my ~/Projects directory.

I run a daily backup of my ~/Projects directory (and a few other similar directories) to a staging area on my spinning drive using Duplicity. I need to do this because it would be difficult to install Duplicity on my Android phone.

It is very easy to run rsync on Android, though. I have another cron job that runs every few hours. It uses rsync to synchronize my local Duplicity backup with both my web server and with the micro-SD card on my Android phone. I have to run this script every few hours just in case my phone isn’t on the network when the backup job runs.

My Manual Full Backups

I also run an rdiff-backup of my home directory to an encrypted external USB drive. This backup is very manual. I try to do it as often as I can. I don’t think of it that often, though. I always run a backup to this drive before I travel, though. This drive only has 43 backups, covering almost twice the timespan of the 176 backups on the laptop.

This is one of my favorite backups, though. Even if this backup of my home directory were two months old, it would still be good enough to get me up and running and happy, as long as I can restore my smaller off-site backup over the top of it. I am happy to know that this backup will be here waiting for me in the unlikely event that someone drives a car over my laptop.

Files That Rarely Change

Some files just don’t change much. I have over 10 years of digital photos that just never change. There’s no need to back those up every single day. I have a copy of all my old photos stored on my laptop. If I know the photos are backed up in multiple places, then I store them accordingly. New photos go in one directory; old photos go in another. As the new photos become old photos, they end up being backed up in multiple locations on different kinds of media.

Native Linux Games for an Arcade Cabinet: rRootage, Noiz2sa, Torus Trooper, and More

I’ve spent quite a bit of time looking for native Linux games that fit the restricted controls of an arcade cabinet. Almost every game from ABA Games seems like it was made to be played on in an arcade. All of their games have awesome retro, almost vector-style graphics. Nearly all of his games can be played with a digital joystick and just a few buttons.

I’ve loaded nearly every game from ABA Games on my cabinet. They were all available in Ubuntu’s repositories. A few of his games require a mouse for aiming, but the majority do not.

I’ve played all of them once or twice, but there are a few I keep coming back to over and over again.

rRootage

screenshot of rRootage

I’ve been a fan of scrolling shoot ‘em up games for as long as I can remember. I cut my teeth playing Parsec on my TI 99/4a. I remember spending a huge amount of time playing games like Lifeforce), Gradius, and Zanac on my NES.

rRootage is a “bullet hell” style shoot ‘em up game consisted entirely of boss battles. The term “bullet hell” is new to me and I didn’t think I would enjoy this style of game. “Bullet hell” shoot ‘em ups have huge numbers of projectiles on screen moving in complicated and intricate patterns. These games require you to maneuver your ship in complex patterns between the various overlapping patterns of bullets.

The closest previous experience I have with a “bullet hell”-style game would be Zanac.

Noiz2sa

Screenshot of Noiz2sa

Noiz2sa is another “bullet hell” style shoot ‘em up. The graphics are quite simple. Your funny little ship mostly shoots at different-colored squares. You earn points by collecting the little squares that are constantly dropped by the enemies you shoot at.

If I understand the modern shoot ‘em up terminology correctly, then rRootage and Noiz2sa are both score attack games. Each level is just a few minutes long and the goal is to score as high as possible. After completing each level you are dropped back to the level selection screen.

Parsec47

Screenshot of Parsev47

Parsec47 is a much more traditional style shooter that feels a bit like a combination of rRootage and Noiz2sa. Like Noiz2sa, you have to collect all the little green boxes the enemies drop to earn points. There are also bosses, or at least boss-like enemies in this game as well.

Torus Trooper

Screenshot of Torus Trooper

Torus Trooper has the same vector-style graphics as the other games except this time you are traveling down a three-dimensional tunnel. It vaguely reminds me of Stun Runner, but with a much faster pace.

I don’t actually enjoy this game very much myself. I feel like I have no idea how to play any better than mashing the shoot button and hoping not to run into anything. Our six-year-old nephew seems to have a lot of fun playing this one, though!

All The Rest

I haven’t played the rest of these much. They all fit well on an arcade cabinet but I can only play shoot ‘em up games so much.

  • a7xpg – I’m not sure how to describe this one. I didn’t enjoy it at all.
  • Tumiki Fighters – I’m terrible at this one. You collect fallen enemies ti beef up your ship, Katamari Damacy style.
  • Titanion – Reminds me of Galaga. You collect enemies to use like “options.”
  • Val and Rick – The only non-abstract game of the bunch. Looks like most old shoot ‘em ups.

autojump - The Lazy Way to Change Directories

Update: I ended up switching from autojump to fasd, since fasd does everything autojump does and more. If you’re not already using autojump, then I would suggest skipping straight to fasd.

I’ve been using autojump for a little over a year now and I have no idea how I managed to survive without it. It is a simple idea that works amazingly well. Autojump keeps track of how often you cd into each directory so that it can give you easy access to the directories you use most often.

I keep projects I am currently editing in ~/wip/. I used to constantly type commands like cd ~/wip/personal-project or cd wip/boring-work-related-project. With autojump, I only have to type something short like j boring and I end up exactly where I expect to be.

Here is an excellent video showing off exactly how autojump works.

Autojump works equally well in bash and zsh.

Why I Finally Stuck With zsh

I have been a bash user for about 15 years now. I have probably installed zsh at least a half dozen times over the years with the intention of giving it a proper try. Nine months ago I finally put in the effort to properly switch over to zsh and I am glad I finally did it.

Using zsh isn’t much different from using bash. Almost everything that works on the command line in bash works in zsh, except that most things work just a bit better. Almost all the aliases and functions that I’ve accumulated in my .bashrc over the years ported over with little to no changes. All my little helper scripts in my ~/bin directory still work—they still run under bash or sh.

I decided to use oh-my-zsh as a starting point. I think this was a good idea. It sets up a lot of sane defaults, and its configuration is nice and modular. My laptop is the only machine I am currently running zsh on, so I am constantly being me aware of the features missing in my old bash setup.

complete_in_word

This is the feature I am most likely to miss when I am using bash. You can type things like /u/l/b<tab> and zsh will complete it to /usr/local/bin/. I use this constantly and it works really well when completing remote filenames in an scp.

scp Completion Works Better

I always seem to run into weird quoting issues when I use bash’s tab completion with scp. Sometimes it works great, other times it gets confused. I don’t remember having any weird completion behavior with zsh so far.

Recursive Globbing

Recursive globbing means that I don’t have to reach for find quite as often. You can run handy commands like wc -l **/*.p[lm] instead of more convoluted commands like find . -name '*.p[lm]' -print0 | xargs -0 wc -l {} \;.

Native Linux Games for an Arcade Cabinet: The Humble Indie Bundles

I’ve been digging around trying to find some games that run natively on Linux to install on my cocktail cabinet. The search has been a bit difficult. I don’t have a trackball on my cabinet, so any game that requires a mouse is automatically crossed off the list. There are quite a few games that are playable without the mouse… Unfortunately, many of them require a mouse to start a new game or exit the game. I thought Frogatto looked very interesting. You can start a new game without a mouse but you can’t exit without one! Frogatto; is open source, maybe one day I’ll get some gumption and add a quit key to it.

I bought the first Humble Indie Bundle but completely forgot that I had it! When the Humble Indie Bundle 2 went on sale I bought a copy right away. The second bundle has two games that don’t require a mouse; the first bundle has one.

BraidHumble Indie Bundle 2

Braid is an awesome game that only requires the keyboard. It did present a bit of a challenge for me because it doesn’t let you remap the keys. It was easy enough to wrap the game up in a script that does a little xmodmap trickery to remap the keys so I can play from the “Player 3” controller. I ended up doing this for just about every native game I’ve installed so far. Even games that let you redefine keys still require the arrow keys to move around the menus! My “Player 1” controller uses the arrow keys and that position has a vertical screen orientation.

Braid is an awesome game for an arcade cabinet. The night I installed it, two of us were leaning over the arcade table for at least an hour or more trying to get all those puzzle pieces. We completed the first two or three worlds that night. I think the most amazing moment that night was when we figured out how to get the two puzzle pieces that are just past the puzzle assembly screen in the first world.

Braid seems to require a surprisingly heavy-duty machine. It runs at pretty low resolution and at only 20 frames per second on my cabinet. That frame rate doesn’t make for a terribly smooth game, but I stopped noticing it pretty quickly. It doesn’t help that I have to invert the screen to be able to play it.

Cortex CommandHumble Indie Bundle 2

This one looks pretty cool. I’ve only gotten a chance to complete the tutorial mission so far. It seems like a game like this is made for a cocktail cabinet since it is a four-player split-screen game. Unfortunately, like every other split screen game, all the screens point in the same direction. It would be really awesome if I could rotate the screens, or at least get a MAME-style cocktail mode type display out of it.

It would definitely be a great two-player game on an upright cabinet, though.

I used xmodmap trickery for this one as well. I’m pretty sure I needed the arrow keys to move the virtual mouse around the menus.

GishHumble Indie Bundle

Gish is a perfect fit for any arcade cabinet. It is an interesting platformer where you control a blob of tar. I had a bit of difficulty getting the hang of the controls; it took me a while to figure out how to use the Jello-like effect of the blob to jump higher. I did manage to get past a few levels, though.

Once again, I used more xmodmap trickery. Once I created a few mapping files it became easier to change the key layout than it is to try to change the keys inside the games.

My First Failure, AquariaHumble Indie Bundle

Aquaria looks like it might be interesting. The game looks playable without a mouse, but it requires a mouse to change options and to exit the game.

Final Thoughts

I’m glad I bought the first Humble Indie Bundle. I had previously only played World of Goo. I’m glad the arcade table encouraged me to try Gish. The Humble Indie Bundle 2 was worth the money for Braid alone; Cortex Command is a nice bonus. I’m sure I’ll play some of the other games on my laptop. Osmos and Revenge of the Titans both look interesting.

Debacle with My New Cuisnart Espresso Machine

Update: 2012-10-30

It has been almost a year since I replaced my Cuisinart espresso machine with a cheap, pump driver Mr. Coffee ECMP50 espresso machine. It was an impulse buy at Target. They had it on sale for only $60.

I’ve pulled hundreds of double shots with the Mr. Coffee machine and it is still working just fine. It makes at least as good of an espresso as either of these Cuisinart machines, and the steam wand seems more powerful.

The ECMP50 and both the Cuisinart EM-100 and EM-200 have “pressurized” portafilters. I’ve learned that this means they all make a “consistently mediocre” shot of espresso.

I feel that “consistently mediocre” is pretty good at this price point. Especially the “consistent” part. It is very hard to screw up and make an actual BAD shot of espresso.

We’ll see if I change my mind when I eventually upgrade to a proper espresso machine…

Update: 2011-07-17

Last month, my Cuisinart EM-200 espresso machine stopped working. A cheap plastic (maybe vinyl) fitting on one of the pressurized lines split in half and it is just leaking water all over the internals.

I called Cuisinart’s customer service at 1-800-726-0190. They informed me that Cuisinart does not sell any internal parts. They told me that this is for “liability reasons.”

It seems silly to have to junk this big, heavy machine over a 5-cent piece of plastic. The machine lasted a little longer than six months, which is beyond the 90-day warranty. I don’t think I’ll be buying anything else from Cuisinart any time soon.

I’m hoping that I will be able to find a compatible fitting somewhere. It looks like some sort of plastic compression fitting. I’ve only ever used brass compression fittings, so I have no idea how common this style of connector is. My friend Google turns up a vast array of plastic fittings; none that I’ve seen so far look like they would work for me, though.

End of Update

I am a big fan of Bialetti Moka Express pots. I own three different-sized pots and I’ve been using one of them for almost three years now. We finally broke down last month and bought a proper pump-driven 15-bar espresso machine, a refurbished Cuisinart EM-200. We saw it in the middle of a “woot! Off” and figured it’d be worth trying out.

I’m glad we did because it makes an excellent cappuccino, or at least whatever it is that I make that sort of resembles a cappuccino… The coffee that comes out of this machine is so much smoother-tasting than the stuff that comes out of a Moka Express pot.

I don’t think I ever really made a hot coffee with the Moka Express that I was happy with. I also can’t really tell the difference between brand of coffee and another when I brew it in the Moka Express. I am amazed at how much difference I can taste from one coffee to the next with the proper Espresso machine!

The Debacle!

This is the first Espresso machine I have ever used. After the first half dozen Espressos or so it blew through the gasket. I ended up having to remove the gasket and replace it. This started happening more frequently until I just couldn’t pull a single shot without it happening.

The day that it was at its worst, we were out shopping, so we looked at some other Espresso machines. We actually saw this same model at Bed, Bath, and Beyond (for more than twice the price). I noticed that the gasket felt entirely different from mine. It was also much, much easier to lock in the portafilter. I figured they must have started using a new style of gasket.

The Fix

It turns out mine was installed upside down from the factory… I reinstalled it the correct way last week and it hasn’t blown out again since. It was extremely obvious that this was the way it was really supposed to be installed once I tried it.

Again, this is the first Espresso machine I’ve ever used. I was amazed at how difficult it was to lock in the portafilter. I had to crank on it so hard that I would have to hold the twenty-pound machine in place so that it wouldn’t rotate with the portafilter. I figured that was normal since it has to hold back 9 bars of pressure. That seems like a lot of pressure to me. I had the boost pressure turned up pretty high in my old turbocharged car, and it wasn’t even hitting 1.2 bars.

I’m very happy that it was an easy fix. I wasn’t looking forward to shopping around for another espresso machine. If this machine turned out to be a useless brick, I certainly would have had to buy another, probably way more expensive, machine. I was hooked on the new coffee the first day I had it!

I won’t be Retiring the Moka Express

At least, not the big 9 cup model. I can brew a comparatively huge pot of coffee with less time and way less effort with the Moka Express. Pulling a shot is pretty quick; pulling four or five shots takes a little longer. I can make a large blender full of frozen coffee drinks with one Moka Express full of coffee.

Cuisinart EM-100

I also got to try out an EM-100 this week. It feels and sounds exactly like my EM-200. The biggest differences are that the EM-100 is less expensive and it isn’t computerized. On my EM-200 I just hit the one shot or two shot button and wait for my espresso. You have to time the shot yourself on the EM-100.

If I hadn’t gotten a great deal on the EM-200, I would have been happy to buy the EM-100.

Native Linux Games for an Arcade Cabinet: Playing “Titan Attacks!” Without a Mouse

Puppy Games bills “Titan Attacks” as “The best Space Invaders tribute ever.” I definitely have to agree with them! There are plenty of different kinds of alien ships and they all seem to move around the screen differently. Some act just like old-school space invaders, some wrap around the screen, some of the meaner ones drop bombs and swoop down at you. I never seem to keep my multiplier built up for the boss battles, though…

The sound-track is a perfect fit for this game and the awesome retro style graphics make this game a fitting addition to my arcade cabinet.

The game is played with the keyboard, so it was no problem to map my arcade controls to match the keys. The problem is that “Titan Attacks” requires a mouse for some very important functions. You need a mouse to start a new game, to purchase upgrades in between stages, and to exit the game. My arcade cabinet does not have a mouse or a trackball…

I figured it would be pretty trivial to bind some automated mouse clicks to various button combinations. The mouse scripting was very easy thanks to xmacro. Binding the keys wasn’t as easy as I hoped.

xbindkeys Failure

When a game grabs the X11 keyboard, it sure doesn’t tend to let anything escape. Most games I tried intercepted all the keystrokes and didn’t let anything sneak past to xbindkeys. I had to intercept the keyboard at a lower level.

Reading /dev/input/event* Directly

I wrote up a quick and dirty Perl script to watch the event device associated with my keyboard (/dev/input/event2 on my cabinet) and watch for certain key combinations. When certain combinations are pressed, it calls the appropriate xmacro script.

If I’m going to do this for more games, I will have to sit down and design a better keyboard monitoring script. Continuing to write up piles of spaghetti-like if statements is definitely not something I want to do.

Trying to Assign Buttons in a Sensible Fashion

It turned out that I needed to bind nine scripts to different buttons. The first script is pretty overloaded. It attempts to do three different actions, all of which are related to starting a game. Six button bindings are needed for purchasing upgrades. One binding is to answer “no” when asked if you want to continue a saved game, and another is needed to exit the game.

I’m using the “start” button as a sort of shift key. My controllers all have six buttons, so I mapped “start” plus “button 1” to buy the first upgrade, “start” plus “button 2” to buy the second, and so on.

Holding “start” and pushing the joystick up attempts to do one of three things. First, it enters a name for the high score board; this is necessary at the end of a game. Then it attempts to click “yes” for when the game asks if you’d like to continue your saved game. Finally it clicks in the area where either the “begin game” or “continue” button are located.

This pretty much means that you click “start + up” any time you want to advance in the game, since it tries to click “yes” before it tries to start a new game. You also have the option of hitting the “no” button as well, which is “start + down”.

The “exit” button is over on one of the other control panels. I always try to keep the destructive buttons in harder-to-reach places.

How Well Does it Work?

Both better and worse than I expected. I had to add delays between the mouse button presses and releases to make things work more consistently. This sure makes the “yes/begin/continue” script execute like molasses. Even with the delay, the actions aren’t always picked up by the game. I would guess that they fail about 15% of the time, but sometimes the “continue” button fails two or three times in a row.

Starting the game also causes a few stray shots to be fired, mostly because of the delays between mouse clicks. I will probably have to rethink the idea of combining so many mouse clicks into a single macro.

Was it Worth the Effort?

It was definitely worth the effort. “Titan Attacks” is exactly the sort of game that belongs on an arcade cabinet. Puppy Games is having a sale on a bundle with “Titan Attacks,” “Ultratron,” and “Droid Assault” for only $7. They are all fun games; I sure wish my cocktail cabinet had a seat with dual joysticks so I could comfortably play the other two games on there.

Most of the hard work is out of the way now. It should be quite easy for me to add more games that require a mouse in the future.

I bundled up all the related files just in case anyone wants them. If and when I get around to creating a better solution, I will definitely make a copy available.

titanattack-xmacro-kludge.tar.bz2

Cocktail Arcade Cabinet Build: Part 10 - The Finished Cabinet

Our cocktail arcade cabinet build is finally completed. I’m very pleased with how everything came together. The quality of the cabinet ended up exceeding my expectations in every way I can think of. We learned many useful things along the way.

Some of the parts that we thought were going to be fast and easy turned out to be the most difficult and/or time-consuming. We thought applying the vinyl and cutting the plexiglas would be quick and easy, but those were probably the most time-consuming part of the whole build. We thought that slotting the boards and fitting them together would be difficult, but we easily had that all worked out on the first and second days.

Parts and Labor

The total cost of the materials for the shell, buttons, joysticks, and I-PAC4 was probably somewhere in the neighborhood of $500. I had to buy the LCD monitor; that was about $150 (beware of LCD computer monitors). I had all the rest of the guts on hand already.

The labor is difficult to summarize. The two of us probably clocked in somewhere near 40 hours each working on the build over the space of about two months. Quite a bit of that time was spent trying to figure things out, redoing things we did wrong, or just plain old screwing around. With all we’ve learned along the way, I bet we could build a better cabinet in half time.

Was it Worth the Effort?

It was absolutely worth the effort. I grew up playing lots of arcade games so just having the machine sitting in my office is enough to make me happy. The cabinet has been completed for almost a month now and very few days have gone by where somebody hasn’t played with it for at least fifteen minutes.

I’ve wanted to build an arcade cabinet for at least the last ten years. I’m very glad I did; playing games on an arcade cabinet just feels so much different from playing them on a television or computer. I’m not entirely sure how to quantify the experience, though…

It very much reminds me of the difference between watching movies on a nice LCD television versus watching movies on an LCD or DLP projector. My DLP projector is pretty old. It is only an SVGA projector, and the contrast ratio is certainly not the best but watching movies on it feels a lot more like you’re sitting in a movie theater.

If you’ve been thinking about building an arcade cabinet for a long time, my advice is to start building. It was easier to build than I expected it to be and it was worth every penny. I wish I built one ten years ago!

Is it Really Finished?

I don’t know if I will ever consider the project totally finished. I think there will always be small changes to be made. For now I’m going to leave it alone.

The Next Cabinets

We’re planning to build a small 16 inch tall bar top cabinet. We have an old 14” 700MHz laptop lying around that we plan to stuff inside. It isn’t fast enough to play “modern” games from the middle of the 1990s, but it plays the classic games just fine.

After that, we’d like to build a low profile upright cabinet. We’re thinking it will be about somewhere around 18 inches deep (not counting the control panel).

The completed arcade cabinet, three quarters view The completed arcade cabinet, head on The arcade cabinet with a yardstick for scale Up close shot of the joystick and shiny buttons Another shot with the yard stick