09
Mar 10

All Your Apps Belong to Apple

Electronic Frontier Foundation (EFF):

If Apple wants to be a real leader, it should be fostering innovation and competition, rather than acting as a jealous and arbitrary feudal lord.

It probably won’t be long before iPhone developers are prohibited from posting links to a copy of the iPhone Developer Program License Agreement obtained by the EFF via the Freedom of Information Act.


22
Feb 10

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. Accordingly, I’ve cheered (and profited) from 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 (okay, I don’t really want to touch this app; Forget it, I’m rollling.)

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. As implemented, it’s feels more a like a prison, and does more to fuel the blackmarket than the Santa Ana winds do to fuel California wild fires. So does banning applications retroactively as you 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.


05
Feb 10

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).

For example, 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, 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 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.


31
Jan 10

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.


29
Jan 10

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.