Open the Gate!

The last three places we’ve lived in South Florida were “gated communities” which is supposed to make you feel exclusive and special.  They provide zero additional security (had a car stolen from one of them in the middle of the night) are often broken, and even when they work they’re a pain.  All of our gated communities would link your personal code to a phone number of yours, and when visitors keyed in “112” it would ring your phone.This causes problems:

  • The gate dialer can only link to one phone.  If your wife is traveling and you want some pizza to be delivered, the wife may not be able to pickup the phone and press 6 to let the pizza in.
  • Most can only link to one or two area codes.  One of the systems could only link to a 954 area code number.
  • If you’re riding with someone else and don’t have your remote with you, you can’t get in if your wife isn’t with you, or has the cell phone in a bag in your trunk.

The Wife has been out of town for a few days and this finally irritated me to the point where I headed over to Tropo.com and provisioned a simple phone application.  Now when you dial the phone number of my Tropo app, it answers, says “Opening the Gate!” and plays a number 6 key press which tells the gate to open.  Perfect.I heard about Tropo out at CodeConf in San Francisco and have wanted to play with it but didn’t have a problem to solve until now.  The entire thing took about 10 minutes to setup with the only really painful thing being the hunting down of a key press sound from http://www.freesound.org/ and the subsequent conversion to a GSM format.  I ended up using the excellent Sox command line sound converter to make the conversion, and then we’re in business.  Total cost for the whole thing was zero dollars.The Tropo service is really nice and their documentation is good too.  Their UI for their website is a little clunky in spots.  For example, picking an area code for your number is really painful with about 50 city suggestions and no way to search for an area code or specific city.  They’re not alphabetized as far as I can tell either and the city names are super specific so it just makes it hard.  Also, I couldn’t find a way in their API to generate a key press tone which meant I had to mess with my own sound files.  That should be built right in or they should provision a directory of key press sounds with your default files.All in all a fun little project to get done while on Amtrak bound for Orlando, and now I can open my gate whenever I want.  Tropo has done a great job with their platform and I’d highly recommend it for these types of tools or any kind of telephony or communications application.

CodeConf 2011 Day One

I’m out here in chilly San Francisco for CodeConf, a conference for programmers sponsored and hosted by the folks at GitHub.  This is my first real time spent in San Francisco (previously it’s just been through the airport or a one night stay due to an aircraft engine problem while trying to make it through the airport) and it was with much delight that The Wife and I experienced the Ferry Building and its farmer’s market for breakfast.  Despite problems with the staff finding my registration, I made it in time to hear all the talks for the day, and in general the speakers were very good and subject matter covered was interesting.Dr. Nic WilliamsThe first talk was by crazy Australian Dr. Nic Williams who talked about the importance of learning something, then making it into a tool, and then once you get into this habit making tools that help you build tools faster and more efficiently.  Simple, and even though it was a little forced at times, he made the talk unforgettable with movie clips from Tinkerbell, the theme song from the A-Team, and his choice of clothing which was a pink tutu and fairy wings.  He left the podium with AC/DC blasting to applause.

  • He talked about building textmate snippets to help with database migrations in rails.
  • Bundling those snippets for better/easier distribution with .dmg
  • Building a tool to help with the construction of .dmgs (choctop)

