Greg Arakelian

Software Developer, Entrepreneur, Dad, Husband, Volunteer

GateKeeper and Privacy

Benjamin Franklin is often quoted as saying:

Those who would give up essential liberty to purchase a little temporary safety, deserve neither liberty nor safety.

I thought about this principle while reading an article in CNET entitled “Security experts: Apple did Mac OS X Gatekeeper right”.

From CNET:

Apple unveiled details today about Mac OS X v.10.8, the latest version of its Macintosh operating system which is due out this summer. One of the new features, aptly dubbed Gatekeeper, is designed to protect users… [with] a signature system that checks with Apple to make sure the app was created by someone with a valid Apple developer ID.

Further down it says:

“Gatekeeper is a very big deal. Combined with the other recent security enhancements in OS X, it virtually eliminates the possibility that Macs will ever see the sort of malware epidemic that Windows users have dealt with,” Mogull told CNET.

What the article doesn’t say and what I haven’t read about anywhere, is the privacy implications of this feature to you and I.

For Gatekeeper — or any code-signing system to work — there must be means to repudiate a piece of signed code after the fact. That’s what ultimately stops you and I from running a piece of dangerous code signed by a previously valid Apple developer.

As far as I can tell, there are two basic ways that this can work: (a) your machine will periodically download a list of all developer certificates in the world that have been recently deleted by Apple, or (b) your machine will transmit to Apple a unique identifier associated with the application or developer you’re about to launch, so that Apple can verify that it’s still allowed to run code. 

If they use option A, I don’t see a problem with this.  But what happens as the list of repudiated certificates grows?  

Would we have situation where every time your Mac is about to start an application it transmits to a server the identifier of the application to see if it’s “safe” for you to do so? That sounds like a great way to build a database of all the apps that people are using and when they are launching them.

Yes, they would

John Gruber, Apple apologist:

Would Amazon carry a book that linked each book in the bibliography to the iBookstore?

I think they would, but who knows, maybe they wouldn’t.  But we know for sure that Apple won’t, until perhaps enough people complain about it.  In strictest terms, isn’t the fact that an author decides to include a link to a non-Apple store a form of free speech? 

2 months ago

The "Everyone is doing it" defense

I read with bemusement a blog post by MG Siegler this morning, defending a startup company called Path which uploads your entire iPhone address book to its servers.

Siegler goes after Nick Bilton, a New York Times columnist who drew negative attention to the company (Path) in which he is an investor:

The startup, which is a CrunchFund portfolio company, had already “shown the belly”,… but damnit, Nick had a column to write! He could have, say, looked a little deeper into the matter and found the dozens of other apps — many of which are much larger than Path — doing the same thing.

This is the classic “everyone is doing it” defense, to which I ask, if something is wrong, and you know it is wrong, since when is everyone is “doing the same thing” ever a relevant defense for your actions?

Siegler also jumped on the Times columnist’s mistake regarding Path’s encryption of the data in transit. 

Yes, Path was sending the letters without envelopes (hashing), but they were sending them via an armored car (SSL). Not completely secure, but pretty damn secure. 

To Siegler, SSL is important because:

It’s something which shockingly few startups have used to transmit data in the app era, and the fact that Path did it right off the bat should show their legitimate good intentions for securing the data. 

What Siegler doesn’t say, is that there is an entirely plausible (and cynical) explanation as to why Path would surreptitiously send a user’s address book to their servers using SSL — they didn’t want this feature to be noticed by Apple’s App Store review team.

Perhaps I’m giving Apple too much credit, but I could see them creating a dummy address book on the devices that they test with (perhaps with honeypot email addresses or other information), and using a network sniffer to monitor outgoing traffic as the application is used, looking for a possible leaks of personal information.

I have no reason to believe that Path would act that way, but I disagree with Siegler that it demonstrates “good faith”. Good faith would have been to asking users whether it was OK to transfer their private address book contents to Path’s servers.

3 months ago

It's called self defense

John Gruber wrote:

Apple can be a dick about patents. Microsoft can be a dick about patents. But of the three, only Google is a hypocrite about patents — against their use as a competitive weapon only until they have their own to use.

What do you expect?

This is what Steve Jobs reportedly said about Google:

I will spend my last breath if I have to and I will spend every dime of the 40 billion dollars Apple has in its bank to make this wrong right… 

I will destroy Android because it is a stolen product. I am ready to turn it into a ‘thermonuclear war’ if I have to…

