Recent blog entries for roundeye

First diary entry in millenia. My how some things change and others just stay the same.

Some of the ambitions from a couple of years ago have been fulfilled. I released a lot of the code I was working on. For the big projects, like corengine, in some respects the system is better than anything else I've seen in the same field; but in some respects it's definitely not. What took 12K lines in corengine I've now done in 6K lines here at the office (and that code is slated for an open source release sometime this year) with much more power.

As an experiment in actualizing some ideas that project was a success: objectified content (now called "microcontent" I suppose) is a win, reusing objects by encoding structure as a generalized graph (so iterators are graph traversals; graphs can render to XML, really -- XSLT makes subgraphs) is also a win. Trying to write an useful objectified renderer in a language like PHP which has no mixins, interfaces, or multiple inheritance, is an exercise in futility. Coding (dirty nasty hacking) to a demo schedule when the next evolutionary design phase is clear, is a lose.

Oh, and cut-and-paste of objects through a web application to speed workflow: a big win. Hopefully more on that in the future.

The most recent news is that we (i.e., I and Brandon and Sean) finally re-released Litestream. I had been having email exchanges with Gene Kan before his death about getting litestream.net back online and loosening up the litestream license to a pure BSD license (no advertising clause). He renewed the domain, dug the machine back out for hosting, and agreed to a BSD license. And then he passed away.

I can't say that I knew him -- I just had a passing acquaintance with him over the Internet at the end of his life. But his death affected everybody who had any contact with him. I feel that we (all of us) really lost a lot when Gene left us.

After some months we approached Yaroslav and some of Gene's other XCF friends and asked if we could follow up on Gene's wish to bring litestream back online, update the license, and get the project going again. They said, yes, that Gene was happy when he was working on litestream and that we should bring it back.

It took us a year to get our act together -- we had to decide how we were going to maintain the project, and we set up a website, mailing lists, all the cruft that goes with development. Then we pulled out the code and spent a lot of time looking through it and testing it. Gene wrote really great code. Compared to the other streaming tools out there it's as if litestream is a Predator drone that can do Mach 2, while the competitors are like doublewide trailers that bounce up and down on rusty springs. I say that having looked closely at the code of a number of streamers.

