Month: 2004/12
-
2004 December 23
-
Building an Address Book as a Modern Web App
So, in the spirit of pico-projects, I've started building that address book application I mentioned awhile ago and I want to start writing about it as I go. First off, hopefully you'll notice the quick diagram I threw together in OmniGraffle. This is a sort of rough sketch of the loosely-joined architecture I want to explore with this thing. Data: This is where address book entries live. Model: A set of objects encapsulating the data, this is how address book entries will be accessed. REST API: Model objects exposed as resources identified by URI, serialized and deserialized as XML, and manipulated by GET / PUT / POST / DELETE methods. XSLT Filter: XML data produced by REST API calls can be first passed through XSL at a given URL before being served up as a response. HTML, CSS, JavaScript: Thanks to the XSLT filter layer, the XML vocabulary used to describe address book entries can be transformed into user interface presentation. HTTP: Everything happens via HTTP... Web Browser Client: ...and everything is viewed in a web browser. Now, I call this a loosely-joined architecture because I want to stress that you should be able to swap out just about any part of this whenever you want. Want the Data to be in MySQL? Fine. Want it to be in flat files? Fine. Just make sure the Model can cope while maintaining a consistent interface for the REST API. Want to change the user interface in the browser? Great-- ideally, all you have to do is change some XSLT files. I'm writing everything from the XSLT Filter down to the Model in Python. Don't like that? Fine. Rewrite it all in Perl, and hopefully everything from the XSLT up to the browser will still be useful to you. At some point, you might even want to ditch the browser for a native desktop client. Fabulous! Just ignore everything past the REST API and HTTP, don't use any XSLT in the Filter, and use the API and XML directly. I don't think any of this is particularly revolutionary-- although I thought it was when I first saw Amazon Web Services doing some of this, and I hope to throw a little GMail in as well. I hope that this will all be useful as I muddle through explaining what I'm doing. In the meantime, you can see me getting the stage set as I start checking things into my Subversion repository over here: http://www.decafbad.com/svn/trunk/hacks/abook/ [ ... 712 words ... ]
-
2004 December 16
-
Synchronet BBS Software, Tidal Pools, and On-Ramps
Synchronet Bulletin Board System Software is a free software package that can turn your personal computer into your own custom online service supporting multiple simultaneous users with hierarchical message and file areas, multi-user chat, and the ever-popular BBS door games. ... In November of 1999, the author found a renewed interest in further developing Synchronet, specifically for the Internet community, embracing and integrating standard Internet protocols such as Telnet, FTP, SMTP, POP3, IRC, NNTP, and HTTP. Synchronet has since been substantially redesigned as an Internet-only BBS package for Win32 and Unix-x86 platforms and is an Open Source project under continuous development. Source: Synchronet BBS Software This software deserves so much more attention. It's like an old-school BBS, complete with ASCII/ANSI menu screens and everything, but it's been modernized: It offers a slew of Internet protocols integrated with the message bases and file areas. It's got an HTTP daemon with server-side JavaScript. It works on Win32 and various Unix platforms. Everything above is true. And it's open source. In the 90's, I would have expected software like this to be at the core of a startup company stuffed with superfluous and overpaid code monkeys. It would have turned into an Enterprise Application Server or Intranet Knowledge Management Solution-- a mini Domino or Lotus Notes. And, in fact, I seem to remember seeing a few old-school BBS packages get mutated and gigantified by the dot-com radiation in this way. I keep meaning to get a Synchronet BBS up and keep it up, and maybe get a few interested users logging in, if only for the retro-gaming experience for things like Trade Wars, Barrent Realms Elite, Legend of the Red Dragon, Global War, and anything else I can find. I really miss the tidal-pool effect BBSes had back in the day, when in my area they were the first and best gateways to the Internet. Direct SLIP and PPP access to the net were rare things still and, before the web took off, Usenet and IRC were some of the best things around. But, anyone who wanted to get the the net had to wander through the local BBS first. It was really neat to see the mish-mash of people all drawn together by geographic areas denoted by telco area codes. The degree of Aspergers affliction and just plain dysfunctional nerdity gradually decreased as sisters and friends-of-sisters were introduced to terminal programs and teleconference. It was sad to see all of this gradually die off as more and more callers came in via SLIP/PPP dialers and headed straight for the information superhighway on-ramps. All the gift shops closed up and no one showed up in the café anymore. Sigh. But, at least Finland isn't a long distance call these days. [ ... 622 words ... ]
-
2004 December 13
-
Miscellaneous Thoughts about Exploded PCs
[ ... 371 words ... ]
-
On Exploding PCs and Appliance Relationships
[ ... 1363 words ... ]
-
The Meta Lathe
[ ... 1030 words ... ]
-
Security and the State of the Computer
[ ... 943 words ... ]
-
2004 December 08
-
Mr. Gruff
[ ... 44 words ... ]
-
2004 December 07
-
2004 December 05
-
Unopened Apple iPod 20GB for sale
[ ... 129 words ... ]
-
2004 December 03
-
If you snore, get tested for sleep apnea. Now.
[ ... 4877 words ... ]
-
Cross-breeding XSLT and ZPT
I've recently been doing some side work involving Zope and, along with the rest of the suite of technologies it offers, I've been happy to be working with Zope Page Templates again. I dabbled with them a bit when they first came out, and a Zope-free implementation named SimpleTAL was one of the core components of the iteration of my news aggregator which came before FeedReactor. Out of all the templating and content generation approaches I've used, Zope Page Templates are my favorite yet. Pretty expressive, yet unobtrusive; nicely powerful, yet not quite something with which you'd want to write an entire application (and that's a feature, not a bug). I've yet to be in a work-a-day team that uses ZPT-- but I can see where a lot of production, delegation, and integration issues would have gone much smoother had I used ZPT instead of Template Toolkit for the web app framework I created at a previous company. (Though I do have to say TT2 is very nicely done!) And where I am now, I spend most of my days trying to pummel ASP 3.0 pages into some semblance of logic/presentation separation-- I would certainly dive at the chance to dump VBScript and <% cruft %> for a bit of Python and ZPT. (But, you know, it's a living.) A close second favorite is XSLT. I've really been hot on it lately, having worked it into the core of FeedReactor in place of SimpleTAL. And in other hacks, I've really come to appreciate it's role as a filter segment in pipelines between REST web services and URL-as-command-line invocations. Granted, both ZPT and XSLT very different technologies, but they are often used in similar contexts. More than once, I've wished that XSLT was as simple as ZPT (i.e. less verbose and intrusive, more document centered), and I've wished that ZPT had some of the features of XSLT (i.e. ability to be used as a transforming filter). Reading Ryan Tomayko's description of Kid got me thinking, and googling. One thing I turned up from a mailing list archive asked about an “XSL implementation of TAL?” It struck me as a tad nutty at first, but then I started having inklings that just maybe it could be done. (Whether it should be done, well...) But the kernel of the idea grabbed me: Instead of using TALES path expressions to look up values in Pythonic space, why not use XPath expressions to look up values from a supplied XML document? This strikes me as such an obvious idea that someone has to already have done it and possibly rejected it for good reason. On the other hand, maybe this is the sort of thing Ryan's thinking about-- I wonder how hard it would be to hack this into Kid? It would give only a subset of XSLT's capabilities in trade for simplicity, and would only offer the “pull” approach, but it would give XML-pipelining to a ZPT-ish technology. I think this is something I want to look into a bit further at some point. [ ... 1167 words ... ]
-
2004 December 02
-
Where's the Froogle API?
You know what I was just thinking? Why doesn't Froogle have an API like Amazon? It's nearing Christmas again, and other than my occasional hacking activities, now is when my Amazon wishlist gets the most play. Well, that and on my birthday. But, since my mind's been on shopping a bit, I've been checking out Froogle. Did you know that Froogle has wishlists? Man. I knew that back in the mid-90's I should have gone with that great business idea I had for making a site devoted to wishlists and aggregated shopping, maybe make some cash off affiliate fees. But anyway, now that I see Froogle's doing it, I have the notion to migrate my eight pages of wishlist items over to Froogle. But, no! There's no API, and I'm feeling too lazy to hack any screen scraper web robots together. So. I'm probably weird for this being the deciding factor, but for now, Amazon retains my patronage. Funny thing is, although it's a mild form of data lock-in, Amazon does have an API and I can scoop up my wishlist items whenever I feel like it. It's just that there'd be no convenient place to put them right now. [ ... 228 words ... ]