Even if you give me 5 billion dollars I don’t want it. I have enough money. I just want you to stop putting our inventions into Android. That’s all.

We could endlessly (and fruitlessly) debate whether or not Google actually stole Android from Apple. That’s a red herring. What matters is that Apple’s iconic CEO believed it. Walter Isaacson wasn’t the first person to hear these thoughts. They were delivered personally, I’m sure.

Google has to take these threats seriously. Apple is clearly the aggressor here, stockpiling patents, and firing the first shots. You don’t take a knife to a gunfight.

3 months ago

Lies, Damn Lies, Statistics, and Facebook valuations.

In “The Snowball: Warren Buffett and the Business of Life”, Buffett poised this question: If you were stranded on a desert island for 10 years, in what stock would you invest? The trick was to find the company least subject to the corroding forces of competition and time.

Time may prove me wrong, but I would not put my money on Facebook. I can’t help but feel that a privacy-related issue may eventually do them in.

3 months ago

Getting closer to cutting the cord

Amazon.com, Inc. (NASDAQ: AMZN) today announced a licensing agreement with Viacom that will allow Amazon Prime members to instantly stream TV shows from MTVComedy CentralNickelodeonTV Land, Spike, VH1BET, CMT and Logo. This deal will bring the total number of Prime Instant Videos to more than 15,000. 

The only thing stopping me at this point is that I might not get to see all the Washington Capitals and Washington Redskins games in HD.

3 months ago

Apple’s Culture of Control

I like Apple products. I’m typing this on a MacBook Pro. My wife and I both have iPhones. Our music collection is entirely managed by iTunes. We own a Mac Mini, an iMac, and a Cinema Display. We have a MobileMe subscription for our family. I’m on the waiting list for the iPad. I think you get the idea.

I mostly use Apple stuff at home. I used to “be a PC” but I grew weary of the administrative headaches, patching against zero-day exploits, grew tired of cobbling together products like Picassa, Thunderbird, and Firefox for digital photos, e-mail, and browsing (safely).  These are excellent products and I’d like to thank Google and Mozilla for the free software. But each of you has your own design aesthetics. Your products are not terribly well integrated, and that inevitably (and unfortunately for you) leads to technical support questions from my wife and kids. I have better things to do when I get home, like coaching two of my son’s Little League teams.

Apple products are integrated — tightly, even chokingly so — but guess what?  They just work. That saves me time. That makes my wife and kids happy. And I’m willing to pay for that.

Of course, this utopia comes at a price. I have come to accept that buying Apple products generally involves accepting Apple, Inc.’s authoritarian style.  The word authoritarian describes a state in which a single power holder monopolizes political power. Look up the word authoritarian in a dictionary, and you’re likely to find a picture of Apple’s Chief Executive Steve Jobs. And Apple is most assuredly a monopoly when you’re speaking about easy to use, beautifully integrated hardware and software, that looks and feels great.

I do not in anyway begrudge Mr. Jobs the control he seeks over the company he founded in his family’s garage. He once lost the company in a power struggle with the board of directors (…hmmm… power struggle…), but came back ten years later and rescued it from irrelevance, introducing products like the iPod, the iMac, the iPhone. Ever heard of them?

Until recently I would have described Mr. Jobs (and by extension, Apple itself) as somewhat of a benevolent dictatorship, tirelessly ensuring that it’s products are the best engineered in the world. I’ve cheered the run-up in Apple’s stock price. I’ve laughed aloud at those “I’m a Mac” advertisements lampooning all the things I hated about the Windows platform. I’ve encouraged my friends and colleagues to buy a Mac enough times that if I had nickel for everytime I did, I could have bought myself another one by now.

But now I’m not laughing or cheering — as loud or as hard, anyway — as I recently was for Apple. I’m not alone in this view. Apple’s recent actions have begun to smell more like totalitarianism than authoritarianism to me.  A totalitarian regime attempts to control virtually all aspects of the social life of it’s people including economy, education, art, science, private life and morals of citizens.

I’m 100% okay with Apple’s steely grip on the working environment of their employees. But I’m not so cool with them telling me what is too titillating to see, what is too vulgar to learn, what to is too obscene to hear, or what is too obscene to touch.

I think Apple should have simply tagged these applications as adult themed and allowed individuals or families to determine appropriateness for themselves or children. That’s more akin to advocacy than censorship, and could be perceived as a competitive advantage versus Android or competing platforms. And then there is banning applications retroactively as they enter new markets.

