More Easy Fun With Telephony

Recently I decided I needed a little more flexibility with my phone situation.  Years ago I was carrying two cell phones and had three Vonage lines while running my own business.  This got consolidated down to a single iPhone, but that can be a little problematic particularly if you’re calling to/from international numbers.  This week I ported my iPhone number to Google Voice (within 24 hours too), and got a new phone number for my cell that I’m hoping to keep private and function as a throwaway.  However, I needed a bit more flexibility on some of the things I wanted to do, so I threw Tropo into the mix.  Twilio lost out because Tropo provides free inbound and outbound calling.So here’s the path when you call my number:  call comes into Google Voice, which forwards the call to my Tropo application, which then plays a menu and you can either punch out to Sentry’s main number or continue to ring my cell.  Text messages are forwarded by Google Voice, and the net result is that for inbound calls, I’ve effectively decoupled the phone number I’ve had for seven years from any handset or location and added a whole bunch of flexibility.It’s almost eerie how much power Tropo gives you over your telecom setup.  With a few lines of code I can transfer calls, accept inbound international calls with a local number, kick out text messages, provide a menu, have their computer voice speak any text I want, etc.  Call quality is crystal clear through both Google and Tropo, and I have yet to have any reliability problems.  In 2004 we thought it was amazing replacing a 150k Avaya PBX with Asterisk, but this is replacing all of that with about twenty lines of code.  For free.  With no setup or ongoing hardware or maintenance costs.I’d say the only real drawback to the situation is the inability to spoof outbound caller id with native dialing – it would be interesting to see if Apple allows you too hook other providers into it’s native dialer (yeah right) or if this is a feature within Android.  It definitely needs to be implemented at some point – and then we’d have true telecom nirvana.

High Speed Passenger Rail for America: Thanks But No Thanks

Most of you know that I really like trains.  Model railroading is a hobby of mine, and I grew up consistently riding trains in China as alternative transport options either didn’t exist or were really unsafe (read: 80’s era Chinese airlines).  We generally travel by train in Europe when we visit.  However, most people are usually surprised that I don’t support any plans for high speed rail in the US and don’t envy the extensive passenger networks that exist overseas.Passenger service requires the presence of several factors which are almost never available in the United States:

  • Relatively short distances (less than 4 hours).
  • High population density.
  • Good local public transport one you’ve reached your destination.
  • High schedule density (a lot of trains providing lots of schedule options).

Passenger rail is incredibly expensive to operate by itself even with the presence of those four factors.  The last requirement of sufficient schedule density imposes a lot of constraints on the rail network that aren’t readily apparent to observers too.  As an example, The Wife and I often choose to ride the Amtrak from South Florida to Orlando instead of making the drive.  It’s more expensive at roughly 100 bucks for both of us round trip compared with a tank of gas at 40 bucks, but the 27 dollar toll for the turnpike makes things a little closer.  It’s roughly an hour longer too, but it’s nice to be able to read or watch movies on the train instead of driving.  Most importantly, and what prevents us from using it a lot more is the schedule: you can depart at 9:30 AM from South Florida, or 1:30PM from Orlando, and that’s it.  Compare this to Europe where most cities have an hourly service and you can see the difference.  There are several points in this little anecdote: the schedule, the cost, the need for pickup upon arrival in Orlando (thanks Sara’s family!) and the time all conspire to eliminate huge swaths of potential customers.A more insidious issue: once you’re at sufficient schedule density, you basically invalidate your rail network for freight traffic.  Here’s something you may not have known: the United States has the world’s most efficient railway system (See here, and here: the US enjoys the cheapest freight rates in the world).  This is because it’s entirely freight based which allows the railroads to maximize what trains are really good at: moving huge amount of cargo extremely cheaply and efficiently.  Adding in passenger traffic (particularly dense traffic) with its priority trains would essentially destroy the efficiency we have or require incredibly expensive infrastructure investments.  Even with those investments it’s generally not feasible to run freight and intense passenger service on the same trackage.  Most freight in Europe travels by truck in case you didn’t know.Passenger rail, even where it’s “successful” in Europe and Asia is still a chronic money loser requiring subsidy support.  In a wholly unsurprising development, China’s extensive new (and darling of the media) high speed passenger network is essentially insolvent.  This is the ideal which Friedman and other breathless watchers of China and India have been prescribing for the United States for years.  Says Chinese professor Zhao Jian:

“In China, we will have a debt crisis — a high-speed rail debt crisis,” he said. “I think it is more serious than your subprime mortgage crisis. You can always leave a house or use it. The rail system is there. It’s a burden. You must operate the rail system, and when you operate it, the cost is very high.”

I’d rather have the railroad system the US currently has, thank you very much.  A privately funded, operated, and most importantly, wildly efficient transportation system that’s designed to move big bulky stuff.  As gas prices fluctuate and we continue to import a huge percentage of our manufactured goods, we’re sitting pretty.

The Impending Ad War

A few weeks ago I attended Github’s CodeConf in San Francisco.  While there, I got to meet quite a few really accomplished technologists (hackers) and discuss a variety of projects, processes, programming methods and more.  One of the most interesting moments for me came over lunch while talking to the CTO of a very well known blog which clocks in over 5 million unique visitors a month.  Like most sites of its type, it receives almost 100% of its revenue from ads.  According to him, one of the largest (new) challenges they were facing was that advertisers are beginning to buy ads targeting the blog’s fans from Facebook, not the blog itself.  In other words, to get at the blog’s users, advertisers were paying Facebook less money to directly market to the blog’s fans on Facebook.The more I think about it, the more I think this is a major problem for almost every ad supported site out there, and it could be the pitch that Facebook is using to bolster its insane valuations.  Right now, there are probably no less than a dozen Googlers being kept up at night worrying over this very problem, not to mention the admen at hundreds of highly trafficked blogs and other internet properties.  After all, if I can immediately pitch my competing product to your customers without paying you a dime, I’ve got a huge advantage, you’ve got a huge problem, and Facebook has an unbelievably great strategic position.Maybe you’re reading this and thinking “yeah that’s old news” and it probably is to many, but having never worked at an ad supported organization, I’d certainly never thought about it before.  I’ve also never heard it articulated online, and I’m wondering how many organizations even realize this is happening.  Note there is a two-fold risk here: ad supported properties risk losing ad revenue to Facebook, and they risk exposing their customers to competition.  If you’re an advertiser, you’d much rather know that you’re reaching out to all 10,000 fans of Blog X with the stats to show you who clicked, etc., vs. an anonymous 100,000 impressions.  Note that even if a Blog chose not to have a Facebook page to attempt to combat this kind of thing, Facebook can still harvest those users who “like” the Blog in their profile.Before, I used to think that the benefits of a Facebook presence for an organization outweighed the downsides, but now I’m not so sure, particularly for ad-supported businesses.  It’ll be interesting to see how this plays out.

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.