Friday, May 30, 2014

Quote of the Moment

"Got into computers because I enjoyed talking to machines instead of people. Now computers all about talking to people. This is some bullshit" [sic]
–Jeff Atwood, tweet on May 30, 2014

Monday, May 26, 2014

A Despairing Commentary on Computer Security

Everything is Broken by Quinn Norton tells the tail of why computer security seems quite impossible very well. As much as I love C, its time should have passed long ago. It's why I pull for languages like Go, Rust, and Dart to help manage some of the complexity. But it's not just the languages. If you want to write anything with a graphical interface that uses native widgets, you're stuck in a flavor of C. If you want high speed graphics, the libraries are all for a flavor of C. It's not just the systems we have created that need an overhaul, its the systems of tools we use to create those systems, and the systems that they are built upon. And all of that without mentioning the time or expense factor. So, yes, I agree that we have a long way to go, but I doubt I will be in the industry long enough to witness the sea change. And I'm certainly not in any position to help.

I'll also throw in The Internet is Burning by Jon Evans as a nice follow-up to Everything is Broken.

Sunday, May 25, 2014

Bookworming: Welcome to Mars

Welcome to Mars, Ken Hollings, **
Well, this is an odd duck. It is a book about the influence of science and politics on the popular culture of the late 1940s and the 1950s. Or perhaps it's the other way around. Structured by time rather than a narrative, Hollings weaves threads throughout from the planned suburbs of the Levittowns through B-movie science fiction, from the post-WWII think-tank of the RAND Corporation to the rise of LSD, into a view of history that reads more like conspiracy theory. It shares this format with the radio program of the same name. Unfortunately what works for a flowing structure on the radio makes for an extremely dense and sometimes difficult to follow read. So in spite of taking a unique view of the history of a fascinating time period in America, I find I can't quite recommend this one. That said, I wholeheartedly recommend the aforementioned radio show (available on iTunes and via archive.org), which shares the density of the book but is a much better fit for the structure.

Saturday, May 24, 2014

Meditations Over the Shredder

Today in an effort to do something productive while staying off of a broken toe that just doesn't want to heal quickly, I finally cleaned out my files. Normally, I do this right after I have filed my taxes, shifting the previous year's important records into my archive, and shredding all the cruft and things older than I need to keep around. This year I am rather late in doing it, and had an additional large packet of now-worthless paperwork in the form of the documents surrounding the purchase of my first home some thirteen years ago, plus paperwork from the job changes I have had over the past two and a half years.

In all of that paperwork, a stack that ran about four inches tall this time, there were only a couple of documents that had any value, be it as a record or as a sentiment. Most of it was receipts, bills, and a whole bunch of legalese. I was struck in looking at them how odd it is to see chunks of your life essentially expressed as numbers. Grocery, book, and hardware store receipts, bank statements, insurance forms, a HUD statement. Dozens of bits and pieces describing my interaction with the world around me, pretty much entirely based on the moving of money.

One of the characters in William Gibson's novel Idoru was a person skilled at sifting through the computer network and learning things about people by the trail of data they left behind. It's something I have quoted before, and the rise of Big Data and intense digital tracking of both consumers and citizens in the name of better serving them remains a subject in need of serious exploration. What does the pile of papers say about me?

Well, obviously they give a pretty good picture of my financial life, my entertainment habits, and the causes I care enough about to give money to. They show some of the changes that have occurred in my life over the past couple years: being laid off, job hunting, getting a new job and commuting, and finally moving away from the place I called home for my entire life. You could say that's a pretty complete look at me. I certainly wouldn't want just anyone seeing that stuff, hence the shredding. But I also find it interesting to consider what the stack of papers doesn't say about me.

Those papers don't tell you much about what I do for a living, and not much about whether I'm any good at it. They don't show how I interact with my coworkers or friends (although I suppose there's facebook and linkedin for that). It doesn't have the drawing of a tree I did that was terrible right up to the point where I had done enough work for it to suddenly come together and not be terrible. It doesn't show the funeral of an uncle I attended or the one for another uncle I missed because of work. It doesn't show how terrible I am on a blind date, or how much better I feel when laughing.

Numbers can automate. Numbers can simulate. But numbers can't feel. And as someone who slings numbers professionally, it's something I will try to remember. Who I am is largely determined by how I interact with the world. While much of that interaction can be quantified, seeing a beautiful sunset, or offering a smile, doesn't come with a receipt. If it did, I'd want to have many more boxes of files.

Thursday, May 22, 2014

When Quotation Marks Are Not Quotation Marks

Today at the end of an extra long work day, I caught up with a colleague who, being new to the system we are working on, was stuck trying to get something to work. So I joined in to see what I could see. The particular task we were looking at, while relatively easy, can be a bit tricky due to setup and input sensitivity. First, the "check the wires" test: make sure all the input files are in the right places. Check. Second, make sure the environment is pointed to the right place. Check. Third, hunt for typos. Nothing immediately visible. OK, all the easy things look covered, break down the problem and test individual pieces. Doing that narrowed it down to one line of input. A line that was almost identical to another working one and had nothing visible wrong with it. And this is where my reason shut down an my experience kicked in.

Rather than scratching my head over why the line wasn't working, I copied the line that was and made the few minor alterations that made it look identical to the non-functioning line and removed the non-functioning line. Run the test again, and viola it worked.