All in all interesting, if a little bizarre.Coda HaleNext up was Coda Hale from Yammer who gave the best talk of the day which was easily worth the price of admission for the entire conference (and I’m saying this only 50% of the way in).  His topic was code instrumentation and he discussed the various techniques and ways we need to measure our software so that we can implement the OODA method: Observe, Orient, Decide and Act.  OODA is a combat operations process that was designed in the Airforce and many of us in the development or operations groups of tech companies can see the similarities between combat and figuring out what’s happening with complex software stacks.With OODA as our goal, we need to employ five different ways of measuring:  Gauges, Counters, Meters, Histograms, and Timers.  Yammer has wrapped these tools into a JVM friendly project located here that they use to publish meaningful metrics to downstream analytic consumers like Nagios and Ganglia.  He spent some time going into some detail on the statistical models they use to break histograms down into meaningful quantiles without torching huge amounts of disk space, and while he recognized most of us in attendance aren’t using the JVM, the challenge was laid down to get these tools into the hands of programmers using other runtimes or languages.The bottom line was: “If a piece of code affects our business, we must instrument it,” and this was underscored with an example he provided of two different ways to call a sort.  One should be faster due to its underlying construction that we may or may not know, but then he showed how the code calling it actually had a sleep(100) within the call loop.  In other words, without instrumenting this on production we have no idea which one is faster, and we’re probably wrong without closing the gaps between our mental model and the executing code and proving the gap.This was an absolutely fantastic talk, and his slides can be found here.Other Speakers / Presenters

  • Jonathan Rentzsch talked about “Design by Contract” programming or “Contract Driven” programming.  The examples seemed to be preprocessed assertions (not unit tests)that are fed and managed by the compiler.  More research needed.
  • There was a great demo provided in about 3 minutes from the folks at Tropo.com (a Twillio competitor) that showed a Tropo app connected to a redistogo.com Redis queue that then talked to a Node.js process and when the demo-er called a phone number it asked him which color he wanted, used voice recognition to process “blue” or “yellow” and then the background of the website changed in near real-time.
  • Creator of Node.js Ryan Dahl spent his time in very animated fashion blasting out some memorable one-liners while discussing the efforts that are underway to port Node.js to Windows.
  • One of the founders of Django talked about the need for clear documentation and said some controversial things about tools like rdoc or jdoc.  His bottom line: make sure you’re answering the who, what, when, where, and why in your documentation and there’s no substitute for human written docs.
  • Former Lifehacker Gina Trapani talked about the importance of community in Open Source projects.  She’s currently managing/contributing to ThinkUp and talked about how many Open Source communities struggle to integrate and accept contributions from non-programmers.

The food that’s been provided has been fantastic showcasing a lot of local ingredients and vendors.  The conference hall is probably a bit too small and a little cramped, and there is no power provided at your seat.  The 75% of us who brought laptops whittled down to about 2% by the end of the day as we ran out of power.  The night events all involve open bars at what seem to be nice venues.  All in all, an enjoyable first day at CodeConf.

Does China’s Autocratic Government Provide an Economic Advantage?

It’s a question you often see timidly asked, in an almost guilty fashion.  Don’t you think, just maybe, setting aside all of its problems and just focusing on the economic question, that China’s government gives it an advantage over our messy democratic republic? Liberals in the United States are often criticized for their breathless infatuation with technology, intelligence, education, and a belief that top-down government inspired projects and policies are the main way to affect lasting and dramatic changes within society.  They point to examples including the Transcontinental Railroad, New Deal’s Tennessee Valley Authority, the Apollo Project,  and the impact that DARPA and other government funding had on the internet.

No one today cheerleads the economic advantages of China’s autocratic government more than Thomas Freidman, author of The World is Flat, and Hot, Flat and Crowded. Reading these books is to experience a breathless optimism that surrounds India, China, and other developing countries as he examines their education systems, massive economic investments in infrastructure, and the desire of their citizens to compete in a global economy.  No country receives quite as much praise as China, however, and the message both implicit and explicit throughout his columns and books is that this is all a product of a single-minded focus from a strong central government that’s dedicated to improving the lives of its citizens.

Are We Losing Our Edge to China?

China watchers (both admiring and fearing) can usually list off the following in quick abandon: China has the world’s second largest and second busiest airport, the fastest train, the fastest computer, the largest dam, and is using most of the world’s concrete (PDF).  There are other impressive economic stats as China is now the world’s largest exporter, makes the most cars, and has the world’s second largest economy.  The Chinese people and Chinese government relish statistics, particularly those that point out how they’re the best, and they have a flair for announcing large projects like the construction and logistical integration of several cities into the world’s largest mega-city that leave foreign observers stunned at the sheer scope of such projects.  If you read the previously linked Telegraph article, you can clearly see in your mind’s eye a vision of editors going back to each number and checking that they have the right number of zeros, all while softly cursing to themselves at the absurd size and scale involved.

Lets Look at Real Statistics

But for all of the admiration, large projects, and grandiose announcements, Friedman and others tend to forget a simple fact: China and India are still by any standard exceedingly poor.  Equating scale of projects without taking into account relative size is just, well, stupid.  Of course China and India should have the largest of everything – they have the largest populations.  The public works that everyone salivates over are all driven by the monumental sized populations that each country is responsible for.  People forget that China is still the 95th poorest country in the world when ranking by per-capita GDP.  Lest we become guilty of not adjusting for relative purchasing power (in other words, everything’s cheaper in China so you can earn less but still feel richer), when we look at their per capita GDP adjusted by Purchasing Power Parity, China climbs two spots to number 93.  These are imperfect estimates, but are directionally correct, and are prepared every year by the International Monetary Fund.  The United States, by contrast, is in the top ten for both measurements, with none of the countries besting the United States having a population of over fifteen million.

