The Old Blog Archive, 2005-2009

ObjectiveFlickr 0.9.0 Released in Both Objective-C and Ruby

I’m happy to announce that ObjectiveFlickr Library 0.9.0 is released, available in two languages: Objective-C and Ruby.

The Objective-C version is the continuation of my work on the Flickr API framework, first released in September. Version 0.9.0 includes documentation, sample code, and the pre-built ObjectiveFlickr.framework which can be placed into your own Cocoa app. I’m planning to add unit tests and synchronous calls in the near future.

The reason I’ve created a Ruby version is that I need an ultra-lightweight Flickr library for my web applications. Since Flickr now provides return data in JSON, there is really no reason we need a myriad of Ruby classes (one for photos, one for groups, one for users, … and so on) that encapsulate different types of Flickr data. I’ve packaged the library into a gem so with just a one-liner ("gem install objectiveflickr") you’re all set.

The Objective-C version is hosted at Google Code, whereas the Ruby version is hosted at RubyForge. I also keep a blog that tracks its growth and progress (I hope).

I’m eager to learn if ObjectiveFlickr can help you better, so feel free to comment or drop me a line. Thank you!

On Bookkeeping

Some people I know are working on things like group calendars, group to-do’s, or group task tracking system. One common theme (use case actually) in those applications, and one that you also find in big boy apps like Google Calendar, is that you can “dump” things quickly. In Google Calednar you can click on any day and type “15:00 Meet-up with Taipei.js people” and Google knows you want to set up a calendar item beginning from 15:00 that day. Keyboard is still the fastest input device, and by allowing people to “dump” their thoughts, to-do or calendar items, you’re giving your users a big favor.

Now I wonder if we should really have something like that in bookkeeping. Done wite the days when we row-and-column Excel spreadsheets. In a messy situation such as when travelling aboard with an unfamiliar currency, something we just want to “dump” the expense record we have, and let the system do the rest of the calculation (and slip keeping). For example, “200 Yen a can of tea at Narita Airport” and “USD 20 subway prepaid card at the exit of JFK Airport”, then the service should be able to tell you that you spent 60 NTD at Narita and 660 NTD at JFK, using that day’s rates.

Of course by its nature a bookkeeping service needs to work both online and offline. Sync, security and multiple report-generation options are needed. If the service can keep track with daily currency rates or even your portfolio, so much the better.

Web 2.0 Visual Design, 1928 Style



Web 2.0 Visual Design, 1928 Style

Originally uploaded by lukhnos.


A poster in 1928. “Büro” means office in German. By Theo H. Ballmer (1902-1965).

Musem of Modern Art, New York City.

Reading Others’ Bio

From Michael Hughes‘s (his Sovernirs set is featured on Flickr Blog):

My first wife left me in 1981, which although painful, led to two very positive developments; I decided to become a

full-time photographer and my weekly migraines disappeared for ever. In 1982 I accidentally went to Berlin met a group

of politically active but thankfully not Trotzkyist, squatters, fell in love and began to build a life there (here).

1983 moved permanently to Berlin. Became involved with the FDGÖ, a politically based media collective,

producing stickers, postcards and latterly a video performance installation based on Samuel Beckett, which toured Germany

and was invited to the “Dokumentarfilmtage” in Leipzig, then DDR in1985. A portrait project which I called “True Stories”,

Black and white photos are combined with a text which synthesises the history or aspirations of the subject,

complementing or contradicting the perceived impression of the photo. The project continued over the next few years,

resulting in an exhibition in Berlin in 1986, and was shown, as part of the European Cultural Capital in Glasgow in 1987.

The Berlin Wall came down while I was working for Stern, I was suffering from a cold and went home,

something for which I was never forgiven.

This one from PPK’s site:

Originally I was educated in ancient history (Greeks and Romans) and as a teacher. I couldn’t find work, though, and although I busied myself for two years with research into ancient Germanic sagas, especially the Thidrekssaga, I wanted to get a real job to earn some real money.

Therefore I switched to the Internet at the tail end of 1997, when I started on a (very bad) course that would make me “Internet Advisor”, whatever that may be. I took the opportunity to delve deeper into the practical issues that confronted anyone who wants to create web sites.

Cherry Coke

Heard Coca Cola continues to make and sell it because Warren Buffet, one of the company’s major shareholders, always drinks it.

This is the first time I find investors can do good things to my life. That doesn’t mean I found they did bad things to me. It’s just what they do had nothing to do with me.

It’s very very hard to have cherry coke in Taiwan. It was on the shelf when I was a middle school student. Then Coca Cola stopped selling it in Taiwan. Years later they have vanilla coke. But even vanilla coke is hard to find lately. And vanilla coke ain’t no substitute for cherry coke.

Now that I think about it, the next version of OpenVanilla should be called OpenCherry. Seriously. I love vanilla coke and vanille ice cream (just don’t force me to say I love another vanilla thing, that’s too preverse). But vanilla ain’t even standing on the same level that cherry is.