We found one bug on Linux that has to do with how Linux handles non-blocking sockets, so we fixed it. In the process we added debug scaffolding (a probably ancient version of Fred Fish's public domain DBUG macros), updated the license, and took out the compiled-in mp3 (a relic from the old license).

We've got ideas for a litestream2 -- things like factoring the backend and making a liblitestream, e.g. It's daunting, though, looking at how well the code is written, to undertake big changes to a solid product. That's the beauty of open source though: both development and testing are parallelized. So, we'll see.

Anyway, it seems people are happy to see Gene's good work back in circulation again. I hope we can do him credit with maintaining what he left behind.

A little more to be done on the base site revamp, then I can set up the project site (not yet live) and, finally upload the newly BSD-licensed PH3P, enable the mailing lists, and do the freshmeat/ph3p-announce/advogato-project/etc. jig. Then it's back to unproprietarizing (is that a word?) CorEngine so it will one day be yet another open source download.

I will be releasing PH3P (a preprocessor for PHP) this week under the BSD license. It's been very useful over the past year and almosts makes PHP into a programming language. ;-P

In the midst of revamping our main site before announcing the release. Need to get the independent project hosting site (hoodoocode.org) and the consulting site (hoodoocode.com) set up RSN too.

I should be on track to announce an open-sourcing of some very established projects about 1x a month each (except for around Xmas which will be a much-needed time sink) for the next 4 or 5 months going forward.

16 Nov 2001 (updated 29 Nov 2001 at 04:18 UTC) »

Working through a skein of incompatible bits of monocultural missives as of late, trying to figure out why exactly it is that production == 0.

Peter Drucker recently said not to ask for permission, and I took that as a Good.

Again 4 or 5 times recently I've heard this television-era dime store cultural aikido self-help pith which says that we can't excel without a goal somewhere (vaguely) dead ahead of us.

On Saturday I went to a small party with the guitar I hadn't played in six months and played something vaguely derivative of El Camino for a number of hours.

I realized today that the whole fucking problem is that I had goals two months ago and now I'm only left with doing things for the doing itself. I should've known better than to let some trite cultural widget slip into my mental pocket.

Somewhere on the continuum between not asking permission and infinite flamenco guitar is the isolated hum that is the tao of "do for doing" that I've forgotten these many years.

obOSS: major progress on testing for new CorEngine authentication classes tonight.

Jukebox day
This afternoon I got a call referring me to a guy in Louisiana who wants to build Linux jukeboxes. Not something to put in your living room, but a replacement for the CD-containing jukeboxes in bars and clubs. Two hours later people in four states were discussing the project, particularly the non-technical complications (USC 17, state licensing, BMI/ASCAP, and ... the power of the Mob in Louisiana). Nobody's pretending it's a particularly novel idea (we had a fairly novel set of designs and business applications sketched out over a year ago, and we were hardly the first), but the guy on the ground seems to be a real underdog (without the "...get some VC hire 300 people to run the website and ..." mentality), so we're taking a look at it again.

Noticed that musicbrainz is doing a cddb replacement (I knew they were doing a metadata database but I didn't put 2 + 2 together I suppose). Unfortunately their idea of "P2P" involves people being the peers as they review album entries by hand. I've had a submarine project in the works for a while now which will be a direct "competitor" to musicbrainz from what I can tell, but which will be automated. I always assumed p2p peers did computation. Then again I always assumed people who said "p2p" too much were marketroids.

Along those lines (automating weird extraction and classification tasks), I keep coming across whizbang! labs (they also have a research site...). Ullman's advising them. The guy who wrote WordPerfect is in deep. They run flipdog.com, have a particular fancy for spidering my home page, and seem to cite a lot of my old co-workers in their research papers. I like some of their ideas so I think I'm going to implement those I can deduce from their datasets and papers, then wait and see if anybody comes out of the shadows to throw a lawsuit at me :-)

PHP wasn't meant to support homomorphic class hierarchies with factory constructors.

For the first time since 199[45] (can't remember exactly which) my main desktop machine is no longer running a version of Linux -- that after running Linux-only since 1997. My UDMA controller won't play nice under 2.2.*, and every kernel from 2.4.3 through 2.4.14 blows up with swap problems. I've spent 6 months verifying that it's not hardware. The final straw was when 2.4.14 was giving me bad swap entry messages even after I'd turned off all the swap and rebooted.

So after a harrowing 6-pack night disemboweling my interface to all things digital I now have another FreeBSD machine where it matters most. While it's been >5 years since I've run desktop FreeBSD it feels like a giant step forward already.

Now only 1/3rd of my machines run Linux with the other 2/3rds split evenly between FreeBSD and OpenBSD. I really need to plug my NeXT back in soon to skew the balance.

Forgot to mention it (when it actually happened a couple weeks ago), but I got Gene Kan to finally agree to release LiteStream (neither person nor project are listed on Advogato which is actually pretty surprising to me) under a real BSD license -- not whatever non-BSD thing it is that it's currently distributed under.

Not totally related to much of what I'm doing now, though some people want to use Litestream with the RDTJ. Some patches I've got to LiteStream would make that possible so I had to get the license cleaned up before I went ahead.

Gene even hinted he might get litestream.net back online soon, but he told Sean /The RIMBoy/ that too some months ago.

Anyway, this should be good news for LiteStream fans.

Some times the code just comes and some times it's like pulling teeth. The last couple of weeks have been a 60-hour a week dental visit. TODO's go up on the whiteboard twice as fast as they come off. Some hours I only manage ~10 lines of code; many hours there is no code.

I think things are loosening up now:

$ find last_corengine -type f | wc
    238     238    9642
$ find corengine -type f | wc
     94      94    3736
$ diff -r last_corengine/ corengine | wc
   1978    7201   56717

It's a pretty massive cleanup/rewrite. I don't like introducing discontinuities, but some of the work I had to do just couldn't be done stably -- which means that tonight will be my first test of a lot of that code. It's amazing how liberating it is to undo the bullshit hacks put in back when "we need[ed] feature X for tomorrow's sales presentation."

I also had to go ahead and let the old CVS module die so I could reorganize the directory hierarchy. When the files are in their places CVS works great. When it's time to reorganize CVS bites ass (I suppose it's time to check in on subversion again). I'll probably just keep the old CVS module in a CVSWeb for archeological interest, once I get to the point where CVSWebs are the highest priority items (ah, 'tis but a dream).

Anyway, that much closer to the first open source CorEngine release (sorry for the long build-up). I'm looking forward to actually using the new version to build its own websites.

Finally created a project entry for the RDTJ.

I've got two more big projects in the works:

The "Anonimatic" is a BSD-licensed Perl toolkit to find proxies, test them for anonymity, use them (a drop-in replacement for LWP::UserAgent) for web requests, forge User-Agent headers with real-world headers occurring in real-world frequencies, automatically rotate proxies during requests, etc.

The other is CorEngine, which is a PHP-based "content management system" that I'm moving to a BSD license after 2 years of development.

The Anonomatic is working, but I want more docs and more command-line tools before release 1 (I know, "release early, release often", ok ok ok soon soon).

The CorEngine project will take a bit longer to show its face (a few months probably), but it should be well worth it. It's strong enough to be an Interwoven/Vignette/eGrail/whatever-bullshit competitor, but runs well on a 486 (it's running my home page, btw).

I get a lot of use out of it for my own contracting/consulting work still, but the company we started (profitable from beginning to end) to develop and sell it is mostly on hiatus. Nothing to do with "bad economy" or "9/11" -- we simply got sick of dealing with assholes in suits. Now we're finally doing what I've always wanted to do, which is take the product open source. I'll probably get contractors to help me pay for add-ons that I'll revert to open source over time as well. Worth a shot, eh?

Anyway, there's actually a third project ongoing which the Anonimatic was written for (consider it a subroutine), but I'll leave that for later...

3 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!