Older blog entries for wainstead (starting at number 91)

Package manager/code sharing for MOO code

Todd Sundsted has been doing some amazing work with his fork of LambdaMOO, Stunt. While I was trying to catch up on the MOO-Talk discussion list (which has been very busy as of late!) he announced Composed, a package manager he wrote and has been using for two years. Check it out! He even has a call to action for people to package their MOO code for release. Imagine one ANSI package to rule them all.

Syndicated 2012-05-06 19:45:00 (Updated 2012-05-06 19:45:33) from Wainstead

"Object frameworks and object browsers are not a substitute for good design or documentation, but they often get treated as one. Too many layers destroy transparency: It becomes too difficult to see down through them and mentally model what the code is actually doing."

-- Eric Raymond, "The Art of Unix Programming."
25 Mar 2012 (updated 25 Mar 2012 at 08:11 UTC) »

Let not a month go by without some work on thine open source project...

I closed a ticket today, a very minor one: the programmer's manual, which is a Texinfo document wasn't building on my Fedora 14 system on an Intel Mac Mini.Some months ago I decided to upgrade the Mini to Fedora 16 and that was the end of the Mini. Long story short: Fedora switched to the GRUB2 boot loader and after the distro is installed on the Mini it won't reboot. GRUB2 couldn't find the kernel, even when I explicitly passed the path on boot.The Mini has a flaky CDROM drive so installing anything means trying over and over until the installation process survives with no bad reads from the DVD disc. I should just pry the Mini open at this point and install a new optical drive.Tonight while doing another task (several, really) I kept trying to reinstall FC on the Mini, and the sixth or seventh try went without a hitch. Finally. I started "yum groupinstall"ing things to get the system fleshed out with the tools I need. It's almost there now.So I git cloned Waverous off Google Code and got the manual to build. Finally! It's not much but at least that's one ticket closed and the project inches forward. I still wanna try branching and doing a radical rewrite of the structs into classes just for kicks.

Syndicated 2012-03-25 07:10:00 (Updated 2012-03-25 07:14:58) from Wainstead

Long delay in doing anything

I'm posting to say I haven't gone away, nor plans for Waverous... I am still planning on releasing File I/O in a newly patched form for the MOO community.I'm also keen on doing some serious experimentation with Waverous by doing wholesale changes from C to C++, just to see what happens.I've been super busy here in Las Vegas running the Python Programmers Meetup and attending many other meetups, especially the Las Vegas Jellies. The weekly Jelly happens right down the street from me and has exploded with activity.

Syndicated 2012-02-24 00:45:00 (Updated 2012-02-24 00:45:16) from Wainstead

GammaMOO and Stunt LambdaMOO project plugs

I've recently done some testing for GammaMOO, which has restarted development. It's really exciting to see LambdaMOO development happening again.Check out Luke's GammaMOO project!The other ongoing fork of LambdaMOO is Todd Sundsted's Stunt which adds multiple inheritance to the Moo scripting language. Also worth checking out! Or cloning, as be the case.

Syndicated 2012-01-03 04:58:00 (Updated 2012-01-03 04:58:34) from Wainstead

What I'd like to see for LambdaMOO

On the MOO-talk mailing list, the question was posed: What other things are missing from the MOO server?My answer: users. And usability. And hackers.

Syndicated 2011-12-02 05:41:00 (Updated 2011-12-02 05:43:22) from Wainstead

Waverous is now using Git

I finally sat down, rolled up my sleeves and converted Waverous to a Git repository on Google Code. There were a few things that needed extra attention:

1) I used John Albin's instructions on converting a Subversion repository to Git. It provided the most complete way of doing it.I had to do some detective work to figure out the names and emails of some previous committers, but in the end I had a repository with all the data I wanted including all branches and tags.

2) Getting all branches to the remote was not obvious, so I just did some rectangle editing in Emacs:

git checkout AUTOCONF_TWO
git checkout CONSTANTS
git checkout FLOATSUSPEND
git checkout HEAD -> origin/master
git checkout INLINEPC
git checkout UNSAFE_OPTS
git checkout WAIF
git checkout WROGUE
git checkout avalon181
git checkout demacrofication
git checkout demacrofication@233
git checkout experimental_automake
git checkout experimental_reorg
git checkout master
git checkout pavel
3) Then I pushed everything to Google Code:

git push googlecode --all
4) I found the tags didn't make it up either. This was another step:

git push --tags
The one thing I don't like, so far, is I have to maintain a .netrc file with my Google Code password, and when I git clone the repository I have to edit out my username@ from the URL. But after that everything seems to work fine, though git push just returns "Repository up-to-date" without telling me anything happened.So, from the top:

# clone repository created from John Albin's instructions
git clone ~/new-bare.git waverous

# add the new remote per Google's instructions
git remote add googlecode https://code.google.com/p/waverous

# check out all branches from my local repository
git checkout AUTOCONF_TWO
git checkout CONSTANTS
git checkout FLOATSUSPEND
git checkout HEAD -> origin/master
git checkout INLINEPC
git checkout UNSAFE_OPTS
git checkout WAIF
git checkout WROGUE
git checkout avalon181
git checkout demacrofication
git checkout demacrofication@233
git checkout experimental_automake
git checkout experimental_reorg
git checkout master
git checkout pavel

