MoMA and Software as an Art

What would be the place, in a museum like MoMA, of a collection of art dedicated to software?

If there is something that MoMA can make, is to boost your imagination. Anything is possible; the myriad of options for the expression of human creativity has no end, the mind boggles.

My dream has been, for years, to explain software, its intricacies, to make this part of our world accessible to anyone. Software rules our world, it is one of the most complex creations of man, yet it remains understood (albeit partly) by just a few.

There are many dimensions to software; the first to explore is size. When you tell anyone outside of the field that Windows 2000 took 5 years to a team of 1400 developers to complete, and that the whole thing is about 29 millions lines of code, it is still not enough; however, if you printed the whole code of Windows and put it in a series of books, how many books would it be?

On Kawara has created a piece called “One Million Years”, on display at MoMA; the whole thing is a series of books where the pages show, one after the other, as the name implies, one million years.

IMG_1696

At 80 lines per page, at 1000 pages per volume, the source code of Windows 2000 would take… 363 volumes. Given that the Encyclopædia Universalis or the Encyclopædia Britannica consist of 20 or 30 volumes each, we are talking that a single company has been able to pull 12 encyclopædias out of the hat for a single version of a product. I’m not talking about quality or other characteristics; just size, raw and simple.

That’s the magnitude of software. Now we can begin to understand the magnitudes, the cost, the implications.

Another magnitudes worth exploring would be cost, number of people involved, number of errors… Infographies would explain in detail the interconnections and the different dimensions, their relations, their impact. But again, the whole thing remains so virtual, so out of reach, so different of anything else, that we just run out of analogies in no time.

What other dimensions could be used?

Learning one new language every year

Here’s an update of the current status of my “one language per year” lifelong initiative:

  1. 1992: QBasic
  2. 1993: Turbo Pascal
  3. 1994: C
  4. 1995: Delphi
  5. 1996: Java
  6. 1997: JavaScript
  7. 1998: VBScript
  8. 1999: Transact-SQL
  9. 2000: C# + Prolog
  10. 2001: C++
  11. 2002: PHP
  12. 2003: Objective-C
  13. 2004: Visual Basic.NET
  14. 2005: Ruby
  15. 2006: LINQ
  16. 2007: Erlang
  17. 2008: Python
  18. 2009: Go
  19. 2010: Lisp
  20. 2011: Haskell

The trend has roughly been an evolution from procedural during the 90′s, to object-oriented ones at the beginning of the 2000′s, and finally to functional languages right now.

And thus I realize, I’ve been programming for 20 years this year, 15 of which for a living.

Reflexions on the Software Business

There are basically two things you can do to earn a living when you write code:

  1. Consulting
  2. Products

When doing consulting, you write code, and somebody else owns it; you are blamed for its bugs, rarely praised for its benefits, and usually you only sell one copy of your work. When working on products, you write code, and you actually own it; you can brag about it on your blog without pissing anyone, and if you are lucky you sell as many copies of it as you want, all for basically the same production cost.

Now, here’s an insider tip: if your objective is living a nightmare, tearing yourself apart and swear never touching a keyboard again, choose option 1. If your objective is enjoying a healthy life, making money and living long and prosper, choose option 2.

This fact is explained by economists as a “diseconomy of scale”: this means that fixed costs are very low relative to variable costs, which means that the cost of creating a new copy of your finished product is virtually zero. You only have to invest in the building, not on the replication. Actually this is not 100% true, because you should spend on marketing anyway, and you might as well add new features on the way, but the truth is that well-run software companies make more money than drug dealers, and guess what: software is an activity usually considered legal.

However, there is a tacit consensus in Switzerland, apparently, by which there can’t be successful companies doing software in this side of the world. And most companies choose option 1 above. Which has interesting side effects. Continue reading

Thoughts about Google’s “Go” Programming Language

