2009-09-30

Hacker Fuel Review: Starbucks VIA Instant Coffee

I'm kind of a coffee snob. Not an ultimate connoisseur, but a bit of a snob. I usually drink one or two mugs (~16oz each) of pressed coffee per day. I have a press pot at my desk, and another at home. I grind fresh, locally-roasted beans with a conical burr coffee mill, and bring them to work to brew. I drink my coffee black, as $DEITY intended. (Sorry to bite your style, liquidmatrix guys, it's CATCHY!)

I occasionally partake in a fatty, chocolaty, girly mocha. Since most of the coffee shops in a reasonable distance to my office provide espresso drinks that are either unpredictable or predictably acrid, I opt for Starbucks. It's close. It tastes the same every time, and it's tolerable. That, and the people who work there are friendly, giving me the occasional hook-up.

This time, the "hook up" was a few samples of their new Starbucks VIA product. I put "hook up" in quotes because I'm pretty sure that they're supposed to hand these out to everyone that bothers to enter the store. "It's not instant coffee," Eric said, trying to eschew the stigma associated with the crystallized offal sold as classic instant coughee, "It's micro-ground soluble whole-bean coffee. You'll probably like it." I could instantly tell that the manager had been to training about this product. After all, Instant Coffee Is Serious Business. You can tell from the advertisement floating around on YouTube.


Reluctantly, I took the packets -- disturbingly packaged not entirely unlike individual serving Taster's Choice instant coffee. Heebie jeebies!

When it was time for my mid-morning coffee, I glanced over at my little container of recently-roasted, even-more-recently-ground beans, Then at my stainless steel press pot. Then over to this little pouch of coffee dust. I took the plunge, opting to try Italian Roast, the boldest (their words, not mine) of the samples gifted to me.

Supposedly, one Starbucks VIA packet is scientifically engineered to dissolve in eight fluid ounces of clean, piping-hot water for an imbibery experience that's indistinguishable from a freshly-brewed cup-o-joe from the Starbucks down the street. That's not really saying much, now, is it?

Reaction:
I have to admit, it's not as bad as I'd thought. It certainly is no replacement for my press pot and fresh-ground coffee snobbery, but it works. And it's caffeinated. Or maybe it's the placebo effect that's keeping my brain-aches at bay and giving me a slight boost. The finely-ground coffee leaves a familiar and comforting layer of sediment at the bottom of the mug that one does not encounter with traditional instant coffee.

I skipped the precise measurement of water and suggest you do the same. Put the coffee powder (which really is whole-bean coffee, finely ground!) into you favorite caffeine-quaffing vessel, and add hot water a bit at a time. Sample it frequently until it strikes a balance you like.

Would I buy it?
I forgot to check the asking price on the way out. It certainly does compete with the taste of a $1.50 cup-of-joe, but I doubt I'd pay more than 50 cents each for the privilege of mixing this stuff up myself. It's hands-down the best instant coffee I've had. It'd work in a pinch, and would probably be great for backpacking or office coffee emergencies.

2009-09-29

KC2600: this Friday

This Friday. Oak Park Mall food court in Overland Park, KS. 5:00 PM. As of right now, there are no demonstrations planned, but bring any geeky projects you have been working on, or just hang out and discuss crypto, security, computing, telephony and world domination with us!

2009-09-28

Composite memories of things that didn't quite happen

I love music, and for some reason, a lot of times music will bring back memories. Likewise, sometimes remembering things in the past makes a song pop into my head. Almost always, these songs and memories are tied together in my brain, bi-directionally. Usually, the memories are tied with songs I was listening to (or had stuck in my head) when the event happened.

Does this sound weird enough yet?

Examples:

  • The Starecase remix of Vega, by Paul van Dyk reminds me of a weekend spent installing a wet nitrous oxide system in my friend's car.
  • Anomaly, by Libra reminds me of my first attempts at programming Lego Mindstorms with the NQC framework.
  • Save Yourself by Stabbing Westward reminds me of scavenging at Hobby Lobby on a cloudy saturday for materials to finish the final project of B&W Photography class in college.
  • Nine Inch Nails' cover of Joy Division's Dead Souls reminds me of countless hours spent browsing Silicon Toad's ancient treasure trove, The Infinity Void. (+5 Hacker Points to anyone who can tell me the connection there)