*Sigh* And this is the victory and defeat of a programmer summed up. I immediately got a surge of pride, that yes, I have learned things in my thirteen years as a professional bit-slinger. And then came the wry smile, because most of what I have learned falls into the category of expecting the stupidest, most impossible things to be pretty common, actually.

So what was going on with my co-worker's problem? Programs are very sensitive to changes in their data. Computers don't understand intent, they just see numbers. And sometimes the data has numbers in it you can't see. Programmers favor particular kinds of fonts for this very reason. My personal test for a good font goes like this: is it mono-space (every character takes up the same amount of space, so things line up both vertically and horizontally, giving essentially a grid of text) and can you tell the differences between these characters in a quick glance: Il1| and oO0Q. A good font helps with these tiny errors, but there are more lurking. White-space characters like tabs and spaces may look the same in an editor, but cause a program to behave differently. (I'm looking at you make.) Control characters and other "non-printable" characters, such as carriage return, line feed, null, bell, and a host of others may be hiding in the data, completely invisible to normal viewing.

My current favorite is one that the web and related technologies have made more and more common: when is a quotation mark not a quotation mark? See if you can spot this one side-by-side: " vs. ”. Seems like the same thing, doesn't it. Yeah, one is fancier looking than the other, but they are both quotation marks. Just not the same quotation mark. The one on the left is known in HTML as " and  it corresponds to the number 34 in ASCII code. The one on the right in HTML is ” and it isn't in the standard ASCII code at all. So if the program is looking for one, but the other is used instead, whoops, it doesn't work.

Wednesday, May 14, 2014

Some Data Cap Math

A Comcast executive VP stated today that he expects data caps, excuse me, metered billing, to be in place for all of their customers within five years. Since all the major cable companies have been trialing data caps for years, it is a safe bet that they are coming, even if you don't believe that the major broadband providers are acting as a cartel. So what does that mean for the average user? That will depend on the cap size. Let us work out some examples.

As we have learned from all the disputes over Netflix lately, the largest use of bandwidth is likely to be video. A quick look at a popular bittorrent site gives a reasonable estimate of what a streaming TV show might require:
1 hour of standard definition video (480p): ~0.350 GB
1 hour of in high definition video (720p): ~1-2 GB
1 hour of in high definition video (1080p): ~2-3 GB
5 minutes of YouTube video at 360p: ~0.015-0.02 GB
5 minutes of YouTube video at 720p: ~0.5 GB

Let's assume a TV series runs 22 episodes (typical in the U.S.). If you prefer to watch TV in HD (and everyone does), it seems reasonable to guess it would take 250 GB for a single season. Of a single show. Comcast currently has 300 GB caps in areas where they are testing the policy. Time Warner Cable has tested caps as low as 30 GB.

Comcast advertises $40 per month internet on their main web page, but if you click through to the fine print you find their actual rate once past the new customer promotion period runs, assuming the inevitable fees, closer to $70 per month. 300 GB at $70 gives a price of about 23 cents per GB. Once the cap kicks in the charges become $10 for 50 GB or 20 cents per GB. Four HD TV shows, less than one a day for a given week, would put you around 1000 GB, which would cost $210.

What conclusions do I draw from this? I think it's pretty clear these caps are designed to punish people that get TV via the Internet rather than purchasing cable TV. In fact, if the caps go into effect is has the magical effect of making cable TV look like a bargain (or a good antenna worth its weight in Google shares). I don't think there is any question that revenue is the goal with the caps, and if they have the side effect of killing Netflix, Hulu, YouTube, Apple, and other competitors, I doubt Comcast will shed any tears.

The Internet became popular by leveraging the common-carrier-regulated telephone lines and a policy of all-you-can-download for a flat rate. Altering this model will inevitably alter the way it is used. And that spells bad news for any service that requires large amounts of data, be it Steam games for your PC, the aforementioned video streaming services, or any number of other things the companies don't care about because it doesn't affect the 98% of their customers that would not be billed overages. How will it affect freelance software developers who depend on transferring code and other assets across the internet for their livings and don't have a giant corporation to pay the inevitable, and inevitably expensive business rates for true unlimited bandwidth? What about companies offering "cloud" backup services? Streaming music? Will it constrain future forms of social media? It looks like we might find out.

Sunday, May 4, 2014

Watching the Watchers: The American Dream vs. The New Aristocracy

No matter where on the political spectrum you fall, it's hard to deny the undercurrent of apathy or perhaps even disillusionment in some sectors of American society. It stands at odds with the classic version of The American Dream: work hard enough and you can accomplish anything. We are now in a world where statistics, Republican opinion, and Democratic opinion all say The American Dream is a lie. What the heck happened?

Since the subprime mortgage recession, a stunning event in which nothing whatsoever physically changed yet somehow the economy was sent into a tailspin for years, it has become increasingly clear that the fate of most of our jobs are in the hands of others. Or worse, their high-frequency-trading computers. The quest to quantify the economy and in turn shuffle all the numbers so that money can be used to create money managed to destabilized even the intrinsic value of real estate. The economy has always been a confidence game, but suddenly those we trusted as bankers were exposed as grifters. Add in small to no consequences for the people responsible for the disaster, and you can see where some people might be inclined to believe the game is rigged.

That is how I try to explain it. A more eloquent description comes from a writer I've been quoting quite often around here lately, J. Michael Straczynski, in his post The Rules of the New Aristocracy. I found it to be a very illustrative read.