argv0.net 2005/3

2005-03-23

More Pycon

Another fun day at PyCon. Lots of great talks, most notably Donovan Preston's talk on Nevow, and Bob Ippolito's pair of talks on pyobjc. I missed the PyPy and Type Inference talks due to a hair-on-fire work emergency, so hopefully they got that one on tape.

Ted Leung is keeping notes of the presentations, taken by various Pythonistas using SubEthaEdit, a collaborative editor that lets multiple users take notes over a Rendezvous network. I'd never used it in that fashion until today, and was very impressed by how powerful it was

Finally, if you're in the DC area and like beer, check out The Brickskeller (warning: horrible web design ahead). They have over 1000 different bottled beers from all over the world. I had some local DC ales, which were really good, and a few funky Belgian ones. Definitely a great spot, but probably not amenable to the 20+ dinner groups that conferences like this seem to spawn.

posted at 22:05:36    #    comment []    trackback []
 
2005-03-22

PyCon

I got to the convention center today around 2, after walking about 4 miles in the wrong direction from my hotel. While I was on the plane, the Twisted/Divmod folks released Twisted 2.0 and Nevow 0.4, which is very cool, of course. I'll probably use Nevow 0.4 in Minnow (which I'll put up for download soon, I promise).

I spent some time rounding out the XML-RPC APIs for Minnow (a rant on the state of those APIs later), and hacking together a couple quick CRUD screens for web-based weblog administration.

Anyways, it was great meeting/seeing everyone - what a great community! All the sprint rooms are packed with all sorts of different people, old and young, hacking together, Quite a sight to behold- I don't think any other language has such a vibrant and active community..

posted at 23:16:00    #    comment []    trackback []
 
2005-03-21

PyCon Bound!

I'm all packed, ready to hit the sack and make my way to DC in the morning. I should be over by the convention center around noon, so look out for me :)

posted at 23:58:40    #    comment []    trackback []
 
2005-03-20

Minnow!

Check out a demo install of Minnow, the blogging tool I've been working on for the past couple weeks.

posted at 23:18:08    #    comment []    trackback []
 
2005-03-11

More Minnow

I've been quietly making progress on Minnow in the past couple of days, gradually turning my prototype into a real application. Among other things, I've ditched Kid for Nevow, and have implemented enough of the XML-RPC APIs to submit posts from MarsEdit. I'll set up a project site sometime this weekend, and maybe even try to get a 0.1 release out before/around/after PyCon.

posted at 00:37:04    #    comment []    trackback []
 
2005-03-10

Whither Python-URL?

Just curious... I miss my daily fix.
posted at 13:48:32    #    comment []    trackback []
 
2005-03-08

Minnow

Naming software is one of the hardest parts of my job. I think it's hard for everyone (at least in Python-land, judging from the amount of Python software named PySomethingOrOther). So I'm naming my yet-to-be-written blogging package Minnow, after my cat. Now we can move on.

I'm really thankful for all the feedback I've received regarding features. It will certainly help guide me as I design this thing. I'd love to hear more ideas.

Here is a rough list of features/design goals I've adopted so far

  • REST-based HTTP api: A tag search should be possible using something like http://myblogaddress.org/tags/tag1+tag2 (Shawn Wheatley)
  • The other ReST: Minnow should parse ReStructuredText, including easy highlighting of Python code snippets.
  • Multiple posting interfaces: Minnow should accept posts from editors like MarsEdit, from the commandline, the web, or email.
  • Easy deployment: I like the flexibility of the Roundup issue tracker in this regard. Robust commandline tools for creating and managing blog "instances".
  • Standard features: RSS, tags, search, archives, trackbacks, comments, etc.
  • Nifty features: Maybe a built-in moblog, integration with del.icio.us, who knows.

There's still some open ends. How much effort, if any, should be spent on different storage backends? I think I'm willing to accept whatever SQLObject offers, which is most open-source RDBMS's. I could add another thin layer above SQLObject and support things like a textfile backend, but that can always be done later.

How important is the ability to generate static HTML, or can the whole thing be dynamic?

What about presentation? Right now, I'm prototyping using Kid, which I'm really liking so far. I suppose as long as theres a nice API for the data model, replacing the templating system will be trivial for those who want something else. For the first version, users will have to be comfortable with seeing some exposed wires, as there probably won't be any higher-level 'skinning' facilities than the page templates themselves.

I realize that the number of dependencies is quite large (Twisted, SQLite, PySQLite, SQLObject, Kid... whew.. that is a lot), but it's not completely unreasonable, and a lot of people have these things installed already.

Obviously, there's still a bit to figure out. I need to take a look at some of the current blogging systems to get an idea of the state of the art, and kick around this prototype some more. In the next few days, I'll set up a Wiki as a place to brainstorm. Again, your suggestions, advice, flames, etc. are encouraged.

posted at 22:41:52    #    comment []    trackback []
 

Blogging Software Redux

Thanks for all the suggestions about Python blogging software, people. However, no single package I've seen so far has all the features I'd need - only a couple implemented Trackbacks - and I have a couple of good reasons to write my own. One is a work project, an app with a beautiful backend and middle layer, but horrible presentation. I'd like to become proficient with a good templating system (Kid looks nice) to spice up this and future work projects where I have to write any user interface code. The other reason is that most of my day is spent writing UI-less code, and I could use some practice. Plus, a project like this provides near-immediate postive feedback, so chances are it won't end up in the dustbin.