Historically, we can distinguish really big software companies for providing, at least, four major kinds of products: an operating system (sometimes open sourced at a certain level), a web browser (with various degrees of standard compliance), a suite of office applications (slightly compatible with everyone else’s), and a programming language with curly brackets (generally incompatible with everything else). In that particular order, we have:

  • Microsoft: Windows, Internet Explorer, Microsoft Office, and C#.
  • Sun: Solaris, HotJava (sic), StarOffice, and Java.
  • Apple: Mac OS X, Safari, iWork, and Objective-C.
  • Google: Chrome OS, Chrome, Google Docs, and… Go.

Precisely, Go was the last piece that Google had to create in order to fit into the framework above. And it did, with a bright team including Ken Thompson (of Unix and C fame) and Rob Pike (of Plan 9 and UTF-8 fame). With names like that, and with Google’s own funding and infrastructure, it is normal that the media went into a hype frenzy yesterday.

bumper480x270

I think, however, that Google’s engineers got tired of what the current and upcoming versions of their “official” programming languages (Java 7, C++0x and Python 3.0) had to offer, and simply came up with a programming language that fits better their needs and expectations. As one of the slides of the TechTalk says, with current languages “You can be productive or safe, not both.”

Features like built-in support for concurrency or garbage collection hide the real true feature behind the language: faster build times with static typing support. This is important for Google from a software economy point of view: they want more productivity from their developers, or, in other words, more bang for their buck, all together with verifiable quality and speed of execution. Go seems to be designed to deliver in these areas. However, Rob Pike is careful to say that the language is experimental, so time will tell if their efforts were worth it.

In any case, it is worth noting that there was a previous programming language called Go! (whose author even wrote a book about it), and after an InformationWeek article revealed this, a petition has started in the Go bug tracking, asking Google to change the name of the language, all in the name of Google’s own “Don’t be evil” motto.

On the Importance of Yerba Mate in the Software Development Process

mateThis paper will highlight the results of an extensive research conducted since the mid 90′s, on the effects of the consumption of beverages based in the plant known as Ilex paraguariensis, in the framework of software development process activities in South America and some small parts of Europe.

This paper will provide an introduction to the herb commonly referred to as “Yerba Mate”, and will later delve into the advantages and disadvantages of such practice, in the context of the creation of software products.

Introduction

Yerba Mate is defined by Wikipedia as follows:

Yerba mate or yerba-mate (Br.) (Spanish: yerba mate, Portuguese: erva-mate), Ilex paraguariensis, is a species of holly (family Aquifoliaceae) native to subtropical South America in northeastern Argentina, eastern Paraguay and southern Brazil. It was first scientifically classified by Swiss botanist Moses Bertoni, who settled in Paraguay in 1895.

Continue reading

Roundup of Swiss Companies Writing Mac Apps

A lot has been said and done about the iPhone, but there’s much more to Cocoa and Objective-C than our beloved pocket device.

During a chat session with Stefan Fürst from Media Atelier we put together a quick list of significant Mac applications created in Switzerland (and southern Germany), and indeed the list (in no particular order) is nothing short of impressive; check it out:

It really looks like the Swiss enjoy writing Mac apps (I certainly do and will publish mine soon!). Have I forgotten anyone? Please don’t be upset, and feel free to leave your links in the comments below. I’d love to know who else is creating killer apps for the Mac in a radius of 300 km around Zürich!

Disclaimer: I’m not affiliated with any of these companies (I’m just a friend of Stefan). And if you’re more into “enterprisey” stuff, here’s the “Swiss-Made Software” label site that you migth find more interesting ;)

Update, 2009-10-23: Some more applications added after the publication of this post:

  • Luscious SMS, the SMS client for the Mac;
  • Special mention for Cyberduck, an open source FTP, SFTP, WebDAV, Cloud Files & Amazon S3 Browser for Mac OS X, or “the poor man’s version of Transmit” :)

Update, 2009-10-24: Sophie Teuschler tells me not to forget the multiple Apple Design Award winners SubEthaEdit and BoinxTV by The Coding Monkeys, not far from Switzerland, in Bavaria…!

