The Old Blog Archive, 2005-2009

Archive for August, 2007

Details

There are simply too many details around any given idea, if it is ever to be carried out. So many, and so many devils, that brilliance of that idea, the fervor, the buoyant feeling of how great the idea will be, are put to trial. There focus is a necessity, and that entities should not be multiplied beyond necessity is something that we ought to bear in mind.

The Desktop

Despite the talk in the past few years about the future that belongs to the web app, desktop app has also evolved. The umbrella term “usability” becomes the new focus for desktop app developers. And even if gmail is great, there will always be times when offline (that is client-side) mail reading is desirable.

I attended this year’s Apple WWDC. Apple seems to have a clear view about the market segmentation. Namely, there are actually three, not two, separate areas, or platforms, on which software apps compete: desktop, web, and media. The desktop is still the center around which things happen. Talk about thin client or terminals didn’t really materialize (some of the ideas found a way into the media platform though). Desktop is about responsiveness, capacity and device connectivity (something that web is definitely not [1]). Web, as we all know it, is about ubiquity, zero configuration, quick deployment (from an app developer’s point of view). The media platform is somewhat more tricky as it’s more diverse, but from Apple’s point of view, handsets, PSP, setboxes all belong to this category. This is something that used to be the game of appliance makers, but apparently during the past decade traditional PC software makers (Microsoft, needless to say, but also many more) have noticed this development, and they have been unleashing their technological prowess into this arena.

For the time being, though, Wil Shipley (the Chief Monster of Delicious Monster)’s comment is the most succint. While tons of money is needed for building a mass web service (as software application per se; another story with web services that function as platform for something else, like selling books), only the biggest players get something. Now, desktop software market may seem small (and Mac independent software market is even smaller), but it seems that survival is more attainable.

One assuring thing is that the ecological system of software is big enough that, if you’re good, it’s not hard to have a pie. The rise of web apps doesn’t need to mean the decline of all desktop apps (and, frankly, I can’t really think of any desktop app that went undone by a web app equivalent).

What’s better, the rise of web APIs (not Web OS–rather, programmable web is the way) should only make desktop apps better and stronger. Now everything old is anew again. A good news for desktop app developers.

[1] One must remember the reason Windows is such a big player is that it has accommodated and created a whole industry: the peripherals. Even Apple’s computers nowadays use standardized devices and the company is trying to make it easy to develop device drivers. For all the talk about Web OS–which I think is a non-topic–this is something clearly missing. Honestly, though, when and how many app developers ever cared about system programming issues?

The Philosophy behind Design Philosophies

Had afternoon tea with two old friends yesterday. One of them is doing math at UW and I visited him last November in Seattle. The talk was around topics like “the philosophy behind design philosophies”–or in plain words, “why and how you come to design it that way?” Modularization and abstraction is what pro developers do every day, but how–and why–you modularize or abstract a module/class this or that way, that’s not a natural thing. That’s first something to be learned, and later–as one learns (if one’s willing to) more than one strategy to do it, the questions come to choosing the right pathway.

That’s not just scholastic muttering. When you design a language or a framework (be it a programming framework, legal framework, business framework–an institution that is), this meta-philosophy applies. Because you are designing something that allows generation for other things–or to put it the other way, you’re about to design something that is going to be able to accommodate design philosophies. You design C++ to accommodate design patterns and different paradigms (procedural, modular, object-oriented, generic, etc.). You design commerce laws to accommodate different walks of business entities.

So one can’t be too careful nor audacious in coming up with one philosophy behind design philosophies. It’s hard as abstract thinking always is.

Study-Oriented Development

Lately I can find my way of developing an application is coming to its form. I call it “study-oriented development”. The thing is that before I start doing anything real, I do a great number of studies. For the past average Rails apps that I’ve done, the number has been 5 to 10. Usually the more study apps I’ve done, the better the result has been. For a Cocoa app, the number can vary more–but the safe bet is no less than 6. A project that has been the main theme of my past three quarters has already accumulated around 20 studies.

Interestingly, there’s another side of this discovery: if I’m not able to do studies (due to time constraint, or if an app has too many dependencies), then my output will generally… deteriorate, unfortunately.

Studies, or études in art talk, are luxury, though. It indeed takes more time than just working on the app / the problem itself, and you need many clean slates. Another issue is the “boilerplate” code (all the common initilization code, basic plug-in’s, config parsing, etc.) that you have to do in order to start a study. Fortunately for me no study is the same and I try to limit the scope of a study, preventing them, on purpose from growing into a fully-fledged app.