So, I offer up a perplexing conundum that's been bothering me for a few months now. One song conjures up a composite memory. Not two memories. A composite one -- a brain indexing clusterfuck. A lie, for all intents and purposes. A memory I can see in my mind's eye as clear as day, just as if it happened, but it couldn't have.

I got my very first digital audio player for Christmas in 1998. Eager to try it out, I uploaded a few songs to it as soon as I got it out of the package. I just grabbed whatever I had, but I remember the first song I played through it was "The Way U Like It" by Frankie Bones.

Now that song brings back memories of listening to my music player while being an apprentice to my grandfather.

Details so real -- the scent of lunch: Campbell's ramen noodles (a favorite of mine back in the day, I can't find them now), I'm twiddling some frob on the desk in the kitchen's dining area, near the central control for the house-wide intercom and AM/FM Radio system that my grandmother used to page us with when it was time to eat. A bright day -- I saw the cardinal outside that my grandma named "DumDum" because he'd run into the storm door repeatedly each morning. And, of course, Frankie Bones at full blast on the head cans plugged into my new portable music player. My brain thinks this was all real -- all happening together as one event.

Problems:
  • I apprenticed with my grandfather for half a year in 1995.
  • My grandfather died in January of 1997.
  • I got the audio player in December of 1998.
  • The Way U Like It was debuted as a track on 12" Vinyl in the UK: August 9, 1999.
I've heard that dreams are mostly comprised of things we've seen in the past and assemble in our asleep imagination. Is it that kind of composition that leads to waking anomalies such as this one -- so real and vivid yet so blatently impossible? Am I the only one?

Explanations:
  • It's possible that I got the date wrong on the audio player. It was released to market before Christmas of 1998, but it's possible that I got it in 1999. I definitely got it for Christmas (or did I?! Mom? Dad? Help a guy out here! Do you still have the reciept for that thing?!) If I got it in '99, the song was already out and I'd probably already come across it by Christmas. That still doesn't explain the other discrepancies.
  • My grandmother lived at the house several years after grandpa died. It's possible I was listening to that song on that music player at my grandparents' house, sometime after the song was released. In this case, I wasn't apprenticing with my grandpa, and it certainly wasn't the first song I copied to the music player.
  • I have a history of epilepsy -- that could possibly be part of the composite memory debacle.
I can't think of any other anomalies like this one, though, where something just doesn't add up. It could be because there aren't any other composite memories, or it could be that the ones I have aren't so easily questioned. Don't ask my brain to differentiate between them. It still thinks the memory is real.

I'm not sure what point I was hoping to make with this one, other than wondering how much of what we remember really happened as we recall, and how much of it is a jumbled mess of things that actually happened, just not in the way we remember.

2009-09-23

Booting Linux and Windows on separate drives

Normally, installing Windows isn't something I'd do. Not for friends. Not for family, and not for myself. My wife dual-boots Ubuntu and Vista on her laptop -- Vista because that's what shipped with it, and World Of Warcraft runs fine under it. She's plenty competent to keep it cleaned up, secure, and able to restore her stuff from backups if something goes wrong. She's probably better at Windows (at least Vista) than I am, and certainly doesn't need my help very often. As for me, I just didn't think I NEEDED Windows for much...

That is, until I found out how much better my employer's VPN works from Windows. It doesn't work well from MacOS, barely works under Ubuntu, and oddly, works okay under Solaris 10, but it's far from perfect. A few days ago, I logged into the VPN from the Corporate-mandated Windows XP Work PC in the office and was kind of in awe. We're talking an order of magnitude better, on a logarithmic scale. Figures, right? With all the after-hours remote work I'm finding myself doing more and more often these days, it looks like I'm installing Windows!

As a self-proclaimed Operating System Junkie, I suppose it wouldn't hurt to dabble in Windows just a little. After all, my wife's already running a game server on Win2k. What can it hurt?

The only machine I have laying around that I felt would do Windows justice is an old Dell PowerEdge tower server, which spends most of its time running Ubuntu. I didn't feel like re-partitioning or re-installing everything, so I unplugged the Ubuntu hard drive, scared up an old 20GB drive for Windows, bolted it into place, then went to town installing Windows. My goal was to move the Windows hard drive to the secondary IDE controller once installed, then figure out how to get GRUB to boot Windows.