Update, 2009-10-25: I’ve just received an e-mail from Cyril Pavillard about his company Mnemis and their product Uniboard which looks absolutely awesome by any standards. Be sure to check out this cool Swiss project!

Update, 2009-11-12: Just found out about noidentity and their MoneyBook iPhone application. It seems that this application is just a copy from another one called “pennies”. Shame on you noidentity.

Muchas Notitas, Muchas!

Notitas is available at an App Store near you! Notitas means “small notes” in Spanish, and it’s the fourth iPhone application under the akosma brand, and the first based on an original idea of my dear wife!

smiley

As the name implies, it’s a simple and easy way to create, keep and find notes in your iPhone, with some bonus: geographical awareness, so that each note remembers where it was created; the ability to publish notes in Twitter (for the moment, only if you have Twitterriffic installed in your iPhone) and send them via e-mail, too. I’m particularly happy of the Twitter integration (which prompted a whole article in this blog) so that I can use Notitas a lot as a “draft Twitter” client.

I’m already preparing version 1.1 with TwitterFon + Tweetie support, as well as a German localization thanks to Sophie from Sophiestication! Stay tuned for more goodies :)

PS: oh, and while you’re using Notitas, try shaking the board a bit and you’ll see what happens ;)

New iPhone Apps: RooiFonts and DeviceDNA

Let me introduce to you RooiFonts and DeviceDNA, the latest iPhone apps by akosma software on the App Store!

RooiFonts is an evolution of my previous Font Browser application (still open source, still in Github). RooiFonts builds upon that application bringing some more new features, like the ability to send a screenshot of a sample of text in the selected font via e-mail, or being able to compare two fonts side by side. RooiFonts is available in the App Store for USD 3.99 (CHF 4.40, EUR 2.99).

rooifontsdevicedna

On the other hand, DeviceDNA is a free application for all of my clients, to send me their iPhone device information (including their UDID) via e-mail in a convenient way. No more explaining “open iTunes, click here, paste there…”, just install this, and you’re done.

As usual, both are available in English, French and Spanish.

Discovering a Hidden iPhone URL Scheme

As an iPhone developer, one of the simplest and easiest mechanisms you have to interact with other applications is through the use of iPhone URL Schemes. These are so important that I’ve created a wiki page where I keep track of those I come across, including code samples that help me exchange data with them.

xcode

However, not all editors document the URL schemes they support in their apps, and this blocks reuse and collaboration. I recently came into such a problem, trying to use TwitterFon from my own apps, to post messages to Twitter. The TwitterFon site only specifies the following iPhone URL scheme:

twitterfon:///post?this%20is%20a%20test

The problem is, this URL scheme does not perform an URL-decoding on the message parameter, which means that a phrase like “this is a test” will appear in TwitterFon URL-encoded, that is, as “this%20is%20a%20test”. Clearly not acceptable.

However, thanks to Ashley Mills, I learnt that the USA Today iPhone app is able to use TwitterFon to share articles via Twitter, and does this properly, without URL-encoded characters. How do they do that? Obviously, they are using an URL scheme exported by TwitterFon, but not documented anywhere (*). I finally discovered that the URL scheme sought is the following (“message” instead of “post”!):

twitterfon:///message?some%20text%20here

This is how I found out: I impersonated TwitterFon in my own iPhone with an ad-hoc app created in Xcode, that shows me the URL used by USA Today to launch TwitterFon. Continue reading

Random Quotes on Business and Software

A Cooperative Organization:

(…) Gore has been a team-based, flat lattice organization that fosters personal initiative. There are no traditional organizational charts, no chains of command, nor predetermined channels of communication. Instead, we communicate directly with each other and are accountable to fellow members of our multi-disciplined teams. We encourage hands-on innovation, involving those closest to a project in decision making. Teams organize around opportunities and leaders emerge.

Continue reading