January 24, 1976. That's when I was born. 8 years later came the birth of the Macintosh. My baby sister was born on April 29, 1978. 17 years later and we have a newborn Tiger.
I'm also proud to announce a new member of the ¡nkspotting family: WikityWidget is a widget for one of the new parts of Mac OS X, the Dashboard. As the name implies, it's a wiki. Back in November, Apple announced a contest for Dashboard widgets. My recent fascination with Gmail had left me itching to see what I could do with JavaScript. At the same time, I had discovered SQLite and was learning the wonderful world of SQL. But let me go back a few years...
I've always been obsessed with information retrieval. Maybe it's because I'm not much of a note taker. I try to keep everything in my head for a few reasons:
I was also introduced to this internet thing at a young age. See, my mom is a bit of a bookworm so she made sure I knew how to use a dictionary and encyclopedia just about as soon as I knew how to read. My dad, on the other hand, was a bit of a computer geek, so he made sure I knew how to use CompuServe just about as soon as I knew how to type (Apple ][, MathBlaster, TurtleGraphics, AppleBasic, represent). Information overload from the moment you're born. I increasingly turned to computers to help manage the information. My first attempt was something I called Brain Dumps. Periodically, I would just write down everything i could think of into a plain text file, then just search that file for keywords (I eventually learned regular expressions) to retrieve some bits. That didn't scale to well, so I tried creating a bunch of different files and grepped the lot of them. Better, but it didn't really solve the big problem, most of my notes were just references to page numbers in books, and by this time there were a growing number of references to URLs.
So version 3 of the brain dump became what we would call tagging these days, or what I would call tagging at least, since I use computers — not spray paint. I would tag notes inline, a web url, a file url of a paper I'd written, or a page number in a book on my shelf. This system was a winner for me. I still forgot to pay my phone bill because I never used my phone, but I was able to keep track of a lot more stuff.
Which brings us back to now. I'm not sure when i discovered wiki, but it was probably when I started learning new programming languages for fun and profit. I'd search for something and end up on a wiki somewhere. At first I didn't even know that I was actually browsing a wiki. I gradually became more aware that a lot of disparate URLs contained the word 'wiki' in them. Curious, I learned a little more about wikis and things started to click. Link to other places by name instead of address, let the software figure out the address. Woohoo! One less thing to remember, more space for Seinfeld references.
Most people would say that the great thing about wikis are their collaborative nature. To me, that's their secondary functions. I think the strength of wikis lies in their ability to automatically organize and categorize bits of information. If the information set I'm dealing with is a public and shared, then wikis can handle that, but if the content is private, then the wiki can organize that for me as well.
Wikis are cool. The Wikipedia is cool. There's a somewhat high barrier to entry for setting up your own wiki though. Hopefully WikityWidget will lower that barrier and you'll be able to wikify your digital lifestyle. There's more to come, so I encourage you to support my efforts with whatever means are at your disposal.
- michael
I'm tired of the whole Konfabulator/Dashboard thing. Yes, they look eerily familiar. Yes, they both make it easier to create little applets. Yes, it's a little bit easier to create a Dashboard thingamajig than a Konfabulator whatchamabob. They both fail.
Back in the classizoic age, there was this thing called OpenDoc, a component framework developed by Apple, IBM, and others. This was circa 1996 when Apple was rudderless, but still producing some great tech (OpenDoc, Newton, V-Twin). Cyberdog was Apple's manifestation of the OpenDoc technology. I've always struggled to explain just how cool Cyberdog was. Maybe that's part of the reason why it never really took off. To put things in context, this was back in the middle of the browser wars, when sites had Netscape Now banners and you routinely had to switch from one browser to another just to load the page (as opposed to today where some sites just look different depending on which browser you're using). In that world, convincing people to use a little known browser on a minority OS just wasn't feasible.
Now that I think about it, Cyberdog was one of the first embeddable html renderers. I don't think 'embeddable html renderer' was in most people's vocabulary 8 years ago. In retrospect, I should have tried a photoshop/illustrator analogy with the art student. You launch Cyberdog and you have this empty canvas and tools palette. Instead of drawing tools in that palette, you have a Web Browser, a Mail Reader, a News Reader, a Text Editor, a Picture Viewer, etc. You drag a browser to your document and type in a url. You drag a newsreader into your document and type in a newsgroup name. You point a mail reader to one of your mailboxes. Move them around a resize them.
Now, you might ask, why would I want to do that? I would be glad that you asked because it would give me a chance to wax nostalgic about all the cool documents I made. I used to be on a few mailing lists and newsgroups devoted to science fiction. New releases, reviews, discussions, those sorts of things were the topics in those forums. I had a mailbox for that mailing list, so I threw it in a document along with a newsreader for that newsgroup. I threw in a web page that reviews of new releases. I threw in a text editor that pointed to my reading list. Voila, a dashboard for my reading habits. I didn't have to create any html/xml/javascript widgets, I just dragged and dropped and entered url's
My favorite example is one I created for a Classics paper on the Aeneid/Odyssey/Inferno. An editor for my paper, a browser pointing to MIT's online text version of the Aeneid for quote searching, and a browser pointing to an online dictionary/thesaurus. It was probably the best paper I wrote in college, and not because I'd read each book 3 times before taking that class, but because I didn't lose my train of thought while context switching from original text, to dictionary, to paper, and so on and so forth. It was a really efficent way to work because I was able to create the exact workspace that would benefit me the most.
I was never able to convince people to use it, and OpenDoc was killed off when Apple killed off technologies right and left when it acquired NeXT. There was also a pretty steep learning curve to build a custom OpenDoc component. However, there was almost no ramp up to creating these compound workspaces, these dashboards if you will.
Back to Konfabulator and Dashboard and their doohickeys, it's all about taking information that changes and displaying it in a useful way. The first web page i created was all about server side includes so I could gather all the info i wanted in one place. Then came the whole personalized portal craze. I played with One Click and PreFab Player to create widgets and use the one's other people made.I was a Cyberdog junkie. I played with Konfabulator when it came out, but for all the prettiness of (some people's) Widgets, it's clunky. I also think it's a lot harder to create a Widget than a Cocoa application, but that's probably because I'm a coder, not an artist. Honestly, I think this was where Konfabulator failed. It's not extensible. While Konfabulator might be innovative on some level (and I believe it is innovative, just not original), one can notbe truly innovative when creating a Widget because you're limited to the toys Arlo and Perry give you. With Dashboard, we get the display possibilities of HTML+ and browser plugins, and the coding possibilities of the entire Cocoa framework (which pretty much means the entire OS). It will be cool, not just pretty.
It's been argued that there are really only seven types of stories authors can write. I think there's a similar heuristic for computer applications. Every program is derivative of something, just like in literature, just like in music, just like in food. I'm damn glad you can't patent those seven stories, a drum beat, and using garlic in food.
I finally took a break from notation and got around to writing my own cms for this here journal. Prodding courtesy of waferbaby. I guess I didn't really take a break from notation so much as I needed more ways to test it that would get me to start using it every day. To tell the truth, this is kind of a stop-gap measure because I wasn't entirely happy with Movable Type and it does things that I don't really want. I looked at some other solutions, but ultimately decided that:
I feel the need to explain my attitude towards 'open source' and 'free' software, and by open source and free I mean software that I can legally obtain the source code for and use however I want. I do this all the time, libxml2 and libxslt for notation, sqlite for something else, not to mention all the example code i've borrowed (with attribution) over the years. These bits of code that I do reuse (along with the components I've developed myself) are designed to be embedded in other applications. The weblogging packages I've looked at seem to be designed as applications you can extend. This is a very worthwhile goal and I firmly believe that all applications should have hooks for plugin type extension, but ¡nkspotting is not a cms plugin, nor a skin on a cms application, it's an application in it's own right. That application just happens to contain a log.
Now, you could say that these packages are in fact libraries because you can embed them. You can also run these packages as daemon-like applications and use them via xml-rpc. I considered both of these approaches and managed to hack up a workable solution to my problem. It's a testament to the flexibility and power of html, xml, xslt, and php/perl/whatever that I was able to get all the extra metadata I wanted into and out of these packages, but it was abuse of the system.
There's a line somewhere. On one side of that line lies a novel use of a package which the original creator never thought of. On the other side, there's a user forcing the system to do something it wasn't designed for. It works, but it's fragile because it relies on certain assumptions that could become invalid at any moment. I found myself on the latter side of the line when looking at weblogging software.
So here we are. ¡nkspotting 1.0, not the first version of the site, but the first version of the application.
<?php class ¡nkspotting; ?>
Invented here.