As I was drifting asleep last night I was fixated on my recent changes toLifeFlow，并思考我使用软件的快乐。有一些关于使用软件并确切地了解它的所做什么让我对我更有趣的事情。当你坐在那里并思考“当我将我的光标移出这个textarea时，它正在在后台执行XmlRequest以节省新的变化。”当您注意到标记页面要加载的速度有多慢时，并且致不掩盖最终绕过以解决Abysmal实现。
Yes, I know about the evils of rewriting software that doesn't need to be rewritten, but the flexibility of knowing exactly what I need to do to add a new feature I want--or more efficient support for my personal workflow--these things really make using software more pleasurable for me.
To finish this entry, lets take a brief guided tour through the software that I have written that I use on a frequent basis. In chronological order:
The winter break of my senior year as an undergraduate I decided that I was going to really make an effort at writing a useful program using Common Lisp. As a student I was spending a lot of time taking notes, and thus努力被融入存在over the ensuing month.
I wrote it using Steel Banks Common Lisp, and the Ltk graphical toolkit (a Lisp interface to Wish/tk).
Its a simple enough app, but a fairly useful one. Everything is based on a simple tree structure. Each node can have associated text and any number of children. It saves tree structures using simple linked lists. Each node has its raw text, its children, and its formatting data saved. It applies the formatting data to the raw text each time it is loaded. (The text formatting aspects were certainly the most challenging parts, I think largely because I had a crucial misunderstanding about the tk text widgets, which it took me a long time to finally understand.)
它有一个simple little module system for adding additional functionality, the example of which is a nice little "export to html" module I wrote that exports the node structure to interlinked webpages with all of the formatting intact.
I don't make a whole lot of use of this little project anymore, but I did use it to take notes for the last semester of college. It was my first program I wrote with enough functionality to actually use, so it holds a fond spot in my heart.
The second program I wrote that I still use (and this one I use daily) is my Japanese dictionary app, which I tenatively namedNihongo Flow, but then realized that was probably a little sillier than I could stomach. Then again不愿透露姓名的日本字典doesn't really scream out "buy me" either.
我在OSX 10.4上使用Pyobjc写道。数据库是从XML解析为SQLite3数据库的JMDict字典文件。这是我的第一个蟒蛇程序，所以在代码结合之前经历了几个迭代，我可能希望在继续工作之前重写大多数代码（虽然我在百货器上由于大多数工作的那一刻似乎与默认情况下包含蜂波的OSX 10.5似乎紧密相关）。
I wrote it during a two or three week span the Spring semester of my senior year of undergraduate.
It does English to Japanese lookups, and Japanese to English. Instead of asking you what language you want to use for lookup, it infers it (that is, ah, probably too snobby a word for this situation) by looking at the incoming text. If its in hiragana, katakana or kanji then it searchs J->E, if its in roman letters it searchs E->J. If I was still actively developing it I would have it evaluate incoming roman letters to search for romaji words and then search in both English and Japanese for those cases.
It does flashcards, vocabulary lists, tests, and a few other things. Its a pretty fully featured program, and was intended as an independent learning tool for people studying Japanese. Like I mentioned, I use this daily since I am living in Japan, and its a solid dictionary.
Another program that I use a lot, by far the most of anything I have written, isLifeFlow, which is the blogging software I use for this blog. I won't go on about it since I seem to spend a good bit of time talking about it already.
It has grown a whole lot over the course of its life, and is a fairly full featured blogging agent at this point. Soon with the completion of the LifeFlow Editor it will be a piece of software that I am pretty pleased with.
Using Your Own Software
What software do you use that you have written yourself? Do you think that using your own software is just an ego-trip, or is it sometimes a justifiable and reasonable thing to do? I'm curious to hear other people's thoughts about this.