Full moon


Spire of Church (Igreja Colégio Damas) in the foreground. Taken with an iPhone 4S. Post-processed using PEStudio.


Scientists like big words, engineers like acronyms. Designers, well, they like elegance, good ideas, simplicity, style, and so on. They don’t use big words. So when I see a word like skeuomorphism being thrown around, I imagine scientists not designers doing it. And scientists know zilch about selling. If they do know anything about selling, they are business-men not scientists any more.

Getting back to the “big word” that is the object of this post. I recently read an article highlighting why “big word” is bad in software interfaces. There are any number of people and reasons cited, that I will not repeat here. Go read the article. They criticize Apple for using “big word” like a lot of blind men feeling an elephant. Now see, there lies the problem, see the picture below.

Have you seen the insides of a Gulfstream? I haven’t. See the picture below, it should hopefully suffice. It is “visual masturbation” at its best.

The Apple Store does not just sell a device, it sells a lifestyle. That philosophy permeates everything. The hardware, software and the stores. It sells, and thrills users. I have personally never had any issues with “big word” in Apple software, nor have I heard non-technical users having had a problem with it. Why is that so hard for the scientific designers to understand. I can only blame it on a lack of understanding of selling a lifestyle.

Don’t like BMW? Go elsewhere. Don’t want to buy the Apple lifestyle? Likewise, go elsewhere.

Applying the observer pattern for protocol parsing and handling

If you have done any network programming, interfacing two computing devices using some kind of network, you have had to deal with a protocol of some kind. Most protocols have a standard, fixed-size, header, and a variable payload, which may itself contain another protocol.

Let’s take the IP protocol as an example.  The IP version 4 protocol header has 20 bytes,  but the payload is usually another protocol, such as TCP or UDP. The protocol itself is hinted at by a 8-bit Protocol field in the IPv4 header. Somewhere in an operating system kernel, a handler for the IP protocol has to invoke handlers for all the different protocols in the payload. This is something that cannot be hard-coded, otherwise for every new protocol the whole code-base would have to be rebuilt and deployed.

The Observer is the classic pattern applied in such a situation. For instance, the observer for the TCP protocol can register itself with the handler for the IPv4 protocol, receive and process messages, and unregister at will. Similarly, application specific observers can register with the TCP protocol observer (handler now) to receive or send messages on a particular port. In situations where a hint, such as a protocol or port number, is not possible, multiple observers can receive messages in a chain, process it, discard it, or suppress it from other observers down the chain. These are often referred to as filters.

Storing and retrieving observers can be achieved using well-known data structures. If the observer can be found using a hint or key, it can be stored in a hash table for fast lookup. If multiple observers need to be called, they can be stored in a list. If they need to be called in a particular order, a queue, stack, or a priority queue, can be used.

Every programming language provides some means of creating and using observers. Procedural languages like C allow calling functions using pointers, referred to as callbacks. Object-oriented languages can create observers as objects that implement a particular interface. Try and avoid using observer, handler, or filter, in the name of the class. Name it based on its intended function or purpose. After a while, it gets tiring to see the same words repeated ad nauseam.

iPhone 5 is an evolution, not revolution

The iPhone 5 has launched. It is evolutionary, not revolutionary, which is probably as it should be. As an iPhone 4S user, the bigger screen is the only thing that attracts me right now. Brazilian operators will not be getting it for a while, so Nano-SIMs are going to be hard to procure. LTE is another good reason to upgrade, but most Brazilian cities have no LTE. Maybe by the time of the FIFA World Cup of 2014, more cities will gain LTE coverage. I will not upgrade to an iPhone 5, probably an iPhone 6 (?) in 2014.

The iPod line, particularly the Touch, has received significant upgrades. At 5 mega-pixels, with flash and autofocus, the rear camera of Touch has gone beyond being a toy to seriously challenge older point-and-shoot digital cameras. With dual core A5 CPU and dual core graphics, it has also received a much needed performance boost. The $ 299 starting price is worth it considering that it gets you 32 GB of flash memory.

The iPod is clearly the winner of the day. I’ll be buying the new Touch as soon as I get the opportunity to do so, especially since the purported iPad Mini seems to be nowhere in sight. I am happy with the iOS ecosystem, maturity of the apps being my primary reason, followed closely by AirPlay. The iTunes store in Brazil lacks books, but is otherwise quite on par with the US store. Hopefully Google Play store the Android ecosystem will catch up in the near future, I may then consider buying Android devices.

It’s that day again

Apple knows how to build expectations, and during Steve Job’s tenure it frequently exceeded them. The media covers their events assiduously.

The tech community is not so happy with Apple though, especially those that hang around Google+. I have to admit that Steve Jobs going thermonuclear on Android, and the spate of lawsuits against Apple’s rivals, brought a particular distaste to my mouth. Can it be construed as a frustration of a dying man? I tend to think that if Jobs had several more years ahead of him to shape Apple’s products, they would have been less offensive.

Today is the kind of day Jobs was at his best. He would have taken the opportunity to launch terrific products, taken jibes at the competition, and buried the lawsuit hatchet so to say. Even without Jobs on stage, today brings anticipation. I am not new technology crazy, but Apple has made me anticipate.