Can We Really Know the Effects of Communism on China?

Note that these bad (both absolutely and relatively speaking) individual economic indicators are despite nearly thirty years of constant economic growth, many of these years being close to ten percent or greater.  Not exactly the picture that tends to be painted, is it?  The point is this – there are two words that accurately describe China’s current economic progress: catch up. Decades of autocratic rule, political unrest, warfare (China was continuously at war from 1927 through 1950) have actually intensely harmed the country and its economic prospects.  In fact, these are often pointed to by outsiders (and even some Chinese) as reasons to why China is currently lou hou or backward.  

However, there is a decent control scenario that we can use to contrast with the current Chinese economy: Taiwan.  Both countries were founded the same year, 1949.  Both had participated in the ravages of civil war.  It can be argued that Taiwan may have left the mainland with some economic advantages: the best and the brightest, and possibly more administrative experience, but that case seems hard to make due to how poorly they had previously run the mainland.  They also left with China’s gold reserves, but the mainland received economic aid from the Soviet Union the first decade of its existence, and if the economic development stats were at all close it might be relevant.  In any event, Taiwan, having always pursued a free market with limited government interventions is today is one of the world’s strongest economies and near the top of the lists we just ran for the United States and China.  In other words, historically, China’s autocratic government has been nothing but a hindrance.

Today we are told, that all has changed.  China’s embrace of new economic policies (and priorities) is the new paradigm: that of the state guiding the economy along long term goals, inspiring its citizens with great public works while simultaneously providing a stimulus to the economy as a kind of dual pronged weapon of economic good.  This is contrasted against the herky-jerky, short sighted, messy and error prone proclivities of democratically elected governments that are so obviously wrong. However, when you really stop to consider this, it’s extremely puzzling.  We’re essentially saying that the element that prevented China’s economic growth for thirty years (a planned economy) is now it’s key advantage when competing globally.  

Keep in mind that when people decry the fact that the free market hasn’t arrived with something, they’re generally pushing an agenda that is economically incompatible with reality.  Friedman and friends are pushing carbon reduction due to a belief in global warming.  Others push social agendas for things like public housing.  Still more push redistribution of wealth for the betterment of the working and lower classes.  While we can debate the merits of these agendas, the reality is that if they were economically viable, someone would have found a way to monetize them. Here’s the general conclusion (to be followed I’m sure by a few more posts on this topic): it’s easy to make double digit gains when you’re in last place.   It’s also easy to cherry pick smart development deals when your whole country is undeveloped or underdeveloped.  In a hyper complex, massive economy like the United States that also happens to be very diverse, this type of top-down management is practically impossible.  China makes their share of stupid investments too, we just tend to not hear about them.

Jeopardy and Watson

We had a great time last night watching Watson take on two humans in a round of Jeopardy.  Or at least, I had a great time.  The wife and her sister weren’t quite as into it as I was, but they watched it just the same.Here’s a recap:

  • The show did a great job explaining what was happening (they burned half the episode on explanations).
  • It’s interesting how most people don’t understand what the true challenge of this event is (even techies) – Watson has huge volumes of information (he knows a lot of stuff), but the real challenge is understanding the meaning behind a question.  In other words, it’s an understanding/comprehension challenge, not a fact challenge.
  • IBM came up with a really neat tool that showed the audience how Watson was playing the game.  They would show the top three answers he came up with and a confidence interval.  Watson would buzz in with the highest rated answer that crossed the confidence interval.  If none of the answers made it across the threshold, he wouldn’t buzz in.
  • Alex Trebek gave a tour of the datacenter which had ten-ish racks of IBM servers.  The size of the install was very surprising to our non-technical viewers.
  • Watson glows green when he’s confident in his answers, and when he gets one wrong, he glows orange.  This feature was a big hit at our house.
  • Two perfect examples came to light exposing the difficulty of this challenge.  One question made references to the Harry Potter world and a dark lord who challenged him.  It was clearly a Harry Potter question due to the contextual clues, but the answer was “Lord Voldemort”.  Watson answered “Harry Potter”, but his second choice answer was “Lord Voldemort”.  A human who understood the meaning of the question would never have answered in that way.  The second occasion involved Jennings answering “the twenties” to a question, which was wrong.  Watson buzzed in right after him and answered, “the twenties,” which no human would ever do.