Slowness

Lately I have found that I’m on the slow lane of everything in a fast-paced world. It’s as if my life is running so slowly that it’s become a grande lenteur. I’ve packed and come back to Taipei. There is angst, jitter, doubt, and fear. If it seems that people around have been into something, settled in, on steady progress, together with, my current state of affair (the other meaning is truly unintended) is closer to naught.

I haven’t really written anything, things that just came naturally. Either I stopped listening to them lately, or they stopped coming. I’m not sure which is the case.

Sometimes I try to cheer, not me, the other people. Steadiness is something one can’t feign, and sometimes people find me reliable. But lately I found the foundation upon which I built my house is turning to sand. Maybe it wasn’t a solid rock from the very beginning, but I didn’t know. My awkwardness is starker than ever. I keep falling out of the loop.

This is a very strange feeling. Can be terrible. I’m fine with it so far. The hard part is to say honestly that, “Look, I’m not the one you thought you know.” I tried to shed many things. In the end I still lost my temper, made horrible judgement, wrong decision, unrecoverable mistake. Weakness in personality starts to show its strength in making faux pas. And for “but I thought you had always wanted to be with … ” or “yet didn’t you say or show or express that interest in …”, the answer is yes, but no. Sometimes things came out as A, turned to be B. At least this is what’s happening to me, against me, around me, and inside me.

And I can only be honest about them.

There are dreams and hopes, ideals and convictions. Dreams and hopes are good but they need to be bridged. And bridges are hard to find. There are ends without means. Ideals and convictions are dangerous when they are passionate and blind. They are ends in themselves, and, by their nature, mean in their unforgivingness and relentlessness.

Ars longa, vita brevis. One thing they share in common, they are both difficile.

Into the Third Year

OpenVanilla just had its 2nd birthday. It was born in the form of a little .h file on the Twenty-Third of October in the Year of Common Era Two-Thousand-and-Four. We’re well into the third year. I’m really glad that it helps many people and is both useful, innovative, and fun.

As the operating system and desktop environment grow over time, OpenVanilla must catch up too. Many edges are becoming rough again, and some of its code base begins to show its age. We’ll continue polishing the rough edges and hopefully we’ll come up with features that are again both useful, innovative, and fun (WebKit-based candidate/feedback windows are high on the list).

Without you support, OV wouldn’t be what it is today. Thanks everyone!

When it was three weeks old: the first functional POJ module

Documentation Work Started for ObjectiveFlickr

I’ve started putting in HeaderDoc tags into ObjectiveFlickr header files. Which marks the beginning of documentation work. The framework has been stablized, and I feel good about it. Now what is needed is a really good documentation. A dedicated blog and nightly/weekly builds will be in the sweetspot, too.

It’s almost done. Another two or three days and the documentation should be there.

ObjectiveFlickr: Refactored, one new example added

The refactor work is now done. I’ve broken lots of things for lots of reasons. But all in all I hope this eventually becomes a production-grade framework, with details such as naming convention being taken minute care of.

Now there is documentation work to do. I’m thinking about using Apple’s own HeaderDoc tools to write the in-the-code documentation, and use the tools to generate HTML document for me.

And I’ve added another example. This is done after Ruby on Rails’ screencast (on how to use RoR to create Flickr public photo search). I have even copied their CSS. Working with WebKit is always fun, and ObjectiveFlickr gives you the power of accessing Flickr method and return data blocks in native Objective-C. Because of limited time, I only wrote a Chinese blog entry on that, but you can always download the latest build or use the source to see for yourself.

I know. The current state is very, very far away from anything “production grade.” Even my blog theme is lacking in that they are totally inadequate for project hosting purposes. I have to work harder on this.

 

One Thing that Will Definitely Break

Lately I found you can actually call valueForKeyPath: to retrieve a key from deep dictionary-array combos, such as [aDict valueForKeyPath:@"a.b.c"] instead of [[[aDict objectForKey:@"a"] objectForKey:@”b”] objectForKey:@”c”].

Apple calls it “Key Path” (à la XPath?) and it plays an important role in Key-Value Coding/Observation. The biggest problem, however, is that it uses the symbol “@” to perform some functions on array data (e.g. you can do average or count or total, those db/spreadsheet thing, using @ modifier in a key path).

That is in direct conflict with ObjectiveFlickr’s current XML-to-NSDictionary convention, which follows BadgerFish’s XML-to-JSON convention, ie. using @ symbol to mark that it’s an attribute of an XML tag.

Either I’ll have to move attributes to another key, e.g. aTag._attr, or have to use another symbol that is not “@”.

In any case, I’m going to break that part of ObjectiveFlickr. I don’t want to write three left brackets just to retrieve a key, it’s too ugly. KeyPath is a better way, but unfortunately the symbol “@” doesn’t fit into the picture. Only had I knew it before I designed!

« Previous PageNext Page »