A collection of articles, ideas, and rambling from a guy who wrote some software that one time.

Saturday, October 29, 2005

Today while helping a friend, I was exposed to PH...

Today while helping a friend, I was exposed to PHP's answer to unicode and encodings. Ahem, I'm sorry. multibyte strings.

Some days I cannot help but be amazed at how much better Python is than anything else available today. Obviously PHP is garbage, but the reason I thought to disturb you with this posting, dear reader, was this gem in the comments section of the documentation:
Setting mbstring.func_overload = 2 may break your applications that deal with binary data.
What is it, 1975? We are still writing - not even applications - systems that break when presented with data that has the high bit set??? Maybe we need a new HTTP request header, like the BINARY command in FTP.

Apparently there is something in the works for the next release - PHP6 or so - which will actually deal with unicode more sanely. I haven't looked at it but I am foolishly giving them the benefit of the doubt. So, cool. Maybe that release will also include a way to access "high memory" so I can get at more than 640K of HTML at a time!

Thursday, October 27, 2005

Divmod Axiom release 0.2.0 indicates that when I herald something it is <em>heralded</em>

The dawning of a new age is nigh. It couldn't be nigher.

Today we released an update to the Axiom package.

This new release of Axiom includes two new features, better documentation, and the usual smattering of bugfixes.

