<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>fiat lux (cahier lukhnos)</title>
	<atom:link href="http://lukhnos.org/blog/en/feed" rel="self" type="application/rss+xml" />
	<link>http://lukhnos.org/blog/en</link>
	<description></description>
	<pubDate>Sun, 16 Nov 2008 22:08:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
	<language>en</language>
			<item>
		<title>OpenRadar</title>
		<link>http://lukhnos.org/blog/en/archives/139</link>
		<comments>http://lukhnos.org/blog/en/archives/139#comments</comments>
		<pubDate>Sun, 16 Nov 2008 20:15:22 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=139</guid>
		<description><![CDATA[A couple of veteran Mac developers have come up with the idea of OpenRadar. Anyone who has ever filed a bug to Apple through their bug reporting system (&#8221;Radar&#8221;) knows its close nature. It&#8217;s understandable that you don&#8217;t want to disclose your reported bugs on unreleased software from Apple, neither do you want to reveal [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of veteran Mac developers have come up with the idea of <a href="http://openradar.appspot.com/">OpenRadar</a>. Anyone who has ever filed a bug to Apple through their bug reporting system (&#8221;Radar&#8221;) knows its close nature. It&#8217;s understandable that you don&#8217;t want to disclose your reported bugs on unreleased software from Apple, neither do you want to reveal a bug that has to do with <i>your own</i> unreleased software. So Apple chooses to make it close on fair grounds.</p>
<p>On the other hand, there are situations where you want to make your filing public. I often encounter these two: (1) you have a feature enhance request, but it&#8217;s rejected on the ground that it&#8217;s a &#8220;dup&#8221;, but you don&#8217;t know if it&#8217;s really so, or you want to seek some support from your fellow developers; (2) you want to discuss openly about a bug or a fix which may benefit all.</p>
<p>At any rate this is community spirit at work. It&#8217;s amazing to see how Google&#8217;s App Engine is used. Will we be seeing a desktop client for that soon, too?</p>
<p>Update: Tim Burks, the person behind the idea, <a href="http://blog.neontology.com/posts/2008/11/15/openradar">blogs about it</a> in his own words.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/139/feed</wfw:commentRss>
		</item>
		<item>
		<title>Random thoughts, C++0x, transactionable GUI</title>
		<link>http://lukhnos.org/blog/en/archives/134</link>
		<comments>http://lukhnos.org/blog/en/archives/134#comments</comments>
		<pubDate>Thu, 13 Nov 2008 18:19:38 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=134</guid>
		<description><![CDATA[In-between the problem of structuring your GUI application at higher order has caught my attention. The glaring problem of multi-core multithreading is trapping us developers. We are bound to the limitations of modern graphics system design&#8211;to our amazement window systems are themselves very complicated beasts. But while our computation and heavy-lifting parts are migrating to [...]]]></description>
			<content:encoded><![CDATA[<p>In-between the problem of structuring your GUI application at higher order has caught my attention. The glaring problem of multi-core multithreading is trapping us developers. We are bound to the limitations of <i>modern</i> graphics system design&#8211;to our amazement window systems are themselves very complicated beasts. But while our computation and heavy-lifting parts are migrating to the multithreaded world (hey even network connections are in that area already too), GUI code is still confined to either main thread or the thread that created the component/widget in question. You don&#8217;t, can&#8217;t, dare not, ought not, may not pass them back and forth between different threads. How quaint.</p>
<p>In other news C++0x shows its promise with all its new syntactic constructs (many of them condensed form of popular idioms, esp. template metaprogramming) and its inherent support of modern threading control objects. And talk about lambda and better type inference. Hey but a working compiler is still years ahead. And will we be still using gcc?</p>
<p>(But I guess I&#8217;ll still have problem doing GUI stuff with such a strongly-typed language.)</p>
<p>The real challenge is how to formulate, in my opinion, GUI event and graphics model as trasnactionable operations. Animation frameworks like CoreAnimation show the way, but it doesn&#8217;t seem to have become that much generalized yet. GUI programming is in a desperate need of new models that can catch up with the already more advanced, more sophiticated way of (esp. networked) data modeling and manipulation. It&#8217;s such a scandal that database operations can be thought as series of rollbackable transactions but GUI ops cannot.</p>
<p>I&#8217;ll be happy to see the death of the decade-old event-loop model and its rebirth as a higher order construct. Although that seems a call for declarative UI design but perhaps we&#8217;re still far away from that.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/134/feed</wfw:commentRss>
		</item>
		<item>
		<title>[ANN] InputMethodKit Backporting Component for OS X 10.4 Tiger</title>
		<link>http://lukhnos.org/blog/en/archives/131</link>
		<comments>http://lukhnos.org/blog/en/archives/131#comments</comments>
		<pubDate>Mon, 20 Oct 2008 08:31:31 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=131</guid>
		<description><![CDATA[InputMethodKit Backporting Component, or IMK-Tiger for short, helps
input method developers backport their IMK-based input method apps to
OS X 10.4 Tiger. It is what we use to backport the latest OpenVanilla,
a popular input method toolset in Taiwan, to 10.4.
I&#8217;ve posted more details on Cocoa-dev.
]]></description>
			<content:encoded><![CDATA[<p>InputMethodKit Backporting Component, or IMK-Tiger for short, helps<br />
input method developers backport their IMK-based input method apps to<br />
OS X 10.4 Tiger. It is what we use to backport the latest OpenVanilla,<br />
a popular input method toolset in Taiwan, to 10.4.</p>
<p>I&#8217;ve posted more details on <a href="http://lists.apple.com/archives/Cocoa-dev/2008/Oct/msg01400.html">Cocoa-dev</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/131/feed</wfw:commentRss>
		</item>
		<item>
		<title>Some Updates</title>
		<link>http://lukhnos.org/blog/en/archives/127</link>
		<comments>http://lukhnos.org/blog/en/archives/127#comments</comments>
		<pubDate>Sun, 19 Oct 2008 17:47:31 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[announcement]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=127</guid>
		<description><![CDATA[Going to be a really short update.
Now you know that I work for (and actually own) Lithoglyph, and we&#8217;ve just released a new version of Mondrianum, a color picker plug-in that leverages Adobe kuler color theme resources. And this being a few things that we are working on.
At the same time we&#8217;re still thinking hard [...]]]></description>
			<content:encoded><![CDATA[<p>Going to be a really short update.</p>
<p>Now you know that I work for (and actually own) <a href="http://lithoglyph.com">Lithoglyph</a>, and we&#8217;ve just released a new version of <a href="http://lithoglyph.com/mondrianum">Mondrianum</a>, a color picker plug-in that leverages <a href="http://kuler.adobe.com/">Adobe kuler</a> color theme resources. And this being a few things that we are working on.</p>
<p>At the same time we&#8217;re still thinking hard and moving at a slow pace on giving <a href="http://tapexpense.com">TapExpense</a> an upgrade. We&#8217;ve learned a lot three months after the App Store went live, and we are working on putting them in practice. Redesigning, reforming or simply refactoring an existing app is hard, as it turns out. But we are not yielding to the difficulties any time soon.</p>
<p>I really want to apologize for my slowness at doing anything related to <a href="http://code.google.com/p/mobilesync-inspect/">mobilesync-inspect</a>. I believe there are (or should be, but I didn&#8217;t do research) other tools that perform somewhat same tasks, hopefully with better UI. I really don&#8217;t have time to do all the testing and try out the replace-and-restoration scenario myself.</p>
<p>Apparently mobilesync-inspect belongs to some of the worst kinds of the open source software, that it can&#8217;t attract enough developer interest to carry on its development, plus that the original developer (that&#8217;s me) simply doesn&#8217;t have the resource (time, energy, committment) to improve it further&#8230;</p>
<p><a href="http://lukhnos.org/objectiveflickr/blog/">ObjectiveFlickr</a>, on the other hand, seems to fare better. There are lively discussions on how to port OF to iPhone&#8211;cutting off the NSXMLDocument dependency that is. And I&#8217;m glad that there are people interested and enthusiastic enough to do it. My own take would be scrapping XML parsing using NS stack entirely and use libxml2 to render Flickr&#8217;s XML response block a simple dictionary. But again that takes some time to re-do a few things.</p>
<p><a href="http://code.google.com/p/openvanilla">OpenVanilla</a> is under some major overhaul. <a href="http://zonble.twbbs.org">Zonble</a> and I are working on a nearly rewritten version of the OS X loader, this time entirely based on InputMethodKit. One interesting challenge is to backport IMK-based loader to Tiger, as it turns out that the market we want to support (Taiwan mainly) still has 50%-55% users hanging on with their Tiger installations. And we actually have found a solution for that, first applied in some in-house projects that we have at our company. The solution will be released as an open source library shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/127/feed</wfw:commentRss>
		</item>
		<item>
		<title>Continue the journey where he once dropped</title>
		<link>http://lukhnos.org/blog/en/archives/121</link>
		<comments>http://lukhnos.org/blog/en/archives/121#comments</comments>
		<pubDate>Mon, 15 Sep 2008 21:43:41 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[essayer]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=121</guid>
		<description><![CDATA[I wrote my first database application at 11. I was in the sixth grade, and the homeroom teacher needed a way to calculate the scores of each student fast. He was himself a computer enthusiast, first among a new generation of young teachers in Taiwan in the mid-1980s. The school had an early PC/XT (the [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote my first database application at 11. I was in the sixth grade, and the homeroom teacher needed a way to calculate the scores of each student fast. He was himself a computer enthusiast, first among a new generation of young teachers in Taiwan in the mid-1980s. The school had an early PC/XT (the Taiwan-made pirate clone, of course) at his disposal, and he knew one of his students had some gift on making computer work. And that seemed to me, as far as I could recall, how the journey began.</p>
<p>Before the teacher used Lotus 1-2-3. If all you needed was quick statistics, simple averages and sorting, that could be the best tool you needed. But Lotus 1-2-3 was not about bulk data entry and processing. The early day version didn&#8217;t have good group features (later features like pivot tables solved the problem), and the early version didn&#8217;t go with Chinese characters well.</p>
<p>So I wrote a program with dBase III, then the most popular, generic PC database application, and we had run two semesters of scores with it. I heard the teacher continue using it for another few terms, with only minor modifications.</p>
<p>Then for the next two years I wrote another few database applications, all in dBase III and one eventually compiled with Clipper. I can&#8217;t recall every one of them, but the list should include a business contact database, a department expense database, and a clinic patient record database. They all come with a visual user interface, form validation and all. The last of them, the clinic&#8217;s database, had been put in use for at least 5 years and had kept about 20,000 unique patient&#8217;s records, quite a number for a local clinic.</p>
<p>About 20 years later, during a casual talk, mom mentioned this in passing: &#8220;I marveled, why were you able to do the programming?&#8221;</p>
<p>Honestly I didn&#8217;t know and I don&#8217;t know.</p>
<p>Should I say it&#8217;s in the blood &#8230; I still remember the three dBase III books that dad bought for his reference at work, because they started introducing it in their company, and one thing that dBase III was different from similar PC database applications was the programmability, even if it came with crappy language design that was in the middle of no where and performed badly. But it was programmable, malleable and could be bent to the will (slightly) of a 11-year-old. It was magic, among other magical things like MS BASIC, Turbo C and Turbo Pascal.</p>
<p>Only after 20 years am I now finally able to untangle many of the unhappy consequences because of that&#8211;being able to do programming at such an early stage in the mid-80&#8217;s Taiwan. I mean, come on&#8211;it&#8217;s not such a phenomenon now, if we hear now in the late 2000&#8217;s that your neighbor&#8217;s kid knows programming in Python or Process or Mathematica or even in C (I do admit that knowing C deserves more of my amazement though). It&#8217;s not even a thing that you tag with the term &#8220;whiz kid&#8221; anymore.</p>
<p>But I just don&#8217;t think that&#8217;s what happened to me or to a few kids that I knew personally during that time.</p>
<p>If you knew programming as a kid in Taiwan in the mid-80&#8217;s, what was brought out of you could be determined in either of the three family settings. Say you are from a very good family, and your parents and relatives happen to know other people (e.g. university profs) that know what to do with it. Or you are from a rural family where your parents aren&#8217;t college-graduated and they have not a clue what you are doing.</p>
<p>I personally prefer the latter&#8211;although never is such thing a choice that, in the mid-80&#8217;s Taiwan, it was way better if your parents didn&#8217;t know the nature of your doings and you were simply left alone. I find&#8211;subjectively and biased though&#8211;that most people I knew that belonged to that category did the best. Not necessarily in terms of achievement, but in terms of that they later took the path of becoming a programmer or dropped it as some experience (like being able to play guitar or piano, albeit never professionally) and could smile at it.</p>
<p>The former wasn&#8217;t that bad either, but not as good as the latter. Chances are you were thought as a kid good at math and sent to the so-called class for the talented students (we have lots of that kind of thing in Taiwan), or if your parents were business-savvy, your software was packaged and sold. And if your parents were really, really business-savvy (that is, unlike many Taiwanese who blow their easy-come fortune), the money earned from your software would be put in trust, invested other things, and you started a software business world from that modest beginning.</p>
<p>Well, if I do the categorization, I&#8217;d say my family belonged to the third kind: somewhere in the middle. My parents didn&#8217;t really know what to do with it, but being upward mobile middle-middle-class in the mid-80s, they thought&#8211;or they took the advice from their peers&#8211;they could do something out of it, to the worst combination.</p>
<p>So here&#8217;s the ugly thing. My late father used the database software I wrote to try to help his colleagues or superiors. Actually, other than the business contact program which I willingly did for him, the other two apps were results upon his request. Not that he forced me to do it&#8211;I did have developed them with pleasure and fun.</p>
<p>The problem was I was paid naught, except for some perfunctory praises. I don&#8217;t think he got paid too, in the form of the due value, other than the imaginary &#8220;good karma&#8221; in the course of career-wise promotion.</p>
<p>20 years later, I have a better idea how much the app probably valued. A PC/XT clone, with 640 KB of RAM and a 20 MB hard disk drive, could cost at today&#8217;s equivalent of USD 3,000-4,000, a handsome sum. In the mid-80s the doctors were among the most affluent and most technologically savvy class in Taiwan, and they were indeed among the first to introduce personal computers into their clinics. A well-made database application, I was told only later, could be easily sold at USD 5,000-7,000 alone (again, at today&#8217;s value) and there was a demand for such packages&#8211;because there weren&#8217;t many during that time. This all excluding service (though then a rarely-heard concept), upgrading, maintenance and all.</p>
<p>I did have mentioned this to my dad when he was still alive, and later to mom when she mentioned all this in passing.</p>
<p>I can actually understand why we arrived where we were. Dad conceded that running a software business out of it wasn&#8217;t on his mind at all. He was, after all, trying to secure a job and working upwards&#8211;even if that meant he had to please his superior with what he had at hands. For example, I still remembered that I was brought to fix one of his boss&#8217;s computer at 11pm, reinstalling Windows 3.0 with early-day Excel and DOS-boxed Lotus 1-2-3 and all. I don&#8217;t think I was duly appreciated, and neither was my dad.</p>
<p>And mom said, &#8220;Son, really, we didn&#8217;t know what to do. And you never knew what you&#8217;d become even if you had your business plan running. I meant, it was in the 80s, and many whiz kids who earned their fortune did not end up well. Many of them even became lost because of the early fortune and the talent. Ours was not a culture that knew how to treat the precocious gifts well. We&#8217;re still learning, son.&#8221;</p>
<p>She&#8217;s right.</p>
<p>With hindsight, I wasn&#8217;t really troubled by all those under-appreciations that had to do with my database app. It was only after when I got into high school was I then told that writing database app was about big money (at least relatively big to a high school kid&#8211;you usually didn&#8217;t get a good bargaining because people thought it was written by a kid) and this or that senior of ours had made some money out of it. But database app written in dBase III or Clipper or FoxBase (later FoxPro) was despised by peers, because real high school kid learned C++ (then a novelty) and chewed on OOP jargons and boasted their male prowess in assembly language, among many other things (like sports, at which I am eternally awkward).</p>
<p>And then there were other teenage teethings and the troubled youth that I had. Some of them was still caused by the fact that I knew programming, because many teachers thought I should be good at math but I flunked high school math every semester.</p>
<p>I still did quite lot coding, first in C and later in C++, did come up with a few utilities, some half-baked full apps, even a never-finished interpreter of BASIC language with OO add-on&#8217;s.</p>
<p>But I was told, sometimes insinuated, that I was simply and totally unfit for computer science even if that was what I wanted to study at first, then even dad opposed vehemently too the idea of doing CS because he associated the study of computer with the drudgery of PC clone sales and probably (this I gathered only years after) the worthless programming&#8211;tinkering&#8211;that his son had done for his thankless superiors.</p>
<p>And in-between I had read some algorithm and data structure textbooks, read about system software programming and operating systems, computer graphics and software engineering, even some introduction to compiler implementation in C, some by myself, some with the help from a kind senior or teacher. I must have had glimpses of most parts of sophomore or even junior CS classes, but probably didn&#8217;t know when I read them, and throughout wished I had attended a vocational school (which my parents looked down upon, but I really fantasized countless times), because then I could have become more craftsman-like without the need to pass the math, which I flunked, six semesters straight, and being told that as a general high-school student, I was not fit for something I was simply able to do.</p>
<p>I finally gave up programming in 1995 after having finished my first year at college&#8211;I then majored in geography&#8211;and having passed calculus with passable grades (which healed my trauma about high school math). I did find some new passion in human languages and applied for transfer to do foreign langs. Probably once again without much bitterness just as I didn&#8217;t think too much about those database apps. But I did have thought that probably I would never do programming again. I did have closed the books, literally, by throwing or giving away every computer textbook that I had possessed before I was 18.</p>
<p>Thirteen years later, and after having run for the first one year my own software company with client projects and our own products humming, and as we have a modest beginning, and as I didn&#8217;t thought much about the efforts in doing the actual coding work and as mom mentioned in passing her surprise at how I came back, continuing the journey from where I dropped, and I thought, that dad would be proud, and that I have found something back, after all those years on the long and winding road.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/121/feed</wfw:commentRss>
		</item>
		<item>
		<title>Can Tourism Buy Us Some Little Sense of Belongingness?</title>
		<link>http://lukhnos.org/blog/en/archives/117</link>
		<comments>http://lukhnos.org/blog/en/archives/117#comments</comments>
		<pubDate>Wed, 27 Aug 2008 21:29:54 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[bon vivant]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=117</guid>
		<description><![CDATA[Lately the biggest change in my house (where I live with my mom and bro) was that we canceled the cable and subscribed to a local ISP&#8217;s media-on-demand service. We now pay a fraction of the monthly fee. We have less channels, no 24-hour local news, but we get the extra. We now have things [...]]]></description>
			<content:encoded><![CDATA[<p>Lately the biggest change in my house (where I live with my mom and bro) was that we canceled the cable and subscribed to a local ISP&#8217;s media-on-demand service. We now pay a fraction of the monthly fee. We have less channels, no 24-hour local news, but we get the extra. We now have things like DW-TV (Germany), TV5 (France), BBC World, Bloomberg, Arirang TV (South Korean, in English) and Aljazeera. The media-on-demand service isn&#8217;t top-notch, but it&#8217;s like what I think Taiwan should always have had 5-7 years ago. Anyway they fit into my taste, and I happen to be able to watch the German and French channels.</p>
<p>The other day I was watching TV5, and I noticed the program, a science and technology one, was made by CBC, the Canadian (quasi?) equivalent of BBC. It talked about transportation technology and the cityscape of Montreal came on screen.</p>
<div style="text-align:center; margin:1.5em 0 1.5em 0"><a href="http://www.flickr.com/photos/lukhnos/2789649569/" title="Plan du métro by lukhnos, on Flickr"><img src="http://farm4.static.flickr.com/3173/2789649569_2d36a41db4_m.jpg" width="180" height="240" alt="Plan du métro" /></a></div>
<p>I visited Montreal a few months ago and was in love with the city. But my affairs with cities are not confined to that North American gem. Such is the up side if you plan traveling yourself.</p>
<p>One thing I find, this being very subjective, about the cities I love is that they have this or that quality that I want to call it home&#8211;if I can overcome the hurdles of not just being a visitor.</p>
<p>That&#8217;s probably som sense that plain tourism can&#8217;t emit&#8211;the type of tourism, of joing a tour, that we are familiar with. The appeal of a place can come ironicaly from some travails you undergo on the road.</p>
<p>I&#8217;m not sure how those cities do it. They don&#8217;t seem to try very hard on being a places people want to call home&#8211;or if they try, collectively, they aren&#8217;t trying too hard that we see the trace.</p>
<p>On this I reflect on what we do in Taiwan, especially when the government and the tourism industry are calling for more visitors and more revenues generated from tourism. Now I measure the success (or not) of such endeavor by if someone recalls a good trip when s/he sees streetscape in any Taiwanese city and starts to want to call the place home, among the many choices and city affairs the person has in life.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/117/feed</wfw:commentRss>
		</item>
		<item>
		<title>Against To-Do Lists</title>
		<link>http://lukhnos.org/blog/en/archives/101</link>
		<comments>http://lukhnos.org/blog/en/archives/101#comments</comments>
		<pubDate>Fri, 22 Aug 2008 18:42:09 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/?p=101</guid>
		<description><![CDATA[I always have problem with the various methodologies that teach you organizing your own to-do lists. I often wonder what the to-do list of an achieved artist, architect or designer looks like. I even wonder if they ever come up with to-do lists at all.
Don&#8217;t get me wrong. It&#8217;s not that I don&#8217;t make to-do [...]]]></description>
			<content:encoded><![CDATA[<p>I always have problem with the various methodologies that teach you organizing your own to-do lists. I often wonder what the to-do list of an achieved artist, architect or designer looks like. I even wonder if they ever come up with to-do lists at all.</p>
<p>Don&#8217;t get me wrong. It&#8217;s not that I don&#8217;t make to-do lists or I suspect others don&#8217;t. As a programmer I can&#8217;t value the tools too much. Many professions, software development included, require team work and project management. You need all kind of techniques and measurements to ensure the things get delivered.</p>
<p>But I sometimes really question the philosophy of compartmentalizing your core activity, what to-do lists or what the more sophisticated (and widely marketed) schools teach you.</p>
<p>The problem is many activities, creative ones especially, are not the ones you can desire. There are, if you listen to yourself careful enough, I believe, moments in life when you don&#8217;t feel the pressure that you have to do this and this in order to reach the goal. There are moments when you just feel the urge to do something. And there are, sometimes, those very rare moments when you just do something, and only after its accomplishment that you realized you did it. When such moments come, be they the &#8220;feeling the urge&#8221; mode or the &#8220;post hoc realization&#8221; mode, any to-do item becomes self-evident and natural, and there is no such &#8220;I have to do this&#8221; pressure on it.</p>
<p>That&#8217;s why I wonder what people&#8217;s to-do lists look like. I&#8217;ve tried a few personal organizing tools and methodologies, and I was very bad at adopting them. Sometimes I even felt I was adapting myself to them, that is, by definition, modifying my own modus operandi&#8211;even though I wasn&#8217;t sure what it really was&#8211;to fit in their molds.</p>
<p>It turned out that I&#8217;m an organized but indisciplined person. That&#8217;s such an oxymoron. I&#8217;ve tried, twice successfully, to run a period of my life waking up every day at 7 am, jogging for 3000 meters, and starting to working in the morning, and calling it a day by sunset, to my benefits&#8211;I did a lot during those two periods. To get things done. There were a lot of to-do lists. But I wasn&#8217;t very happy because of that. Later on, I found myself organizing best when I oscillate between paper to-do lists, post-it notes, OmniOutliner, text editors (and I use four: SubEthaEdit, TextMate, TextEdit and vim) and Notes.app on my iPod Touch. Usually I run my &#8220;to-do app&#8221; on one of those tools for a while, then move on to another in the next period, and the cycle goes on. That&#8217;s what I mean by &#8220;indisciplined organization&#8221;: I&#8217;m not bound by an overarching methodology to run my own life. And I am happy with it.</p>
<p>But there are sometimes those periods of life where I was occupied entirely by one project, or sometimes the situation became that I was so busy and I didn&#8217;t even have time to do to-do list. I was knocked out of doing them. And many times the post hoc realization has been that I was even happier because I didn&#8217;t need to be driven by to-do lists.</p>
<p>That&#8217;s how I start to wonder if there are differences between &#8220;having to do&#8221;, &#8220;wanting to do&#8221; and just &#8220;doing&#8221;. In any case I become more skeptical about the promises that organizing methodologies make, because they probably don&#8217;t work well for everyone.</p>
<p>Yea, perhaps I&#8217;m an oddball.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/101/feed</wfw:commentRss>
		</item>
		<item>
		<title>Extracting iPhone Backup Data with mobilesync-inspect</title>
		<link>http://lukhnos.org/blog/en/archives/99</link>
		<comments>http://lukhnos.org/blog/en/archives/99#comments</comments>
		<pubDate>Wed, 06 Aug 2008 12:38:12 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/archives/99</guid>
		<description><![CDATA[I wrote a command line tool called mobilesync-inspect that can list, extract, replace and backup your iPhone/iPod Touch (hereafter I use iPhone to represent both devices) backup data.
To download the prebuilt binaries for Mac OS X and Windows, use this link.
It is well understood now that iTunes backs up the application data on your iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a command line tool called <a href="http://code.google.com/p/mobilesync-inspect/">mobilesync-inspect</a> that can list, extract, replace and backup your iPhone/iPod Touch (hereafter I use iPhone to represent both devices) backup data.</p>
<p>To download the prebuilt binaries for Mac OS X and Windows, use <a href="http://code.google.com/p/mobilesync-inspect/downloads/list">this link</a>.</p>
<p>It is <a href="http://twitter.com/chockenberry/statuses/861133242">well understood</a> now that iTunes backs up the application data on your iPhone in one of your user directories. It is not yet well understood exactly how iTunes makes use of such data, and why the backup/restore process is so slow.</p>
<p>What mobilesync-inspect differs from other similar tools, say, from <a href="http://code.google.com/p/iphone-backup-decoder/">iphone-backup-decoder</a>, is that it&#8217;s duo-platform. I have prebuilt both Mac OS X and Windows versions, in the hope that it helps Windows iPhone users out there. Although iphone-backup-decoder is written in Python, installing Python on Windows and run the script is not trivial matter for the less technically savvy (or people who are busy).</p>
<p>Of course there&#8217;s still a hoop to jump: mobilesync-inspect on Windows requires some DLLs from <a href="http://www.apple.com/safari/download">Safari for Windows</a>. But once you have Safari installed, it&#8217;s really just four files to copy, and you&#8217;re all set. Plus mobilesync-inspect provides more than backing up backup data.</p>
<p>We have heard a lot about <a href="http://discussions.apple.com/thread.jspa?messageID=7740785&#7740785">app data loss after App Store upgrades</a>. It&#8217;s disheartening for me to learn that iTunes <b>did not make versioned backups</b>. If your app is zapped during the upgrade process (this mostly happens if your Internet connection is not stable between the different upgrade stages) and you inadvertently sync your iPhone with iTunes, iTunes will faithfully zap your app along with your app data. It&#8217;s <a href="http://discussions.apple.com/thread.jspa?messageID=7743672&#7743672">quite scary</a> if the app in question is about personal finance data (like what <a href="http://tapexpense.com">my app</a> is about), to-do lists or password reminders.</p>
<p>One last note: mobilesync-inspect is <a href="http://code.google.com/p/mobilesync-inspect/">open source</a>. I probably won&#8217;t have too much time taking care of this side project apart from my daily work. I hope that other developers will be interested enough in making use of it to, for example, build a GUI tool for inspecting and manipulating the backup data. For those interested how and why its Windows version requires Safari, the answer is short: to be able to do cross-platform, mobilesync-inspect is written in C++ and makes use of Apple&#8217;s own <a href="http://developer.apple.com/corefoundation/">CoreFoundation</a> library to do the mdbackup data I/O (itself in Apple&#8217;s own property list format). Frankly I think Apple should put CF for Windows in circulation (currently it&#8217;s quite restrictive, tied to <a href="http://webkit.org/building/checkout.html">WebKit</a>), because it&#8217;s a well-designed general-purpose library (think of <a href="http://library.gnome.org/devel/glib/stable/">glib</a> with Apple flavor) and makes <a href="http://developer.apple.com/opensource/cflite.html">cross-platform dev</a> experience far better on Windows.</p>
<p>Also: <a href="http://discussions.apple.com/thread.jspa?threadID=1649845&#038;tstart=45>my post</a> on Apple&#8217;s own discussion forum for developers on this subject.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/99/feed</wfw:commentRss>
		</item>
		<item>
		<title>The Risk Factor</title>
		<link>http://lukhnos.org/blog/en/archives/98</link>
		<comments>http://lukhnos.org/blog/en/archives/98#comments</comments>
		<pubDate>Wed, 23 Jul 2008 01:47:15 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[tekhnologia]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/archives/98</guid>
		<description><![CDATA[I mentioned among a series of tweets that the risk for developing an iPhone app is becoming pretty high lately. The biggest problem is that there&#8217;s no guarantee that the user&#8217;s data is safe in these respects:

There&#8217;s no guarantee that iTunes performs faithful, controllable, restorable backups for any data stored in an application&#8217;s virtualized ./Documents/ [...]]]></description>
			<content:encoded><![CDATA[<p>I mentioned among <a href="http://twitter.com/lukhnos/statuses/865692182">a series of tweets</a> that the risk for developing an iPhone app is becoming pretty high lately. The biggest problem is that there&#8217;s no guarantee that the user&#8217;s data is safe in these respects:</p>
<ol>
<li>There&#8217;s no guarantee that iTunes performs faithful, controllable, restorable backups for any data stored in an application&#8217;s virtualized ./Documents/ folder</li>
<li>Even if it&#8217;s possible for a more technically savvy users to <a href="http://twitter.com/chockenberry/statuses/861133242">extract the backed-up data</a> (and we&#8217;re discounting the factor that there is iTunes for Windows and I don&#8217;t have much clue how we existing Mac developers are going to deal with that, other than offering service utilities for Windows), there is, AFAIK, currently <i>no way</i> to put the backed-up data back into an app bundle as the user wishes</li>
<li>Many developers (among them <a href="http://furbo.org/2008/07/14/bugging/">Craig Hockenberry</a> and <a href="http://inessential.com/2008/07/15.php">Brent Simmons</a>) have expressed the frustration over the fact that we developers <i>have absolutely no means </i> to help the user out of any trouble. Releasing an app in wild becomes playing with Russian roulettes.</li>
</ol>
<p>My biggest fear is that if the situation doesn&#8217;t improve, these risk factors will swell up to the point that supporting becomes endless nightmare for developers, and many data-intensive apps will become simply not do-able&#8211;because users won&#8217;t trust them with their local data. Some forms of liability issues will also surface.</p>
<p>And if the situation doesn&#8217;t really improve, I fret that those factors will start driving out applications that rely on local data (many productivity apps fall in this cateogry), leaving only three do-able apps: games, web service clients, and photo apps (because they have access to the camera roll).</p>
<p>Games and photo apps are by their nature platform- and device-dependent and they will always have a place as native apps. But the driving-out of native productivity apps, local-only or more &#8220;rich&#8221; (i.e. they sync or work with remote ends), will make the point of going native a huge disappointment. If that is what&#8217;s going to happen in the long run, it will be a big setback for the whole point of a native iPhone SDK.</p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/98/feed</wfw:commentRss>
		</item>
		<item>
		<title>TapExpense: Our First iPhone Application</title>
		<link>http://lukhnos.org/blog/en/archives/97</link>
		<comments>http://lukhnos.org/blog/en/archives/97#comments</comments>
		<pubDate>Thu, 10 Jul 2008 20:29:22 +0000</pubDate>
		<dc:creator>lukhnos</dc:creator>
		
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://lukhnos.org/blog/en/archives/97</guid>
		<description><![CDATA[
TapExpense is available on Apple&#8217;s iTunes AppStore today. It is a nifty expense tracker designed for the financially fastidious and global trotters. It lets you keep records of expense in different editable categories, payment methods, and most important of all&#8211;different currencies. It also gives you reports grouped by currency.
The idea of a multi-currency expense tracker [...]]]></description>
			<content:encoded><![CDATA[<div style="border: 0; margin-1em; display:block; float:right"><img src="http://farm4.static.flickr.com/3292/2656571692_94851979fc_o.jpg" style="border:0"/></div>
<p><a href="http://tapexpense.com/">TapExpense</a> is available on Apple&#8217;s iTunes AppStore today. It is a nifty expense tracker designed for the financially fastidious and global trotters. It lets you keep records of expense in different editable categories, payment methods, and most important of all&#8211;different currencies. It also gives you reports grouped by currency.</p>
<p>The idea of a multi-currency expense tracker comes from my personal needs. I&#8217;ve been keeping expense records since 1994, and from 1996 on not a day without a record. I only use Excel for its power and flexibility.</p>
<p>But keeping expense records with Excel can be an overkill sometimes. You don&#8217;t want to open your laptop for that when you&#8217;re on the road. So iPhone/iPod Touch is a nifty solution to this. Hence the software. And also because I travel often, keeping records in different currencies is a problem. A good tool that accommodates and groups such information is a bonus.</p>
<p>Zonble and I have been developing this application for the past few weeks. It&#8217;s our first commercial iPhone application, and we&#8217;re both glad and proud to be part of the historical launch of the AppStore&#8211;the first in the industry&#8211;among the first 300-500+ applications on Day 1 from midnight New Zeland time, July 11, 2008. (The number varies according to availibility of different apps in different countries).</p>
<p>This is our first modest step. And we&#8217;re still learning from the process. A lot. We are already receiving reviews and comments. We&#8217;ve already submitted version 1.1 and are working (or even reworking) on many different parts of the app. Simple as the idea looks, only by doing it have we realized that there are so many details and nuances. Plus that touch-based device requires a totally new mentality and modus operandi. We have actually unlearned lots of our Cocoa habits and skills along the way.</p>
<p>We also have a lot of open questions for Apple. Questions on how the business model will cater different needs, particularly those of us small independent software vendors. I believe even Apple is learning from the process. This is an interesting relationship, and might even shake the rules of the game in mobile software development.</p>
<p>It&#8217;s an exciting time indeed. For some moment I even felt it&#8217;s like Christmas in July.</p>
<p>Once again, my thanks to our customers and our friends. We&#8217;ll bring the best of ourselves to give you the best mobile phone apps in the world.</p>
<p>Cheers!</p>
<div style="margin-top:0.5em"> </div>
<p><i>TapExpense is available at Apple&#8217;s AppStore. It&#8217;s US$4.99, 3,99 €, £2.99 or ¥600 according to the region. It runs on both iPhone 2G, 3G and iPod Touch and requires iPhone OS 2.0. Currently it lets you export your data as plain-text .CSV to an e-mail. We&#8217;re working on enhancing user experience, security features and possible import/export options.For more info visit <a href="http://tapexpense.com/">tapexpense.com</a> or <a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=284938053&#038;mt=8">the link to the AppStore</a>. Developed by Lukhnos D. Liu and Weizhong Yang with the support of Lithoglyph Inc. </i></p>
]]></content:encoded>
			<wfw:commentRss>http://lukhnos.org/blog/en/archives/97/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
