Friday, November 01, 2013

'We're going to have congressional hearings about this project' - the problems trigger bad memories of a fucked up time

Lately the problems of the site have been in the news. It is pretty much a disaster. A very large software project apparently was rushed out the door without adequate testing, and it didn't work as well as hoped. Also, Autumn followed Summer this year and at night the sun went down with commendable reliability. At any rate, the uproar about it and the tense hearings remind me of my first job out of school, where one of my co-workers, a grizzled (although, in retrospect, probably in his mid-30s at the oldest) veteran assured me our doomed Bad News Bears debacle of a software project would most likely end with Congressional Hearings.

Most people's first jobs out of school don't come with the threat of ending up testifying before Congress if you screw up. In this case, I had somehow miraculously landed a job despite having majored in the least (at the time) marketable major possible, pure math. This was the 90s, so jobs were in abundance. Democrats said this was because of Clinton. Republicans credited a magical lag effect from Reagan. This magical lag effect was not cited in the case of George W. Bush. Anyhow, it was also true that this was a government job with the Navy that paid peanuts. The pay was so bad, in fact, that my Dad got pretty mad at me for accepting the job. But I was by this time pretty much under Bloomington's spell, and didn't want to leave, so I accepted the crappy job with a defense contractor (I didn't get the government employee benefits) and gave it a go.

Things were pretty messed up right out of the gate. The idea behind the project was to develop software for a 'minehunting sonar system' for the Navy, so at least there'd be no nuclear disasters if we screwed up. The defense department had long used Ada as their standard programming language, but here they were going to give C++ a go. So they hired somebody who just finished a Master's in Pure Math and had taken one Object Oriented programming course and paid him $20K a year, and mission accomplished as far as having a C++ guru on board. They put a guy in his early 30s who was a software developer who mainly just wanted to be liked in charge of his first ever project. The cast of characters included other science grad school sad-sack contractors like myself, aforementioned grizzled veteran, whose face would turn a cartoony shade of red when he railed against whatever he was railing at that day, a kind of cool hippie-ish dude who was the classic mad hacker and listened to Christian Metal bands, and a whole bunch of other government lifers.

For whatever reason, the 18 months I was there, we were somehow able to get by with only producing some really uninspiring design diagrams using 'Rational Rose', a couple hundred lines of C++ code, and some Perl scripts. We attended a couple of review meetings with Navy higher ups which mostly consisted of us battling with our arch-enemies, a base in Panama City that was duking it out with us for the project. The meetings would end with the Navy officials disgusted enough with both groups that neither one got to go home with the prize. So nobody got fired. Hooray!

Meanwhile the spectre of Raytheon, the contractor who had developed the original version of the software, loomed in the background. They were the scary, well-oiled private government contractor that today is still a champion of getting a hold of as much taxpayers' money as possible for their shareholders. They seemed a little less scary when you talked to the old timers I worked with, and they told you what an utter abortion Raytheon's early versions of the software were. Horrible as in if the software was still running a minute after it started, you knew it was going to be a great day. It sounded even more horrible to me in my naive 25-year-old youth, when I had no idea how widespread failure and dysfunction was in the software world.

At one point Raytheon called several of us who were working as contractors in for interviews. This made for an OK free trip to Rhode Island, which I can take or leave, and I purposely blew the interview by first pretending I didn't know the difference between a VAX (operating system) machine and a FAX machine, and then picking up an inertial unit somebody was clearly testing and moving and rotating it around. The place seemed like a miserable engine of soul destruction and everybody who wasn't grumpy was kind of robotic. By the end of the day I was ready to go Charles Bukowski if this was all the professional world had to offer. Anyhow, whatever info Raytheon was after, they didn't get it from me, but I suppose if they were trying to determine if the contractors currently working on the project were pretty fully mentally disengaged, they got their answer.

Oh yeah, also the HR glad-handing fake smile in a suit from Raytheon I spoke to at the end of the day said 'Ah yes. The 'Clemson Tide'' when he saw I had gone to Clemson. I want a name when I lose. Call me Pastor Blues.

Eventually I escaped the project for a job testing software for a less dysfunctional German medical device company (although there was drama and tension in abundance there too, I would find). Years later I heard from a former co-worker who'd kept in touch that the project was still going and they were still using our code (presumably with my comments like '/* update all this crap */' edited out). Nobody had to testify before Congress. But the project was a miserable episode in my life I was happy to leave behind, and I have all kinds of empathy and sympathy for the poor folks dealing with the site now.

Monday, July 08, 2013

Free as in Beer: My Recent MOOC experience

I last sat in a conventional classroom in December of 1994. I was taking a Topology Final as a Ph.D. student (Mathematics, if you don't recognize 'Topology') at IU. I had already decided to quit the program and go find a job outside of the academic world, so why I was there is anybody's guess. I think I worried that an especially crappy grade would haunt me for the rest of my life.

So, for nearly 20 years, I've been educated either through my own initiative or via training courses for work. I've attended the occasional workshop, like a recent one at Bloominglabs about using a lathe and a mill. I've been completely outside of the conventional college class and tests world. Eventually I stopped having bad dreams about being late for a Final Exam, not knowing exactly where it was being held, and not having studied or even attended classes. These were replaced by anxiety dreams about showing up for a race late once I started running in races.

2 months ago I decided to try out a MOOC, specifically, 'Intro to Data Science' on Coursera, taught by professor Bill Howe of the University of Washington. As somebody with a (very distant) math past who works with databases all day, learning about technologies I don't get to use during the workday like MapReduce, Hadoop, and the machine learning toolkit for Python, scikit-learn was appealing. It was also a chance to venture into a classroom setting without paying big money like some friends who've decided to go for MBAs (personally, I have zero interest in pursuing an MBA, but I did admire their dedication and devotion to keeping up with the challenge).

Even though the class was free, and I was one of 70,000 people who signed up, the idea of not doing well for whatever reason did provoke some anxiety. For one assignment, students submitted code which was then run by the auto-grader, nicknamed 'Darth Grader' by students on the forum. It suffered under the load, and there was often a long wait before getting results like 'you didn't calculate a value for @JonasBrothers' (because I removed punctuation including the very meaningful '@' symbol from Twitter data). One night I had a new anxiety dream for the MOOC era, where I refreshed my browser to find my scores had all been accidentally converted to zero by the autograder.

One Sunday I realized in the middle of the day that a quiz about MapReduce was due that afternoon. This stress was compounded by the fact that the service we were supposed to use, JSMapReduce, was suffering under the load much as Darth Grader had a few weeks previously. The discussion forums were life savers, and some suggested just running the job on your own machine using a Python library that simulated MapReduce (I say simulated because everything was being run in one process, pretty much missing the whole point of MapReduce, which is to split a load over a crudload of servers).

In general I found the forums to be the most worthwhile and surprisingly beneficial part of the experience. I am as skeptical as anyone of crowdsourcing, and you'd expect with 70,000 students signed up for a course, the forums would be chock full of noise and cluelessness. This was not really the case at all. People shared knowledge and experience (but, for the most part, followed the rules and did not share code). This helped a bunch with the optional AWS project (run a MapReduce job to crunch a TB of data). I found out that there's a $100 grant available to students, so I didn't have to pay for the services out of my own pocket (keeping the course truly free), and in a thread people compared notes about how many nodes they used and how to tweak settings when setting up your job. There were also helpful discussions about setting up and running Pig (a high level query language for Hadoop MapReduce jobs, sort of like SQL, but only sort of) on your own machine, so I was able to debug my pig scripts locally without having to pay for time on Amazon Elastic MapReduce (on AWS). (In the end, I racked up only $8 worth of charges against my $100 credit - we were warned it could cost up to $20).

Some critics say the forums are no match for the rapid fire face to face discussions you can have at a University. That is, if you're not as introverted as I was in my University days. I was lucky enough to have some accessible professors, although in retrospect what that offered was a mixed bag. When people get jazzed about the fact that you're hanging on their every word, they can veer off into weird political or racist directions. They can give you really horrible advice, like the advisor who told me not to take a graph theory class. I will probably expound on this in a future post.

I did enjoy the assignments, although several other students hated the open-ended requirements in some cases (for example: 'participate in a kaggle competition'). I thought the openness was kind of fitting, given the subject matter. Data Scientists have to figure out what the data is telling them without a set of hard fast consultant-friendly requirements.

The Kaggle assignment was fun and humbling. There is a tutorial-like competition on Kaggle (a website where Data Scientists and wannabe Data Scientists compete for money and glory solving problems in scientific or business domains) about 'Predict Based On These Variables If A Person Survived the Sinking Of The Titanic', which walks a person through examples with Excel, Python, and scikit-learn (also Python - it's a Machine Learning toolkit). Why I say it was humbling is that a kind of hokey and hackey Python example in the tutorial did a better job making predictions than the more impressive sounding 'Random Forest', unless you the competitor applied a whole lot of what's called 'Feature Engineering' to the problem to figure out how to deal with missing data and to identify how best to use the info provided. The assignment was due too soon - I would have liked to have dug into that more. As it was it was something of a 'here's a firehose of new tools, good luck!' experience. The Chief Data Scientist at Kaggle, Jeremy P. Howard, made an appearance in an 'Ask Me Anything' in the forums, and this thread was as valuable as any lecture.

The course ended a couple of weeks ago. I completed all the required assignments, but I still don't know if I got a certificate of completion yet. I'm not sure what I will do with such a certificate, but as I've never been a Mayor Of Starbucks on 4square I would like to have some sort of virtual recognition or mark of greatness. The ending did feel a bit like a fizzling out, really.

Since the course finished I've resumed tinkering on some Bloominglabs related things, like my open-ended Arduino based bike computer and playing with our new(ish) laser cutter some more. I find that since I started doing that stuff, a purely academic exercise like completing an assignment is not as rewarding, because ultimately these often feel like meals you clear away when you're done, and move on. On the other hand, w/out more structure, peer pressure, and etc, there is a tendency for my hacking projects to be very open-ended and not really result in some point of completion (I tend to be best at 'completing things' if there's an upcoming opportunity to show the thing off). It's a trade off.

Ultimately I give Coursera a passing grade because I'm going back for more. I'm taking 'Maps And the Geospatial Revolution', starting July 17. Join me if you want to make some cool maps.

Some handy references:

Monday, March 18, 2013

Keeping Louisville Retro: Louisville Arcade Expo 2013

Two posts ago I wrote about Ground Kontrol Arcade in Portland, a real 80s-era arcade. Today I'm writing about the Louisville Arcade Expo, which is a gathering for people who love video games from the late 70's to the consoles of the 90s. I am not necessarily meaning to turn this into a classic video games blog, but let's just see where things go.

The Louisville Arcade Expo has been happening since at least 2011. Last year it was on my radar, but I didn't get it together to go, and I felt much regret after missing it. We recently set up a MAME cabinet at Bloominglabs, so I've been on a classic video games kick lately and this year was not going to miss it. I rounded up a couple other people to make the trip from Bloomington to Louisville to check it out. The day was a magical event that exceeded all expectations, with only a couple of negatives that we'll talk about later.

It was held in the Ramada Plaza, well outside of downtown Louisville in a sort of non-descript industrial zone. Of course, we were planning to spend the day in a retro 80s-90s bubble, so the setting didn't matter too much. There was a lot of floor space featuring 100s of pinball games and 100s of classic arcade games (I may be exaggerating a bit here. My point is, the space was huge.) There were also competitions with the action projected on the wall, an '80s Living Room', a vendor area, a food area for people wanting a $7 rum and coke or $3 hot dog, and finally my favorite spot, the classic computers and consoles room.

This room was laid out in chronological order, starting with the classic Atari 2600 (yes, there were games before then, but here we started with the 2600). That was my first home video game, one I spent many, many hours playing. I've since revisited the games in emulated form, both on PCs and in the form of a cheap 'Jaxx Pacific' joystick I have featuring some old games, but this was the first time in 25+ years that I picked up the cartridges and popped them in, which is a different feeling. I played Space Invaders, Choplifter, and Missile Command, opting to steer clear of the horrible, terrible 2600 port of Pac Man (although I saw quite a few people playing this over the course of the day. It was as horrible as I remembered!) One minor problem was that one of the joysticks was sticky, so I swapped it out for the other one, and then marveled that people would subject their old video games and arcade cabinets to a weekend of wear and tear (thank you, people who did).
The Atari 2600 and some cartridges
Other games and computers present included the Atari 800, the TI-99, the ColecoVision, Nintendo's FamiCom, the really wonderful Vector graphics console the Vectrex, Super Nintendo, Sega Genesis, Dreamcast, 90's DOS boxen running DOOM and the like, and quite a few things I'd never heard of and was seeing for the first time, like the Nintendo 'Virtual Boy'.
Virtual Boy, played by Real Boy
Virtual Boy was from the days when 'Virtual Reality' was a big thing, and people would wear VR helmets and gloves and get real headaches in simulated environments. Virtual Boy features goggles on a tripod that cover the wearer's entire field of vision, with 2 screens showing slightly different images in two colors, red and black. I played Mario Tennis on it, and the 3D effects were pretty cool, but honestly it wasn't something I could imagine myself spending hours playing.

The aforementioned Vectrex was a totally different story. Some of my favorite classic games (Tempest and Asteroids for example) use vector graphics displays, as opposed to the raster-scan approach that other games (and TVs) use. With Vector graphics, rather than drawing pictures line-by-line, the lines in the picture are drawn with the beam. The resulting look is very bright and sharp, 'jaggy' free, and emulators totally fail to convey via software what this kind of hardware looks like. Vector displays fell by the wayside, so you can't really go out and buy a new one, but fortunately people keep the old arcade cabinets and the Vectrex consoles running, and I may have to get one from eBay sometime soon.
Vector Pilot on the Vectrex. The colors are from a transparent overlay.
The games I had a chance to play at the Expo were Fortress of Narzoid and Vector Pilot. Vector Pilot was a vector graphics version of Time Pilot, actually written by Vectrex homebrew enthusiasts in the 2000s, and Fortress of Narzoid was an interesting game requiring the use of the walls to hit enemies with ricochet shots. The controls were really nice, and the gameplay was addictive. I think at the time they were poorly marketed and too expensive, so no matter how good they were, a kid would have a hard time selling getting one to his parents when the Atari 2600 was so much cheaper.
This captures the intensity of the display better.
It's dark. Arcades are dark.
As far as the cabinets went, I played some old favorites including Tempest, Asteroids, Satan's Hollow, and Pole Position (both stand up and the sit-inside versions, where I got the high score for a bit). I played a couple games I either missed or didn't play much the first time around, like 'Domino Man(?)' and Mousetrap. I didn't play any pinball at all, in part because there were always lines, and also because I remembered I don't really like pinball. The arcade games were almost always occupied, but people were good about taking turns and sharing and so forth (Louisville/Southern politeness? The Classic Video Game set being good people? Whatever it was, I liked it). It was the same story (mostly) in the antique computer/console room, although I did have to tell a kid to move along when a line started growing behind him at the Virtual Boy.
What would have been a fleeting moment of glory in the 80s, now captured for as long as blogspot exists.
The convention also featured tournaments, panels and speakers. I went to a presentation by a young filmmaker who had also made a 2600 cartridge, but I didn't stay for it all because I wanted to get back to playing. I didn't check out the tournaments, either. There was a somewhat small vendor section, with one guy selling old cartridges and video games, including some homebrew cartridges like 'Grizzly Man', based on the Werner Herzog documentary about a man who cares for, then is eaten by Grizzly Bears. I looked for a 'Bowser' (aka 'Browser') stuffed animal or toy for my daughter, but the toys were mostly Mario/Luigi/Yoshi. My friend Zach found a 'Slimer' stuffed toy for his daughter.
Not endorsed by 'Grizzly People'
Fellow Bloominglabber (B-Labber? Blabber? We haven't worked out the nomenclature) Zach spoke to the organizer (who was running around dressed as Luigi) about the possibility of Bloominglabs having a table next year where people can make or modify old controllers. So watch for that next year.

A guy who has been on my radar somewhat was there, but his chair was empty. Sonny Rae Tempest had his Atari 2600 game poem 'Nothing is 0k' on display. Honestly this one required a bit of deciphering, and my eyes weren't really up to making out the binary codes on the screen. I am a fan of his 'stuck in traffic' Atari poem Calm, Mute, Moving, but as the controller is a simulated cigarette, it probably didn't lend itself well to sharing it with hundreds of people and their germs.

Food-wise, things were not so great. 'Wick's Pizza' is attached to the hotel, so we all thought, hey, great, let's eat there. However, two of the people I came with waited there 20 minutes to be served before bailing out to go to Dairy Queen. Later, I went at around 2pm, thinking I was being clever and wouldn't have to wait because of a lunch rush, but a horde of bikers showed up right before me. They were benevolent Harley-Davidson bikers, who have a median age of my age + 15, but still, it was annoying to have to wait a long time for a passable stromboli. Our other friend tried to go there and arrived just as a fight was breaking out, with two guys in ties (at the opposite end of the dress code spectrum from our benevolent bikers) pushing each other saying threatening things, and he was told by the manager that he couldn't serve him as he had to deal with the situation. He ended up making due with a hot dog, because by that time the Dairy Queen's grill wasn't working.

I had one of the great $7 Rum and Cokes later in the day, and while it was pretty strong, it was still $7, and of course I had to tip the server. I'm not an animal.

The crowd was all-ages, and not everybody was as nerdy as myself. People did tend to gravitate toward the games of their youth, which was not surprising, but I did see some kids playing the ancient games and having fun. It certainly appeared to be a huge success. I will be coming back to this one, and I recommend it to anybody in the area with an interest in pinball or arcade games. It was great fun.
Mario Brothers celebrate a successful Arcade Expo