The big news is that upgrades will happen automatically in servers which start an Axiom database's root service. No new versions of Axiom objects were included in this release, so you'll have to try it on your own objects, but it means that when new versions come out, there is no operational component to running an upgrade. Simply stop, upgrade code, restart. Even with a novice sysadmin, even major upgrades will trigger only seconds of downtime. (Assuming you've tested your upgraders first - but then, you always write tests, right?)

We also added a method 'oneOf', which allows you to make use of the basic 'IN' SQL statement. Now you don't need to do multiple '==' queries when you want to find a group of related of items at once.

The argument to 'query' now has a much easier to understand interface.

We've pointed our website at the 'trac' wiki, and I've also added quite a bit of content to that area, including a bit about why you'd want to use axiom on the page "Why use Axiom?"

Tuesday, October 25, 2005

Divmod Epsilon release 0.2.1 heralds a new golden age of computing

Today, we released an update to the Epsilon package.

As JP's previous release-storm might imply, there is some more good stuff coming. In the immortal words of the Space Harrier, "Get Ready!"

This release of Epsilon includes a new utility, ModalType. A ModalType is a variant of a simple state machine which allows you to provide different implementations of the 'same' method for different 'modes' your instances can be toggled into. ModalType is generally useful for managing the life-cycle of objects which need to queue up requests while they are deactivated, and combined with some simple input/output handling it can be used to implement extremely flexible DFAs.

Also, as a convenience developed during releasing Epsilon itself, a new feature for Version which makes it more convenient for use within distutils scripts; no more running regular expressions over your setup.py every time you do a release, or changing a version number in 6 different places!

We've also started cleaning up and documenting our release procedure a bit.

Friday, October 21, 2005

He is unstoppable!

When Divmod ran out of things to release, what does a man of action such as JP Calderone do? He finds another project to release. Twisted Names. Twisted Mail. I imagine he is like a Pokémon trainer, marshalling his release announcements for battle.

Now it's up to you - you've gotta catch 'em all.

"gotta catch 'em all" is probably a trademark of those bastards at Nintendo Corporation or something, maybe. Surprisingly enough, used without permission.

Wednesday, October 19, 2005

Divmod Hits! Divmod Hits! Divmod Hits! -More-

Have you noticed a theme on JP's blog lately?

Yesterday evening, the exciting conclusion, impeccably timed to coincide with a flattering rant this morning about web frameworks. And I quote:
The guys who wrote Twisted inhabit a world of such extreme abstraction that it makes my brain hurt just to think about it. However, for big problems, serious abstraction is a good thing. Combined with some of the products from Divmod(...) you do really get a framework that I think solves many of the major problems in building large scale applications that remain flexible.

Tuesday, October 18, 2005

Hooray Users

I'm happy it uses Twisted, but can somebody with the appropriate language skills (.cn chinese) tell me what the heck this is?

Monday, October 17, 2005

Python to the rescue (Or, How Hard could it Possibly Be)

So these terminal programs suck, right? They get basic configuration options wrong, they crash a lot. I need a higher availability terminal.

Well, the underlying widget seems to work OK so long as you don't drive it too hard, so, I wrote my own "terminal" by just trivially invoking libvte from Python.

So here it is, HATE, the High Availability Terminal Emulator.

Blah blah, no warranty - if you use this my agents will hunt you down and kill you.

Enjoy.

Party Like It's 1982.

I have recently installed Ubuntu Breezy. It's pretty awesome.

However, I have a problem. All the terminals on pretty much all modern Linux systems (Ubuntu, Debian, FC3/4, etc) are either broken or impossible to configure. I assumed that these issues would be fixed in the new distro, but they seem to be getting worse - I guess terminals are falling out of vogue.

xterm displays "ÿ" when I hit M-backspace, which should be "delete previous word". This is a keystroke I use a lot. It also corrupts the terminal by improperly interpreting a multibyte sequence as a single character for forward movement rather than backward movement.

gnome-terminal - crashes all the god damn time, for no reason I can discern. screws up Epic pretty regularly.

xterminal - this one is my favorite. It screws up my backspace key when I run screen locally. Emacs thinks I'm typing C-@, zsh and bash don't delete a character.

rxvt - least buggy of the bunch, and it looks like what I'll be using, but ... Xt-style scrollbars? no antialiased fonts? no interactive font selection? customization through X resources? Seriously.

Hey, maybe they could figure out a way to make me care about how many stop bits I'm using, that'd be so retro!

Saturday, October 15, 2005

Backup Question

I would really like to have some backups of my home network.

I am currently concerned with this set of machines:

legion: My personal desktop. Running Ubuntu Breezy / Windows XP Pro. 150G linux partition, 150G windows.

kazekage: My old desktop, an ad-hoc "media center" PC that's hooked up to the TV; also serves as experimental / shared server / guest computer. 100G linux partition. Hoary right now, probably upgraded to Breezy soon. 60G XP partition that will hardly ever be used.

atuin: One of these things. Technically it runs some kind of linux, but it's a hermetically sealed box as far as I'm concerned. It's a 1T disk over SMB (samba, but no CIFS/UNIX extensions).

zelda: Print server. MacOS X (Jaguar). Runs VNC; headless. 40G HFS+ drive.

trogdor: laptop. dual boot Ubuntu Breezy / XP home. 60G linux partition, 20G windows.

There are a few other machines which may or may not be interesting to back up comprising about 200G more, all in linux.

The medium I will be backing up to is DVD-Rs, which I can get at $0.08/G - that would make the full price of one backup (with all disks full) $153.19.

I am looking for a backup system that will allow me to make this sort of backup with easy, selective restoration. Ideal would be a system where each individual DVD would contain an ISO filesystem with the actual files being backed up stored directly there, and some kind of directory-tree based index where I could make labels that would allow me to find a file. If anything in my TB drive blows, I am not going to want to buy a new one with the same capacity and then spend 6 days swapping DVDs trying to find the one file I need.

I don't mind if it's proprietary software, as long as it's reasonably priced, but I despair of finding anything that isn't open-source, since this amount of data sounds like an "enterprise" problem, and I am definitely not going to pay "enterprise" prices to back up my MP3s.

Thursday, October 13, 2005

"Just a Flesh Wound"

Lots of people ask me, probably because I have internet chat programs open a lot but also possibly because it's my god damned job to know, "What's going on with Divmod?"

Specifically, an area of concern lately has been that no visible improvements have been made to our flagship product in quite some time.

As anybody who reads JP's blog or Amir's ought to know, we have been hard at work.

We have launched a new application. We have started a few new projects. It may seem as though we've randomly gone off in a new direction.

We don't have much of a budget for customer relations, so we have been late in explaining what's going on, but rest assured that there is a plan at work here, and that your email is safe. We are trying to find incremental ways to become profitable without requiring open signup to Quotient (the Divmod intelligent email system), because it is too hard to achieve that goal while we are still working on short schedules and trying to figure out how the company is going to keep running from month to month. With no revenue stream, we don't have the collective attention span required to finish such an ambitious project, despite the massive effort invested so far.

However, we do have plans for applications in the following months which are effectively small, vertical slices of the full Quotient experience, and we will be turning them on one at a time, offering free or low-cost sign-up to each individually, and finally (when some of these have started paying for themselves) we will roll them up into a larger service, and migrate all our existing users' data.

Truly adventurous users may want to move over sooner than that, the second we have anything email-related at all. Talk to me, and I'll be sure to let you know when that moment is.

We have just rewritten most of our infrastructure outside of Twisted. Although it is going to take time, and some intermediary steps to get our whole email application running on top of the new stuff, it is definitely going to be worth the wait. The application is going to get better by an order of magnitude. (Those of you who have layperson family members who subscribe - please translate that appropriately.)

Personally, I'm immensely relieved by this change of pace. We have brought on a new employee, Moe Aboulkheir, who is absolutely brilliant. On a team with too many infrastructure gurus, he (along with Amir) has been the persistent voice of the application, getting us from an idea to something resembling a finished product faster than ever before in our history. It looks like we're going to be replicating that success a few times in the near future and I can't wait.

Divmod is OK. It's just a flesh wound, really. We've had worse. Thanks to all you out there reading this for sticking with us.