One question I had was if the text transfer of the questions happens in step with Alex Trebek’s reading of them.  Does it happen character by character or does Watson get a few precious seconds while humans are reading the screens?  Conspiracy theorists would probably ask how Watson’s first choice was an 800 dollar question (unusual) and he hit the daily double immediately, but it could be part of the IBM team’s strategy.All in all, that was probably the most fun I’ve had watching a TV game show.  Looking forward to the next two episodes.

Jeopardy, Artificial Intelligence, and a Chess Playing Robot

Tomorrow Jeopardy will feature a computer facing off against former champions Ken Jennings and Brad Rutter.  I have been looking forward to this for a couple of months since I first heard about it, and it is an amazing feat of computer science that a computer can go head to head with humans on a game show as complex as Jeopardy.  IBM is the true leader in feats (stunts?) such as these having staged previous competitions against former chess master Garry Kasparov.  The show has already been filmed (in a special sound stage at IBM’s location) but I do have an inkling of what the engineering team probably went through prior to the event.

Artificial Intelligence

My freshman year in college, I managed to convince my professors that I could and should skip the computer science prerequisite for everything, COS120.  This put me into a data structures course in the first semester of my freshman year, and several linked lists and b-trees later, I was able to take any class I wanted in the spring.  I made  bee-line for a class called “Intro to Artificial Intelligence” as I was more than intrigued by the possibility that I could build Skynet and cause the human race its final doom.  Sweetening the pot was a rumor circulating the labs that the class would make use of the very recently released Lego Mindstorms.  Fulfilling the dreams of nerds and lego aficionados (with there being an admittedly strong correlation between the two groups) the Mindstorms were fantastically expensive to a college kid (several hundred bucks) and required programming knowledge to really make them hum along.  This AI class in other words was my ticket to Lego Nirvana, not the other way around.

Legos and LISP

I managed to sign up for the class and was one of (I think) two freshman.  Having spent high school and the fall semester doing work in C and C++ along with learning Perl and a new fangled language called PHP, it was quite a surprise to show up for class and begin learning LISP.  For those of you who are non-techies, LISP is a complete paradigm shift from how most programming languages allow you to express yourself.  The analogy might be like going from sketching in black and white to being handed multiple colors of modeling clay and being told to sculpt in three dimensions.  LISP is the oldest programming language still used in a mainstream capacity today.  LISP treats data and the program the same, so you can build a self modifying program which is one of the reasons Artificial Intelligence researchers and applications use it so much.  LISP has a weird looking “list based” syntax (LISP stands for LISt Processor) and allows you to solve weird problems in fairly elegant ways.  In fact, some like it so much and feel it is so powerful that LISP is the reason that Paul Graham (a well respected computer scientist and technology entrepreneur) credits for his business success. He felt he was able to elegantly and more efficiently out-build his competition simply because of their language choice.  I don’t really agree with Graham, but the point is that LISP is a very cool and very different language that was a pleasure to learn.  This class remains the only one in college where I did every single homework assignment.  The problems were just too fun and the ways of solving them were extremely different. Along with LISP of course came the Legos.  Almost immediately, we began building simple Lego robots that would following a line on the floor, be able to navigate a room, follow a light source in a dark room or navigate a maze.  It was unbelievably cool and a testament to Lego’s design prowess that their system allowed for such flexibility.  Each kit provided a command unit and several motors and sensors.  There was a touch sensor, light sensor, and a few others, and the command unit would download the programs via a cable hooked into a computer.  There was a Lego provided GUI-based way you could program the processor, but hackers had already provided several other languages, and we used Not Quite C (NQC) which was very similar to the C programming language with a few restrictions.

A Chess Playing Robot

All in all, we were having a blast, and just like kids get bored with a slide and start daring each other to go down backwards, or standing up, we began competing to build a bigger better robot.  Our professor was also the chair of the department, and he sensed he had something brewing, so he got the class together and challenged us to come up with a project that could bring fame and glory to our small liberal arts university.  A robot that could get us soda from the machine!  A robot to gather up homework assignments and drive them back to the professor!  Not as popular as the food or waiter suggestions.  Finally from the back of the class came the ultimate idea: a chess playing robot!  A senior in our class had been working on an independent study in addition to taking this class, and had produced a fairly workable Chess simulator, written in LISP.  The class began buzzing with excitement.  We could build the robot, then challenge students to beat it! I started to get a bad feeling about the project – building a Lego chess playing robot would be quite the undertaking.  My good friend Aaron Williamson upped the ante – “I could get the university TV station to film a match!”  Uh oh.  A third student offered to get one of the most popular professors in the school to face off against the robot, and just like that we had ourselves our very own TV spectacle: Man vs. Machine.  Nerds vs. Normals.  Technology (us) vs. Philosophy (the professor).