# push all branches to Google Code
git push googlecode --all

# push all tags to Google Code
git push --tags

# Clone and push the wiki on Google Code as a new Git repository
git clone https://code.google.com/p/waverous.wiki
cd waverous.wiki
svn export --force http://waverous.googlecode.com/svn/wiki .
git add .
git commit -m "Conversion of Waverous's wiki documentation to Git."
git push origin master
Overall this was a dumb brute force approach, but it got everything done.

Syndicated 2011-09-03 19:30:00 (Updated 2011-09-03 19:30:33) from Wainstead

technorati claim post (ignore)

this is to satisfy technorati that I own this blog

Syndicated 2011-08-24 13:52:00 (Updated 2011-08-24 13:52:06) from Wainstead

The road to 'automake'

Today I deleted another file from the repository, aclocal.m4. It redefined an Autoconf macro to support OSF/1. That was all it did, and aclocal itself wants to generate a file of the same name so that was that... and the macro in aclocal.m4 was taken from a later version of Autoconf anyway.

Now I've returned to an issue I saw a few months back:

bash-3.2$ autoheader
autoheader: warning: missing template: BZERO_IN_STDLIB_H
autoheader: Use AC_DEFINE([BZERO_IN_STDLIB_H], [], [Description])
autoheader: warning: missing template: FSTAT_WORKS_ON_FIFOS
autoheader: warning: missing template: NEED_BSDTYPES_H
autoheader: warning: missing template: NEED_MALLOC_H
autoheader: warning: missing template: NEED_MEMORY_H
autoheader: warning: missing template: NEED_SELECT_H
autoheader: warning: missing template: POLL_WORKS_ON_FIFOS
autoheader: warning: missing template: POSIX_NONBLOCKING_WORKS
autoheader: warning: missing template: SELECT_WORKS_ON_FIFOS
autoheader: warning: missing template: UNDEF_IO_IN_STROPTS_H
autoheader: warning: missing template: USE_OWN_STRING_H
autoheader: warning: missing template: _HPUX_SOURCE
autoheader: warning: missing template: _NEXT_SOURCE
autoheader: warning: missing template: const

I know there are some deprecated macros lurking in configure.ac and I haven't done anything about it yet; high time I took care of this. I am going to strip support for NeXT, SGI and a few other relics too.

Syndicated 2011-08-04 00:16:00 (Updated 2011-08-04 00:16:07) from Wainstead

Good news, everyone: 'pgperf' dropped

Yesterday I started a branch in SVN to experiment with changing the directory layout of the project.

While reorganizing everything I had to think about how to handle 'pgperf', the customized version of GNU gperf that shipped with the original LambdaMOO server. gperf is a "perfect hash generator" that creates a hashing function and a lookup function for the LambdaMOO programming language. It generates the file 'keywords.c' in the project. LambdaMOO came with a hacked version because in 1997 gperf didn't support case-insensitive lookup tables, and the original author of LambdaMOO added this feature and included it with the project.

The idea for the project reorganization I have is at the top level of the Waverous project you will see the standard directories you see in a lot of open source projects:

bash-3.2$ ls -l
total 376
-rw-r--r-- 1 swain swain 145516 Jul 29 19:57 ChangeLog
-rw-r--r-- 1 swain swain 8605 Jul 29 19:47 LICENSE
-rw-r--r-- 1 swain swain 343 Jul 29 19:44 Makefile
-rw-r--r-- 1 swain swain 10770 Jul 29 19:47 README
-rw-r--r-- 1 swain swain 2907 Jul 29 19:47 README.Minimal
-rw-r--r-- 1 swain swain 10121 Jul 29 19:47 README.rX
drwxr-xr-x 7 swain swain 238 Jul 29 22:40 databases
drwxr-xr-x 8 swain swain 272 Jul 29 19:49 doc
drwxr-xr-x 17 swain swain 578 Jul 30 09:19 examples
drwxr-xr-x 5 swain swain 170 Jul 29 19:46 extensions
drwxr-xr-x 5 swain swain 170 Jul 29 20:00 extras
drwxr-xr-x 148 swain swain 5032 Jul 30 09:38 src
drwxr-xr-x 8 swain swain 272 Jul 29 19:45 tools
My goal is to write a Makefile.am that handled the subdirectories that formed "standalone" projects: src (the server), doc (the manual and Doxygen docs), and extras/pgperf.

While waiting for my wife's oil change at the dealership (yay free wi-fi!) I tried to compile 'pgperf' as shipped with the project. Compilation failed due a dependency on varargs.h, "gcc" telling me it was obsolete. This brought to mind a task I've thought about a number of times but hadn't written down: drop pgperf for GNU gperf IFF gperf now supported case-insensitive lookup tables.

GNU gperf added support in 2002 with the flag --ignore-case, so after an afternoon of tinkering, regenerating files, recompiling and testing I've gotten everything working just fine with gperf. I've dropped pgperf entirely from SVN.

On a side note, working with Subversion is so painfully slow now -- I've been using Git for the past six months -- that I'm going to switch the project to Git quite soonish now that Google Code supports Git.

Syndicated 2011-07-30 23:02:00 (Updated 2011-07-31 01:32:12) from Wainstead

82 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!