To re-familiarize myself with the various XML-RPC APIs, I whipped together a quick prototype with Twisted, using SQLObject with Sqlite for storage. SQLObject was a breeze to use, with a nice declarative class structure for defining tables (similar, but less powerful and complex than using peak.storage and peak.model). Twisted is always a joy, and this project will let me check out the new features in 2.0 (paging Radix). As I noted before, Kid looks like the front-runner for a templating system, being simple and Pythonic, without disallowing one from doing more fancy XSLT-ish things.

So that's it. What features would you include in a new blogging tool?

posted at 00:28:32    #    comment []    trackback []
 
2005-03-07

Pythonic Blogging Software?

I'm in the market for a new blogging system. PyDS is nice, but I don't need half the features it has. I don't need a wiki, don't need an aggregator, and would prefer not to have to run a daemon locally. I guess what I'm looking for is a server-side system that implements one of the popular blogging APIs and renders pages via some templating system. It should be easy to extend without having to grok the entire system design.

In my (admittedly short) search so far, nothing seems to match up, so maybe I'll give it a shot. It'd provide an excuse for me to play with some of the newer web frameworks like peak.web and CherryPy, and maybe I can fold some of the source from my ongoing projects cleanup into this.

I don't especially care to reinvent the wheel, though, so if there's something out there along these lines already, please drop me a line.

posted at 14:18:24    #    comment []    trackback []
 
2005-03-05

Unfinished Business I: Quick and Dirty Remote Objects

This is the first in a series of posts I'll be writing as I go through my various stalled or aborted projects and decide their fate. I'm doing this for a couple reasons. One, to get rid of the mental baggage that goes along with such unfinished business. Two, committing some of this stuff to writing may help me sort out my thoughts, and soliciting the input of others can't hurt either. I'll describe the projects briefly, explain why I consider it unfinished, and consider whether to finish up or put it in the attic. I'm (finally) setting up a permanent SVN repository this weekend so I'll have a place to put this stuff.

The first thing I looked at is a dead-simple remote objects library using XML-RPC over netstrings. Remote connections are persistent, so it's a little faster than XML-RPC over HTTP. It's very small and lightweight and I've used it successfully for prototyping distributed systems. It also includes a netstrings parser written in Pyrex, which should be useful with or without the rest of the library.

Why It's Unfinished

The code needs a good refactoring - the project was initially a quick hack that was too useful for its own good. The library makes a naive attempt to propogate exceptions across the wire, but it doesn't work well enough to be useful. Also documentation is nonexistent, it needs to be distutil-ed, and some unit tests would be nice.

This one I think I'll actually finish up, mainly because it's relatively small in scope and close to being done already. I know the netstrings library will be useful to some people, too.

(Another advantage of releasing these things is that I can use them at work without handing over all the rights to my company. My non-compete agreement has all sorts of outrageous restrictions in it, many of which probably aren't legal, but I'm still careful about partitioning my time and not muddying the waters. (Hence waiting for the weekend to do this.).)

posted at 14:37:36    #    comment []    trackback []
 
2005-03-04

Unfinished Business

I'm horrible when it comes to finishing personal projects. My projects usually begin with some sort of 'a-ha!' moment- a novel idea or design- followed by a stretch of what makes me love programming, the egoless, effortless outpouring of code that is a hacker's Nirvana. That's usually where it stops. The initial novelty worn off, the sharp-pointed focus gone, the idea becomes a dessicated corpse in my ~/projects directory.

I used to not mind this, figuring that the academic exercise was in itself worth it, but nowadays it frustrates me that I didn't spend all that priceless free time working more mindfully on something that would be useful and mature by now. Some of the most interesting development happens refactoring, extending, or integrating mature codebases. I know this because it's what I do all day for my real job.

I suppose this shouldn't be surprising. I was the prototypical ADD kid, bouncing from one thing to another. "So much potential!", the teachers would all say, but I was always more interested in exploring things my own way than structured assignments. I got through secondary school and (almost) college on a combination of innate ability, bullshit, and charm.

It wasn't until I got a 'real' job about six years ago that I finally started learning new things, and finishing projects. The incentive structure of a real job was much different from school, and I was surrounded by very smart people, working on very challenging problems. I had the benefit of some truly great mentors, who taught me how to move a project from design to delivery. I have yet to apply those principles to my personal work, though, so I'm still sitting on the same pile of dusty, half-finished projects.

So, project Piss Or Get Off The Pot (POGOTP) begins this weekend. I'm going through all this unfinished junk and deciding what to do with it. I'll post the results of this exercise as I go - if you see something interesting, please speak up (I know at least a couple people read this blog).

posted at 12:18:56    #    comment []    trackback []
March
MoTuWeThFrSaSu
  1 2 3 4 5 6
7 8 910111213
14151617181920
21222324252627
28293031   
Feb Apr

a python programming journal by Andrew R. Gross

XML-Image Letterimage

© 2005, Andrew R. Gross