The work was divided up and we immediately had to start pulling late nights as we only had a few weeks to get everything together.  There would be a vision processing team (the robot had to know where the chess pieces were), a robotics team which would build the gantry crane and arm mechanisms, and the chess software team.  The Public Relations we soon learned, would take care of itself.  I was on the vision team, and our job, we felt, was quite possibly the hardest.  This was 2000, and web cameras were novel, low resolution, expensive, and rather rare.  At least, they were expensive for college students, so we used the only one we had available: a web camera attached to a Silicon Graphics O2 workstation that provided a 640×480 resolution color picture.  It provided enough resolution so we could film the board, and our algorithm would take one picture, save it, then take another after the human moved, and compare them to determine which two pieces had moved.  This seems pretty trivial, but it was complicated by a fisheye effect from the lens, and the fact that the robot arm (or human) wouldn’t actually place the pieces very accurately. Lighting and other conditions could also change depending on where the human was standing or for a host of seemingly random factors. As we started to work, even simple things seemed to derail us.  Silicon Graphics apparently used a proprietary RGB format which was reverse of standard RGB, so we had to write a converter.  Irix, the SGI OS, turned out to be a pain to develop for, at least compared to Linux, so we performed the processing on another computer.  This meant we also had to set up the workflow between the IRIX machine which captured the image, and the Linux machine which processed the image, and then interface with the robot and the chess playing program, which ran on another machine. The date for the campus wide demonstration was looming, and we were determined to not be humiliated.  The student newspaper ran a feature, and our opponent was quoted that “no hunk of metal would best him” to the delight of the student body.  

Media_httpwwwpeebsorg_gamba

Finally, the day was upon us, and we began preparing the lecture hall which would be ground zero.  We had lots of equipment to move from our basement computer lab to the lecture hall, and as we began calibrating everything alongside the film crew which was also setting up, we noticed that the vision system wasn’t working.  At all.  It couldn’t find the edges of the board, couldn’t determine the grid, and it couldn’t see which pieces had moved.  We were in trouble – the fluorescent lighting conditions of the basement worked but the incandescent lighting and TV lighting in the lecture hall didn’t and we needed to recalibrate everything.  Working like mad we began tracking down all intensity assumptions in our program and moving pieces around until finally we got it working. The format of the competition was designed so that while the computer was thinking we’d explain to the audience what was happening, and our opponent would also discuss the philosophical ramifications of sentient machines.  This was designed for another, secret reason – if something went wrong, we wanted to be able to troubleshoot without drawing too much attention.  We had a backdoor programmed into the chess program which could reset it if there was trouble, or in the event of a catastrophic failure, we could take over and manually play out the match.  The ethical dilemma of should we tell the audience what happened if that were to come to pass was hotly debated.

The clock struck 7:15, in came the audience, and on came the red blinking lights of the video cameras.  The lecture hall was packed out, and the professor did a great job making jokes as we introduced the event and briefly explained the rules.  Our class professor could have died of happiness at that moment.  As we began the competition, the professor picked white and made the first move.  “Take THAT you cold calculating MACHINE!” he proclaimed to resounding applause from the audience.  That pissed me off.  I had been championing a feature where the robot would insult and taunt its opponent with every move, but was shouted down for not being classy enough.  We had to endure a night of insults that could have been combatted and we all admitted in hindsight that we should fought fire with fire. At first, everything looked like it was going well.  The robot was working, it could see what was happening, and the chess program was making good decisions.  We started to relax a little, and the audience was clearly intrigued as the gantry crane would slowly move to the right spot, lower its arm, then grab the piece and move it.

Then disaster struck.  Just a few moves in, our opponent performed an En Passant which while being a rather esoteric move, also has the rather interesting distinction as Wikipedia puts it, as “the only occasion in chess in which a piece captures but does not move to the square of the captured piece.” Uh oh.  Our vision system was designed to look for what changed and was looking for either a move or a capture, not a weird combination of both.  Our program chose the two best coordinates to send which caused the chess program to have the wrong board information, and we watched in horror as the gantry crane moved into the wrong position, knocking over several pieces as it vainly swiped in air to make its move. “Uh oh, Houston, LOOKS LIKE WE HAVE A PROBLEM!” yelled our opponent as the crowd roared its approval, and he immediately launched into a discussion about how pure logic will never overcome the malleability of the human mind. It was chaos as we raced to reset the board, recalibrate the vision system, and instruct the chess program of the true state of the game.  I believe we had to simply reset the game state completely, in essence telling the computer that the game had started with the board situated the way it was since it didn’t understand an En Passant.  Things were looking up as the computer managed to make a move and actually captured a pawn to the crowd’s approval.  