One thing that study shines is when you have a number of similar plug-in’s or pathways that achieve a given goal. Plug-in’s are a good thing, but they can be tricky as they are not necessarily easy if you want to pull them out. (For Cocoa/any C-related language project, it’s the pain of pulling them out of your source tree; for Rails projects, cleaning up generator-produced-then-manually-customized code can be a disaster.) Many plug-in’s can start grow into your code quickly. And then when a plug-in goes wrong, you find you’re putting out fire everywhere. A study on the different options can prepare me for an exit strategy.

Reconfiguring Life

Since father’s passed away we have been shedding things in the house. The guest room that never was is finally cleared up. We decided to give away the Mac Plus and will throw away the “made in Taiwan” Apple II and an early 1980s Vector CP/M computer shortly. They have been stored in some paper cartons for the past 10-15 years and have never been powered up again. I don’t even want to take pictures of them before they are out.

My parents, like many of their generation, used to frown at throwing away things. Father was particularly like that. Being a proud Hakka, he valued thrift much. And having served in the water processing and environmental engineering sector (he had overseen construction projects like water supply for chipmakers, incinerator for medical wastes, and so on), he always told us to “think of the impact to the environment” whenever we were going to throw away something. And he was an avid recycler–we’ve got a few appliances around that was rescued by him from the streetcorner. He repaired them and made them back to life.

In recent years, however, that has acutally become a problem. The house we have been living for almost a decade is certain bigger than the last one, which was too small for a house of five, but that doesn’t mean the capacity is unlimited. And again, like many of their generation, he sometimes stocked things out of impulse. When affluent baby-boomers now live in the age of hypermalls and cheap groceries (their prices being the cheapest in real terms in the entire human history), that impulse can bring funny consequences to a house. Many of my friends also shared the complaint that their parents buy too much, throw away too little, and their houses are full of clutters.

And we the Taiwanese, unlike our Japanese neighbors, are really, really bad at organizaing and utilizing space.

So for the past few months, since my family reached an agreement on what to keep (mostly photos and a limited number of personal belongings), we have been throwing away things. It was lot of work, and it is amazing that we are still throwing away things today.

For me, the past few months have been difficult. Emotionally we have to come to terms with the loss. But finding time to de-clutter the house, in addition to my already very hectic work schedule–it’s always hectic when you now have your own business, teaming up with partners, and playing multiple roles at the same time–is also such an ordeal. I have to devote a day or two every week. Lots of decisions and re-thinkings are involved in the process.

Still, we must do it and have to think what we really need in the next 2-3 years. There will be lot of things happening around. Like little brother is going to college in ’08, and I’ll certainly travel more. If we don’t de-clutter and don’t reconfigure the space, we’ll be literally stuck in a spatial impassé. Not that we lose our mobility literally, but that’s a very subtle psychological thing, and the fact that the space you live in reflects your mental state. Life must carry on with some reconfiguration.

My father’s recycling virtue has its sad side. His refurbished appliances have brought us some problems, and now we have lost a mechanical genius that could take care of them. I might be the one that have some of his skills in repairing things, but fixing software bugs already takes away most of my energy, and I don’t really want to spend yet another minute when I’m at home to rewire the speakers that stop working, or re-install Windows XP on those old PC boxes (horror!) that are noisy and in effect not really energy-efficient.

We have thought about selling them on auction sites. But taking photos of them is another time-consuming work. Many of them just don’t have brands. The “made in Taiwan” Apple II wasn’t of really much value. And giving them away to people? There are way too many things to give away, and it’s not easy to find the right people–or just finding people who are willing to take them is hard enough. We do have donated a used Acer desktop PC set to a middle school, which in turn gives it to a student who needs a PC at home.

In the end we have no choice but to throw many things away. Gladly we live near a household that does recylcing for Tzu Chi Foundation, one of the largest charity organizations in Taiwan. They categorize and arrange things and re-distribute them to people in need.

The one thing that my sister and I had been telling father is: we actually have more than enough in the house. The same can be said of many of my generation’s house. Overstocking things create clutter, and clutter ends up in waste. The sad thing is that not all waste have high residue market value, and clearing them out is another time-consuming, economically inefficient thing. So refurbishing or repackaging those stuff is just out of the question (they’re not economically rewarding at all–and I doubt the probability of changing hands successfully), throwing them away seems to be the only viable solution if we are to de-clutter.

So today I came to this “advice to parents” on my Twitter: if you really value the virtue of thrift, don’t be a pack rat.