From here, I'm assuming that:

  • You have a Linux distro installed on the first hard drive booting with GRUB
  • You have swapped the Linux hard drive out for a fresh one (also the first hard drive) and installed Windows to it.
  • Afterward, you have put both hard drives in, with Linux as the Master on the Primary IDE controller (or the first SATA drive)
First, I wanted to make sure that the BIOS saw all my hardware. At this point, my setup was like this:

hd0 - Primary Master: 80GB HDD, Linux
hd1 - Primary Slave: Optical drive (DVD±RW, etc)
hd2 - Secondary Master: 20GB HDD, Windows

Next, I made certain that Linux booted properly. This, as expected, worked just fine. I rebooted, and paused GRUB's boot process and entered CLI mode to try to boot Windows. Initially, I tried this, which I thought should work:
grub> rootnoverify (hd2,0)  # Select partition, don't mount it
grub> chainloader +1 # Calls the first sector, should be Windows loader
grub> boot # What do you think?

Starting up ...

Yeah, right. It locks up. Doesn't even try.

Reading up on the GRUB documentation, I found the map command. Score! This tricks the BIOS into swapping drives around.
grub> map (hd0) (hd2)       # Maps hd2 (as above) to hd0
grub> map (hd2) (hd0) # ... and vice versa ...
grub> rootnoverify (hd2,0)
grub> chainloader +1
grub> boot
Amazingly, map did the trick and Windows started booting. It thinks it's running on C: and that Linux is on the secondary Master. Now, to take this and make a "Windows" option in the GRUB menu. Boot into Linux and add these lines to the end of /boot/grub/menu.lst:
title          Windows
map (hd0) (hd2)
map (hd2) (hd0)
rootnoverify (hd2,0)
chainloader +1
While you're in there, you may want to look for the Timeout line as well, and increase it. I chose not to, because I'll be booting to Windows very rarely.

Then, update GRUB's configuration, since it has to write data to the boot sector on the Linux drive. On debian-based systems, it's:
$ sudo update-grub
Now, give it a reboot and make sure that both Windows and Linux boot from GRUB as expected. This little project actually went easier than I'd expected, mostly thanks to GRUB's documentation. While extensive and technical, it is well-organized.

By the way, I tested the VPN for about 9 hours today and it was rock solid the whole time. Better than I can say for the other operating systems I've tried it with. At least I got some benefit from using Windows. If only I had awesome coffee, an IBM Model M and my MX Revolution mouse at the office every day. And if I could work in my pajamas.


Now, if you'll excuse me, I need to go take a shower with concentrated chlorine bleach and a cheese grater to get rid of all this Microsoft residue.

2009-09-18

Verizon Wireless customers: Privacy Fail

I got this lovely IED of Privacy Fail in my inbox this morning. See the circled text. It looks like we get opted-in by default! If you don't want to be sold and traded at Verizon's every whim, you should probably try to hunt this down or access the setting in your VZW account.



Update: According to Mike Fratto (@mfratto) it's old news. How long have we been opted in, anyways!? He points out in your account, go to VZW→My Profile→View/Edit Privacy(CPNI) Settings to change

2009-09-12

Gustav, the hackerspace twitter-bot



Early on in Cowtown Computer Congress' progress, Gustav became our official mascot. When Jestin bought Gustav at a garage-sale, he was a "butler" statue that held a tray. This was probably for halloween candy. Gustav's primitive electronics could sense people nearby with a photocell and do simple actions like breathe and move his eyes. Mostly, though, he just looked kind of cool. We formally adopted Gustav as Professor Emeritus of our hackerspace.

Over the last year or so, we've changed his clothes, added accessories, "facial hair", a remote speaker with a voice changer and swapped out all his circuitry with some homebrew stuff. Usually, Gustav just sits there with a smirk on his face, watching over the hackerspace. Sometimes, he finds his way over to the door and startles people when they first enter the space too. Such an ornery guy.

As CCCKC's official mascot, he has a twitter account. That's in addition to the CCCKC twitter account that's used more for CCCKC-related news.