I’m not against the App Store approval process.  To the contrary, it’s fantastic that I can download any one of 100,000 applications (from companies I’ve never heard of)  and be fairly confident that my contacts, photos and e-mail will not be transferred en masse to a malicious third party. I can say that with some degree of confidence because Apple has actually tested the application on my behalf. If they are half as effective at finding spyware as they are objectionable material, we’re all in pretty good shape.

In the long-term, I won’t accept Apple telling me what I can (or cannot) install on my iPhone (read: a portable handheld computer) anymore than I’d accept them telling me what I can (or cannot) install on my MacBook Pro. For now, short-term, I’ll play along because the competition is inept, but I’m warning you Apple, I’m starting to get the warm fuzzies for Google.

P.S. Come on Steve. Loosen up a little.

Performance vs. Ease of use

The Facebook development team announced recently that it has created an open source project named “HipHop” that can translate PHP source code into C++. Their goal was to improve performance (by using g++ to compile it to native code), but in the article they discuss the challenges of potentially moving away from PHP (to achieve better performance).

One [approach] is to rewrite the more complex parts of your PHP application directly in C++… From a technical perspective this works well, but drastically reduces the number of engineers who are able to work on your entire application… Given that our engineering team is relatively small… we can’t afford to make parts of our codebase less accessible than others.

This challenge is not unique to Facebook. It’s affects many modern software projects, because there  is no “one” language (or language cocktail) that offers both the best development time and ideal performance always.

The problem is only getting “worse” in the sense that there are more choices than ever before.  The number of computer languages is proliferating rapidly. And it’s no longer sufficient to write code that works, you also have to write it correctly using the appropriate design pattern.  I like MVC and use a Visitor Pattern whenever I can, but don’t kid yourself: old-school PHP, JSP, and ASP web pages are easier for the average developer to understand, and can be developed faster (if only because you don’t have to edit 10 files to create a single webpage).

In the 1980’s many large companies developed innumerable software applications using COBOL in combination with CICS. Say what you will about the language (such as it’s lack of closures), or the 80 x 25 green screens, but these applications still power the core business functions of many large institutions, including most US state and federal governments. What’s also striking about these applications is that they were developed by what were considered “large” development teams of 3-6 people. This was possible because you could hand a kid coming out of a college two books: a COBOL Language Reference, CICS for Dummies, and they were off to the races building enterprise applications.

By comparison, building modern web sites involves numerous technologies.  On the client side, you’ll need to know HTML (389 page specification), JavaScript (252 page specification), and understand the differences between web browsers. On the server side there are lots of choices, but suffice to say it can be a career unto itself depending upon your technology choice.  It’s not just about learning a programming language, you also have to learn the APIs, what open source libraries may be available to help you, and so forth. I love the Java programming language, but J2EE is daunting to the average developer. I have interviewed many Java programmers that spent their entire careers writing Enterprise Java Beans (EJBs) and never built a UI using HTML.

It seems to me that the Facebook development team made a wise choice for themselves. They selected a language that made it easy for their (existing) developers to rapidly prototype and develop software, and came up with a solution to improve performance at the same time. Nice job! I’m looking forward to playing with HipHop to see if it can be used by my team as well.

Compressibility of water

I came across this interesting tidbit regarding the (in)compressibility of water while reading an article about how to simulate fluid dynamics (I’m thinking about doing an iPad game in which I want to simulate water). From the article:

Water, in fact, is actually compressible, very slightly, since it’s physically impossible to have a truly incompressible form of matter. The incompressibility of a material is measured by a metric called a “bulk modulus”, For air this is about 142,000 whereas for water, it’s 2,200,000,000 or approximately 15,000 times as much. By comparison, the least compressible substance known to humankind, aggregated diamond nanorods, are just 500 times more incompressible than water.

nginx

I started using nginx (pronounce “Engine X”) for some MediaWiki and WordPress websites I manage. nginx is a fast (read: very fast), lightweight HTTP server. I don’t see it as a viable replacement for all Apache based websites, but it’s fantastic for proxying, serving static files, as well as dynamic content that supports the FastCGI interface (such as PHP). Notably, it lacks support for Subversion, WebDAV, and some authentication methods supported by Apache out of the box (a plug is available for PAM-based authentication however). I’m interested in using nginx as an alternative to mod_proxy for cometd style applications my company is working on.