The
Ultimate
Business Machine

Technology, business
and innovation.

And, not least, about
the Mac.

Weblog Archive Cutedge

by: Bernard Teo








Creative Commons License

Copyright © 2003-2012
Bernard Teo
Some Rights Reserved.

Sun 24 Sep 2006

Perfection and Simplicity

Category : Commentary/perfection.txt

If you had watched Stuart Cheshire's talk about Zero Configuration Networking with Bonjour on Google Video, you may have the caught the part where he talked about the importance of simplicity :

"Any fool can make something complicated.
What's hard is to make something simple."

And he followed that with a reference to a quote by Antoine de Saint-Exupéry:

"In anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away".

I've had that quote playing on my mind the last two months working on Luca.

It just so happened that I discovered an excellent book called "Let My People Go Surfing - The Education of a Reluctant Businessman - by Yvon Chouinard, founder of Patagonia, and what did I find but that quote again from Saint-Exupéry leaping off the 25th page :

"Have you ever thought, not only about the airplane but whatever man builds, that all of man's industrial efforts, all his computations and calculations, all the nights spent working over draughts and blue-prints, invariably culminate in the production of a thing whose sole and guiding principle is the ultimate principle of simplicity?".

"It is as if there were a natural law which ordained that to achieve this end, to refine the curve of a piece of furniture, or a ship's keel, or the fuselage of an airplane, until gradually it partakes of the elementary purity of the curve of the human breast or shoulder, there must be experimentation of several generations of craftsmen. In anything at all, perfection is finally attained not when there is no longer anything to add, but when there is no longer anything to take away, when a body has been stripped down to its nakedness."

- excerpt from Wind, Sand and Stars by Antoine de Saint-Exupéry.

There you have it - art, science, sex, poetry, engineering, and simplicity. It all adds up to perfection.

Posted at 5:14PM UTC | permalink

The Journey

Category : Technology/journey.txt

"It took me a long time to learn where he came from. The little prince, who asked me so many questions, never seemed to hear the ones I asked him. It was from words dropped by chance that, little by little, everything was revealed to me."

- The Little Prince, Antoine de Saint-Exupéry (via the Katherine Woods translation)

It started with the question - do currencies always round to two significant digits, like US$9.99? The answer is no. There is at least one case, the Japanese Yen, e.g., ¥1,280 for a pack of Pampers, where they have no decimal places.

So how do we make Luca work universally across all currencies without hard-coding all these things?

The question started me on a journey of discovery where I learnt about NSDecimalNumbers, creating a custom NSNumberFormatter class in Cocoa together with its own Interface Builder palette, and also about storing blob values in SQL databases so I can stash these number formats that the user has created.

And I'm now almost done. I have an interface in Luca that now allows a user to create custom number formats for any individual currency, and he can apply these formats wherever he's entering currency values in any voucher.

If he chooses the Japanese yen as the base currency for the accounting system in Luca, then all calculations where rounding has to be applied (e.g., in exchange rate or tax calculations) are done to zero decimal places.

That's triggered in just one place in the code and there's no hard-coding.

So, to answer my own question : it can be done.

Along the way, I think, I can now really articulate why Cocoa and, especially, Objective-C are such good software development tools.

It's all about design.

You've got to take a Janus-like stance and look both inwards and outwards at the same time.

You've got to look inwards into the code and be aware that the world you're modelling is as complicated as only life can be. And so, you've got to simplify, simplify, and simplify yet again wherever you can in the coding, to get everything neat, clean, crisp and small. Because if you don't don't, then you're going to get drowned in all the possible permutations when things come together in combination, when you meet a real user in the real world.

It's from this perspective that we should value the simplicity of the Mac. And the wonderful pragmatism of the Objective-C language.

And see how PC people like Paul Thurrott totally miss the point.

And so I continue to simplify Luca. I'm pulling all Luca application settings into one single Preferences window, and I hope I can organise its presentation into a narrative to help the user understand what he has to do to set up an accounting system. If I can get this Prefs window done, then Luca will be reduced to just two menu items - an Accounts menu and a menu for Journal, and that would be about it.

Posted at 4:08PM UTC | permalink

Mac@Work
Put your Mac to Work

Sivasothi.com? Now how would you do something like that?

Weblogs. Download and start a weblog of your own.

A Mac Business Toolbox
A survey of the possibilities

A Business Scenario
How we could use Macs in businesses

VPN Enabler for Mavericks

MailServe for Mavericks

DNS Enabler for Mavericks

DNS Agent for Mavericks

WebMon for Mavericks

Luca for Mavericks

Liya for Mountain Lion & Mavericks

Postfix Enabler for Tiger and Panther

Sendmail Enabler for Jaguar

Services running on this server, a Mac Mini running Mac OS X 10.9.2 Mavericks:

  • Apache 2 Web Server
  • Postfix Mail Server
  • Dovecot IMAP Server
  • Fetchmail
  • SpamBayes Spam Filter
  • Procmail
  • BIND DNS Server
  • DNS Agent
  • WebDAV Server
  • VPN Server
  • PHP-based weblog
  • MySQL database
  • PostgreSQL database

all set up using MailServe, WebMon, DNS Enabler, DNS Agent, VPN Enabler, Liya and our SQL installers, all on Mavericks.