Since Gustav watches over our hackerspace, I thought it appropriate to empower him to let others know when people are hanging out with him. This is done with a motion sensor. The first time Gustav sees activity, he will tweet about it. As long as people keep moving around, he observes stoically. When the hackerspace remains idle (currently, I'm using 30 minutes as the time-out), he tweets again to notify others that things have gone quiet. I didn't want to clutter the CCCKC twitter feed with such minutiae as the comings-and-goings of hackers on a daily basis, so Gustav chronicles their activity dutifully in his own feed.


This solves the problem of passively letting others know when there's something going on, but keeps privacy at a maximum. Without calling or visiting, there's no way to tell who is doing what at CCCKC, just that there's something going on. This solution avoids the problems posed by public-access webcams and other solutions that might give away too much information for some peoples' comfort.

Hardware
  • An old 1U Rackmount x86 system I had laying around
  • X10 TM751 Transceiver
  • X10 CM11A Bi-Directional Serial Interface
  • X10 MS13A "Hawkeye" motion sensor

The Hawkeye motion sensors are pretty weak. I eventually want to buy six more ($60 total at the evil website that sells them) so that full coverage can be had for all the rooms at CCCKC. They simply send an RF signal to the X10 Transceiver.

The signal is then placed on the electrical system for any peripherals to detect. In this case, the only peripheral for now is the CM11A serial interface. I could have the motion detector turn lights on and off, sound a chime, or perform several other actions if I wanted. For now, I'm interested in getting the motion detector input to the computer.

The CM11A can sense X10 network data on the electrical system, and can also send X10 network data as well.

Software
OpenBSD is a spartan operating system that works well on slow systems. It has a minimal installation footprint but maintains a rich developer environment for compiling software. It was chosen because it was already installed on the 1U system I am using for the project, and because I've already used Heyu on OpenBSD in the past without any problems.

Curl is a command line tool for transferring files with URL syntax. It's lightweight and works well. Its only job will be to update Twitter from within a shell script.

Heyu is a software package with the ability to make sense of the X10 data and act on it. It's quite extensible, but I'm only using it to trigger a shell script.

Configuration
Compiling and installing heyu on OpenBSD is straight-forward. Unpack the tarball, run "make" and then as root, run "make install"

This is the heyu configuration file I put together. There isn't a default configuration file installed, so heyu isn't "install and go" by any means. This file is /etc/heyu/x10config
TTY             /dev/tty00
HOUSECODE C
SCRIPT_MODE HEYUHELPER
The HEYUHELPER Script Mode just tells heyu to look for a script in the path called "heyuhelper" and run it. It passes some X10 parameters in the arguments, but for the time being, I am not using them. The above configuration is almost the simplest one you can put together and have a working Heyu install.

To make heyu start automatically at boot, I placed the following in /etc/rc.local:
/usr/local/bin/heyu -c /etc/heyu/x10config start
The "heyuhelper" script mentioned above, is just a quick line of shell in /usr/local/bin/heyuhelper that appends an epoch timestamp to a log file. This can be extended quite a bit to address individual sensors for determining which rooms are in use. For now, I'm keeping it simple. As configured, any X10 trigger on the house-code Heyu is monitoring will append a timestamp to the log file.
#!/bin/sh
date +%s >> /var/log/motion.log

The final piece of the puzzle is a script: /usr/local/bin/cavecheck.sh, that runs from cron.
#!/bin/sh
curdtme=`date +%s`
lastdtme=`tail -1 /var/log/motion.log`
dif=`expr $curdtme - $lastdtme`

if [ "$dif" -lt 1800 ]
then
if [ ! -e "/var/log/caveactive" ]
then
/usr/local/bin/curl --basic --user "username:somepass" \
-d status="#ccckc: Hackers are in the cave!" \
http://twitter.com/statuses/update.xml
touch /var/log/caveactive
fi
fi

if [ "$dif" -gt 1800 ]
then
if [ -e "/var/log/caveactive" ]
then
/usr/local/bin/curl --basic --user "username:somepass" \
-d status="#ccckc is kinda quiet..." \
http://twitter.com/statuses/update.xml
rm /var/log/caveactive
fi
fi
The cron entry itself is pretty easy. I added this to /var/cron/tabs/root so that it runs once every minute.

*       *       *       *       *       /usr/local/bin/cavecheck.sh
Once configured, I rebooted the system to make sure that everything came up automatically the way it should. If you're not down for that, simply sending a HUP signal to cron and starting heyu manually should work fine.

Once I get more motion sensors and all of the rooms are being monitored, I'll probably turn the timeout down to 15 minutes or less.