For the next fifteen or so moves we each took turns giving a short talk about how the robot was built, the technologies we used, and the challenges we overcame. As the evening wore on, the game developed nicely.  I’m not a chess player but I could tell that the computer was holding its own and it could already beat everyone in the class, so we were optimistic about our chances.  Still, it was roughly an hour into the game and even though I wasn’t following every move closely it was a surprise when all of a sudden the professor announced “Checkmate!”  I looked over at the board and it was indeed checkmate!  However, the computer didn’t agree.  Turns out that either during the initial setup of the board or during the insane scramble to fix our En Passant adventure, someone had incorrectly placed the King and Queen on the computer’s side.  The computer had been defending its queen instead of its king, and thus had fallen prematurely. A disappointing end to what would end up being one of the most memorable projects of my college career.  Still, we couldn’t help but feel proud of being able to build something unique and stage a public spectacle of sorts that everyone seemed to enjoy.  Tomorrow as I tune into watch Watson and the team from IBM, I have a small sense of how they’ll be feeling, and win or lose (there are already rumors leaking out as to the results) it is an incredible achievement.  Congratulations and good luck!

Postscript:

10gen’s Mongo Atlanta Conference

Just spent a very informative and interesting day at 10gens’ Mongo Atlanta conference (#MongoATL Hashtag).  For a one-day conference, the event seemed to be very well planned and executed, and I feel like the event (and it’s sister events) is a great one to attend if you’re using or planning on using MongoDB.Held in the extremely nice Georgia Tech Research Institute Conference Center, the event consisted of several speakers talking about how they’re using MongoDB, or how to tune and administrate the database.  These were fairly technical talks as most had code up during the presentations or were running commands from an interactive shell.  The audience participated eagerly during most talks and the questions at the end of the talks were all pretty good.Closing out with a couple of random thoughts:

  • It took awhile for the wifi to work, but they got it straightened out after about an hour.
  • There was never enough coffee on hand.
  • The swag was really nice: T-shirt, mug, and stickers.  All of it was branded Mongo and not 10gen, which I felt was a classy touch.
  • Most presenters tweeted URLs to their talks within minutes after they gave their presentations.
  • It was cool to see 10gen’s CEO up there giving a lecture on how to administrate Mongo and how sharding works.
  • Every single presenter used Keynote.  This might have been the single most surprising thing to me.
  • It was really refreshing to be at a very technical conference.  Unlike most of the healthcare conferences I go to, this one spent quite a bit of time showing code examples, answering very technical questions, etc.

All in all a great experience.

Guster at the House of Blues

I love hard rock music.  The angrier the better.  Bands like Godsmack, Chevelle, Systematic, Alice in Chains, Rise Against, etc.  The Wife does not enjoy her music with an extra helping of anger.  She likes her music (like her movies) happy.  She has been a long-term fan of a band called Guster, and even though I very rarely ever listen to music that’s not rock music, you can’t help but like Guster.  They’re happy.  They’re catchy.  They also happen to be one of the best live acts I’ve seen which would probably surprise a lot of people who know me.

South Florida rarely gets decent bands visiting.  I believe the reasons are mostly geographical as bands swing down the Eastern seaboard, play a show at Orlando, then have a choice to head towards Gainesville or Tallahassee, or travel down to Miami/Fort Lauderdale.  After their South Florida show, it’s five hours to Gainesville, seven to Tallahassee, or more to other destinations.  This means they’ll have to take the next night off for travel which is usually not a good deal for most bands.

We also lack a good mid-size venue in South Florida for rock shows, with the only reasonable option being Revolution in Fort Lauderdale, but they haven’t done a very good job each time I’ve seen a show there. House of Blues in Orlando does a fantastic job, however.  Both that location and their Chicago venue have phenomenal sound quality which leads me to think this is a chain-wide priority and if so, it’s a smart way to ensure that both fans AND bands enjoy coming.  The production quality at both locations is superb and I’ve seen this happen several times watching the same band on back-to-back nights with one of them being at a House of Blues.

Anyway, seeing Guster perform at the House of Blues was an incredible treat.  Each member switches instruments almost every song, rotating through lead guitar, keyboards, bass guitar, mandolin, and rhythm guitar.  A trumpet makes a guest appearance, along with a harmonica.  Their singer and the backing vocals are never off pitch.  They don’t talk very much at all and when they do pause between their songs to say something, it’s always extremely funny.  Did I mention their drummer plays a lot of their songs with just his hands?  They typically make up a song just for the town they’re in that’s clearly ad-libbed and hilarious, and they usually finish with an acoustic only encore that’s performed with no amplification at all – fans sush everyone until you can hear a pin drop and then the band sings and plays with no mics, no amps, nothing.

Their songs are incredibly catchy, their live performance is unbelievably spot-on, and they’ve played for over two hours each time I’ve seen them.  It’s not my style of music but Guster is certainly on my Top 5 Performing Bands list.  If you can catch them at a House of Blues, even better.

Sluggish Mac OS X Performance Resolved

I’ve been having problems with horrible performance on my Mac desktop.  Constant grinding of the hard driver, non-stop lagging apps.  Turns out MDS (the spotlight process) seemed to be constantly running.  Google brought some suggestions such as completely rebuilding the spotlight index, but this ultimately didn’t work.  Even turning spotlight off seemed to miss the mark.Finally, I made two changes which solved the problem completely:

  • I added /Library/Backblaze to the Spotlight exclusions list.
  • I forced a Time Machine backup, then added that volume to the exclusions list.

That’s it!  A simple fix restored the performance of my machine.  I’m unsure as to why it started happening all of a sudden, but I’ll take it.UpUpdate 2/5/2011: A clue to what might be going on as evidenced by the following command:

  • sudo fs_usage -w -f filesys mdworker

This command shows exactly what Spotlight is doing, and essentially it appears that whenever a file is accessed on the filesystem, Spotlight gives it a look for indexing.  This means when you’re backing up (either via Backblaze or Time Machine) lots of files are getting “touched” and thus need to be examined by Spotlight.  This impacts an already I/O intensive process, bringing the system to a crawl.  Since this post, I’ve had zero performance problems and I’m going to consider this one solved.  Also, on my MacBook Air, Backblaze had already added itself to the exclusions list, so it’s possible that this has been addressed when you do a fresh install of Backblaze nowadays.

Google is Getting Copied! So What?

There’s been an uproar (at least in tech circles) over the past week about allegations from Google that Microsoft’s Bing search engine was copying results from Google’s offering.  There goes Microsoft again, being evil!  There goes Google again, being good!  At least, that’s the popular sentiment.  However, the whole thing struck me as bizarre.  Technology companies have for years copied each other’s offerings, putting minimal twists or variations in their own products:

  • Microsoft Windows copies Apple’s MacOS.
  • Lotus copies Visicalc (the first spreadsheet).
  • Google copies every search engine in existence when they start.
  • Google’s Android OS copies Apple’s iOS.

Now, most people would respond that this isn’t the sort of detailed copying that Google’s objecting to.  Macro-copying of a product or service is OK – that’s just old fashioned competition.But what about copying a particular feature?  That seems to be OK by Google as well:

These were both good ideas, and were major differentiators from a user’s perspective for Bing.  Bing’s attractive backgrounds before starting a search were a classy very non-Google approach to take that immediately set it apart from it’s main competition.  Google felt like copying it was not an issue at all.Macro copying of an entire service or product line is OK with Google.  Copying specific features is OK with Google.  Maybe Google has an issue with the specificity of Microsoft’s copying.  They don’t like the very precise manner with which Bing lifts its results.  Still, Google has done this before as well when they copied Yahoo’s marketing in an almost pixel perfect ripoff.Now, my example provided above is admittedly much smaller in scope and much easier to have happen accidentally by some ill-advised graphic design intern, but I think it’s ridiculous to post about Bing copying Google when it’s a fact that all search engines routinely spend significant time analyzing their competitors.  Google has plenty of research and monitoring directed towards Bing, Yahoo, and others, otherwise how would they have known Bing was swiping their results?  In other words, we’re back to the copying that Google is comfortable with – a little higher on the food chain, a little more abstracted.What Bing and Microsoft are doing is certainly dirty, and annoying.  But it’s also stupid, lazy, and incredibly shortsighted – they might be improving their results temporarily but now they’re struggling in a PR battle they’re sure to lose.  They’re also not working on improving their own rankings or understanding why Google’s results are what they are.  Still, I can’t help but feel Google’s righteous indignation is a little over-the-top on the eve of it releasing several major copied products: its Facebook killer, Honeycomb (the tablet version of Android), a Groupon killer (Update: A reader provided this link showing an almost perfect ripoff from their beta site), and many more.Iteration is part of competition, and the way to beat a competitor (especially one who copies a little too closely) is to keep iterating.  Google exposed Bing, but I can’t help but wonder if they should have just ignored the whole thing, chuckled to themselves, and kept working.  I wonder how many millions went over to Bing and tried it after this announcement.

Some Quick Thoughts on the Kindle

I got an iPad for Christmas.  For me, it was a relatively simple decision.  I fly/travel a lot and was burning a lot of space carting books around, especially newer hard cover books.  I also already use an iPhone 4G and have been extremely happy with the platform and device, so I was excited to see a lot of my favorite applications make their way to the iPad.  Essentially, I was looking for an eReader that had good battery life (at least 8 hours) which would provide flexibility to do other things.  This ruled out the Kindle eInk device and the Nook but I felt like the Kindle bookstore was more mature, had better selection, and was more portable (available on more devices).  All of my iPad reading is done with the Kindle application.The Kindle application ecosystem has gotten a lot of things right.

  • The highlighting is a killer feature.  Read a book, non-destructively highlight it, view your highlights on kindle.amazon.com.  This makes note taking SO much faster, easier, and portable.
  • The device syncing is fantastic.  I generally will read on the iPad most places but read on my phone if I’m biking at the gym.  The iPhone app syncs up where I left off and I don’t have to think about it.  Yes, this is a little feature and an obvious one, but it makes a big difference.
  • The book selection is very good.  Only when I’m trying to find more esoteric books is it a problem, and then I dutifully click “Tell the Publisher”.  Amazon should give you an email when it becomes available, but they don’t seem to do that right now.
  • The desktop applications are nice and consistent with the mobile applications.
  • The one-click buying is ridiculously convenient, and the books downloads almost instant.
  • Page turns are instant, and pleasant.
  • The built-in (and offline) dictionary is used a lot more than I thought it would be.

The Kindle software needs to improve on a few things:

  • I can’t find a good way to export all of my annotations in plain text.  I’m wondering if this is some sort of DRM policy to prevent people from highlighting the entire book (which I haven’t tried) then exporting it.  Anyway, I have to copy and paste my highlights directly from the web page right now which is not the end of the world, but is annoying.
  • It’s super annoying that the iOS Amazon application doesn’t include the Kindle eBook store.  You have to use your web browser to hit the store and purchase a book.  It literally does not exist within the mainline iOS Amazon app.  Search for a book there and it won’t show you if it’s available on the Kindle.
  • Their DRM policy is really stupid.  This is something everyone says to me when I mention I use a Kindle.  Almost all DRM complaints would go away if Amazon let you do an time unlimited lend of a book to another account which prevented you from reading that title while it’s lent out.  Currently they let you do one lend (total, ever, never to be lent to someone else after that one-time lend) for up to 14 days.  Stupid, stupid, stupid.  My response to those complaining about these restrictions is that it’s relatively simple to strip the DRM, and just like that, Amazon is only hurting it’s paying customers and providing an incentive not to buy and to pirate.
  • The Kindle app should start supporting every file format out there that’s available.  I know they’re starting to do this, but seriously, what’s the holdup?

Things I’m unsure about / haven’t tried yet.

  • It’s unclear to me how PDFs work.  I’ve got a bunch that I’d like to have for reference, etc., and locally manage (or access via Dropbox), and you can’t just drag a PDF into the app and have it show up on your device.  Very annoying.  I get that there’s some sort of post-processing that needs to happen for eInk devices, but it seems like this could all be easier.  Maybe you could post-process yourself on your desktop app and save everyone the trouble.
  • Haven’t done much note taking.  I’ve found note taking to be almost unnecessary when you can just highlight content and move on.

Parting ThoughtIf I was involved in an eInk company today, I’d be doing everything I could to bridge the “tactile gap” that still exists for most people.  The Wife has emphatically stated that reading for her is half tactile.  She likes the page turning.  The physical pages.  The weight of the book.  The smell.  She’s like an alcoholic who loves everything about the experience: the glass, the ice, the sound of the pour, the smell.  It’s easy to dismiss this as a triviality but it’s going to be a long-term battle for the next twenty years at least.  The company that can make an eInk page that feels like paper inside a book with pages to turn might have a shot at interesting these people.  Nice leather cover, plenty of pages (a thousand?) to accomodate 95% of books out there.  Pages to turn, etc.  It’d be like the book lover’s smokeless cigarette.Maybe I’m just out to lunch, but I’d love to see a double-blind study with a well-worn eInk “book” compared to a normal book and see if people could tell the difference or would care.