The home page was a tad boring, so I decided to create a site map
(a real one, in SVG) for it. Being the type that prefers to edit
code than learn yet another drawing program, I wrote it in GraphViz
DOT format, and now just convert it to SVG on the fly during the
site build. It took a bit to learn how to tune the GraphViz layout
parameters, but I think the result looks pretty decent. It won't
work on Internet Explorer older than IE 9 Platform Preview, but
for those folks (and text browsers), I left the old navigation
menu as well.
I've been contracting for the last few months. I'm in the lull
between the end of one and start of another, so I've updated my
resume with the latest info.
You may now commence rejoicing. :-)
It looks like I'm managing slow and steady improvement. There are
a few visible changes, but most of the change is behind the scenes.
In particular, a lot of stuff that was hardcoded before is now
data-driven. There's a fair opportunity for more of that, but it's
already making a few things much easier to implement, like the
combo breadcrumbs / menu I'm playing with at the moment.
With the basic cleanups (plus holiday weekend, jury duty, etc.) out
of the way, I can begin the iterative redesign. Working through the
source tree, it looks like there's a lot to do and no obvious starting
point. I think I'll start with the download info — that seems to
be an easy place to ease back into things.
It's been almost four and a half years — pretty much the lifetime
of my recent full-time job — since I've updated this site. Now
that the job has gone away ("reduction in force", leaving only
founders), it's time to bring the site back up to date. The first
job is to clean up broken links, fix copyrights, and all that jazz.
Once that's done, I'll start on a (decade overdue) redesign.
under my belt, I'm completely redesigning (and then rewriting)
gjbforth; hopefully this version will be sufficiently clean and
working to be able to actually pass a few non-trivial tests.
On the plus side, I've got an implementation of NEXT that seems
pretty fast, given that it's written in Perl instead of machine
code. If more changes go this way, the new version will be a
good deal faster than the old one (which, frankly, dragged).
I've posted the
in the code optimization miniseries. This one talks about
why the application may be solving the wrong problem, and slowdowns
related to poor choice of algorithm (or poor use of same).
has broken 750 in the O'Reilly blog rankings;
it's rising much more slowly now, but I'm still pretty jazzed.
A kind soul pointed me to a great set of articles about writing
a Forth from scratch on embedded processors. Even if you're not
planning to write for one of the ancient CPUs he covers, the
articles are still wonderful. The author's stated approach is
to discuss in great detail all the low-level workings that other
authors gloss over, and I certainly understood a lot more about
the Forth kernel after reading them. Anyway, I can highly
articles by Brad Rodriguez.
I've started a miniseries on code optimization in the O'Reilly blog.
I'm not sure exactly how many entries will be in it, but the
is now up, covering how to determine how your application performs
in various circumstances, and generally where the bottlenecks lie.
A helpful person on #sdlperl let me know that the downloads
area of this site, including the PPM repository, contained corrupted
tarballs and ZIP files. I managed to track this down to a problem
created when I converted my CVS repository to Subversion. The moral
of the story: Before you run cvs2svn, make sure
your cvswrappers file has entries for all of your binary
file types! Mine had entries for images, but not for archives.
I was able to fix this by booting up the old CVS box, copying the
correct files over to my Subversion checkout, fixing the properties
on all of the archives, and commiting back to Subversion. Sheesh.
In any case, the downloads area and the PPM repo should be good to
go again. As a side benefit during this process, I have gotten a
logbot to join #sdlperl, so we have browseable
Thanks to the weekend slashdotting and links from some other
blogs, last week's blog broke 1000 in the O'Reilly blog rankings.
That's pretty decent, considering my previous best only managed
to crack 4000 . . . .
This week's blog entry got
thanks to chromatic (my editor at O'Reilly). This is pretty
cool, though the quality of the comments (as usual with /.) varies
in the O'Reilly blog series is up. Have at it. :-)
Today I posted the
in my new weekly "Perl etc." blog for O'Reilly.
You should be able to follow the weekly posts either on
the front page at perl.com
or on my
blog entry list page. Both seem to lag my actual posting a
bit, unfortunately — I assume they are updated nightly.
I've been spending a decent chunk of time teaching myself Forth,
and even implementing a simple Forth interpreter in Perl. It's
a fun language to play with, to say the least. Anyway, thought
I'd post links to online versions of Leo Brodie's two big Forth
Starting Forth and
I updated some of the PIGGE
docs. In particular, I added
and updated some entries in the
doc (and a matching entry for
and updated several entries (including the data gathered from the
gaming PC survey) in the
I'm starting on a new Autodesk contract, which has been specced at
2-3 months of about half time. Looks to be some fun stuff. I've
also been given the approval to open the codebase after I excise
all Autodesk references. When I've done so, I'll post it here.
Also, since this is only a half-time gig, I'm available for other
contracts as well; don't hesitate to
drop me a line
if you need a good Perl programmer.
All of the OSCON blogs
have now been posted, over 20 in all! That was . . . exhausting,
but I hope everyone enjoyed them.
in the Perl 3D engine series is up! This one covers profiling,
optimization with display lists, and rendering simple text to
make a frame rate display.
I'm heading off to OSCON for the first week of August, and I'll
be blogging all of the sessions and tutorials that I'm in on
I've been spending a lot of time playing with
Pugs, a Perl 6 environment
that (mostly) works today. Pugs is run in a very anarchic
manner, with commit access to the Pugs repository given out
freely. This is working amazingly well. In keeping with this,
I have uploaded the
SDL_perl 1.x tree to OpenFoundry
(the same project hosting service Pugs uses). The repository can be
browsed at http://svn.openfoundry.org/sdlperl1/.
If you'd like to join in, just drop me an
email, and I'll be happy to invite you to the project. In the
mean time, please come visit on irc.freenode.net #sdlperl.
Wayne Keenan has done it again —
SDL_perl is now up to 1.20.5 and has its own
It's also available once again as a
for the Win32 crowd. Wayne's releases now have significant
bug fixes and new functionality beyond that supported by
SDL_perl 1.20.3 (Wayne's tree started with Debian's 1.20.3-1
package); once we've fixed a few minor issues, we're hoping
the *nix distro packagers start to pick up these
improvements as well.
In a continuing effort to make life a little less sucky for
Win32 users, I have added a
PPM repository to the downloads
tree. It currently contains SDL_perl and a couple of my modules
on Win32. Over time, I will be packaging more of my stuff
(including PIGGE) for Win32 and throwing it into the PPM
repository. Source tarballs will of course always be available,
since *nix is my primary development environment.
Wayne Keenan has sent me an updated SDL_perl for Win32
should now fully support the code in my
Building a 3D Engine in Perl articles.
Partial PIGGE support is also in place and Wayne's tree contains
additional fixes for PIGGE-required functionality, to be released
Coded up a few changes and released
PIGGE 0.1.2 today.
New releases now come with a
which is linked from the
main PIGGE page.
Last week I finally got around to creating an account on
use Perl. This week I
put up my first
entry there, hopefully to be followed by many more in the
future. Also, I had forgotten to link the PIGGE source tree
from the main graphics downloads
area. That's fixed now.
Finally uploaded the
PIGGE source tree, along
with some prerequisites.
Managed to find some time today to fix the code that autoconverts
the PIGGE docs from the source
tree to HTML and uploads them here. Time to package the code and
upload it as well. But first, some sleep.
The Autodesk contract has picked back up again, so the
PIGGE uploads will be delayed.
I have managed to update all of the code and docs to use the new
project name, but now the automatic conversion of the docs to HTML
is not working.
Version 0.1.17 of my TRISLAM
Perl/OpenGL benchmark has been uploaded. Speaking of versions,
downloadable scripts now generally have a $VERSION
so that readers can tell at a glance if they have the latest
revision (granted, things in
urandom won't be updated that
often, but still).
Also, I have updated all site references to use
PIGGE instead of the old working
name, which had been claimed by other graphics projects.
Until I can finish converting the code and docs to use the new
name, the documentation and downloads links for PIGGE are
offline, but the
At this point, I think I've got most of the old trash reorganized,
updated, and generally beaten into submission. It's far from
perfect, but at least it's generally consistent, and my
online resume now includes the
last three years of my career. Shocking, I know. Now to start
adding new stuff.
It's been almost 3 years since this site was redesigned; I guess
it's about time, eh? OK, off to trash (recycle?) the old junk.
The Autodesk contract has morphed from just fixing existing
breakage and documenting everything in a more non-programmer
friendly fashion to adding a number of new features to the system.
To get even the highest priority remaining features developed,
tested, and pushed would take more time than remains in the
original contract I took over. So while I wait for a signature
on the new PO I'm back doing my own thing for now. Ahhh . . . .
in the Perl 3D engine series is up! Three more to go, once the
Autodesk contract is finished.
Feedback on the first couple of articles has been light, but
positive, so the editor at perl.com has agreed to extend the
contract out to six. <quake>W00t!</quake> There
will be a break after the third article, because I just took
over a contract at Autodesk to continue development of the change
management system I'd built for Autodesk IT in the spring of
The second article
in the Perl 3D engine series went live today. It includes a
correction for the fully expected braino in the first article.
Sometimes it sucks to be right. :-/ Ah well. Onward and upward!
(And always twirling, twirling, twirling towards freedom.)
The first article
in my series describing the creation of 3D engines
in Perl was published today. I've got a contract for 3 articles,
with an option to extend it if my readership and feedback are
good. Giddy doesn't describe the feeling; there's too much abject
terror mixed in. Someone once told me that the probability of
saying something stupid rises with the size of your audience.
This is a bigger audience than I've ever addressed before . . . .
Today is my last day as a full time employee of Autodesk (by choice,
thankyouverymuch). I'm going to spend some time writing articles
for perl.com and working on a from-scratch 3D game engine written
entirely in Perl (of course). Wish me luck!
In preparation for tomorrow's news, I've been working with the
editor at perl.com to get
a contract for a series of 3D in Perl articles. Today, they
published my writing sample,
FMTYEWTK About Mass Edits in Perl.
- 2002-07-02 late
Well, I have taken all of the tests needed to
enter the teaching credential program, and the
subsequent family visits and trips are taking a
break (for now, at least). So far I've gotten
only the test results for the CBEST (I passed) —
the rest will be coming at the end of July or
beginning of August. In any case, I am now
available for immediate work opportunities —
contract or permanent. I've got at least half
a year before starting my teacher credential
program (and I may do it as night school when
I do start, if I'm in a good permanent
position at the time). Check out my
online resume or send
Over the last couple of months, I've spent huge amounts of time
preparing for the tests that I needed to apply to a teacher
credential program, and then taking them. Right after that,
I spent a couple of weeks visiting with family (some of which
came to me, and some I went to), and finally, going to my
cousin's wedding (CONGRATULATIONS!).
So now it's time to start working! I'm immediately available,
and darnit, I want to do some coding!
For those wondering why the site stopped updating
a month ago, it's because I've spent the last
month studying for the PRAXIS math tests for
prospective math teachers. The tests are this
weekend. Wish me luck!
- 2002-05-11 late
Spent several hours at the computer today reworking my section of
this site. Mostly this was a matter of copying things over from
the v1 tree to the v2 tree, and converting to the new dynamic
structure. I also moved a few things around, and finally archived
the old .plan entries from June of 1998. Sheesh. We'll see if
this time I manage to keep this up for more than a month. :-)
Anyway, there's still a lot of stuff to move over (including all
of the T3D and Perl stuff), so more weekends will be sucked into
this project, I'm sure. In any case, it's time for my nightly
stretches and suchlike. G'night!
I updated some of the pages in my (Geoff's)
section of the site to the new internal structure.
There are a couple of visible changes, but perhaps
the largest one is that I finally archived the
*really* old .plan file and started a new one. :-)
I think I caught most of the old pages that link
back to the old home page. Let
know if I missed any.
Yes, I know, if you go to one of the old pages,
and try to navigate back to here using the navbar,
you get the *old* home page, not this one. Until
I fix this, please just use your back button or
equivalent to get back here from old pages.
No, you are not hallucinating, this site is being updated!
Hang tight, I'm typing as fast as I can. :-)
Well, it's been a couple of weeks since I last put fingers
to keyboard here. The conditions are the same as those
last time I wrote; it's been a beautiful day, and I've
stayed inside and typed. Mostly I just worked on the web
site and dealt with old emails (I was almost 3 months
behind in required responses). On the good side, yesterday
I went to my sister's baby shower, and our gifts (a midsized
Pooh bear and a onesie [sp?] with a Pooh scene on it) seemed
to match the general theme, as by coincidence at least half
of the gifts were Pooh or generically teddy-bear
oriented. All the little kids wanted to play with the Pooh
doll, which I suppose bodes well for the baby.
Well, I'm happy to report that the ESS 2.0A master actually
worked, and we've been shipping to customers for a couple
weeks. That's a load off my mind. Since the ship, a couple
of my old tasks have been shelved, and I've gotten a chance
to upgrade my desk to 100Mbps Ethernet (finally), as well
as actually install the Linux I bought and start using it.
It's already proving its worth, because one of my new jobs
is to learn to build the various parts of R/3, SAP's
flagship product. This is harder than it sounds, because
there's somewhere around 25000 source files (adding up to
300-600 MB, depending on the version), about 500 of which
are makefiles alone. There is no standard build documentation,
and what source code documentation exists is unfortunately
both sparse and half in German. I could not find a reasonable
tool to help me figure out what makefiles do what, especially
because there is a lot of conditional and macroized crap that
makes everything harder to read. They even have a make
wrapper called mapro (MAke PROgram) that does nothing but
set up some 150 environment variables needed by the makefiles.
Eventually, I settled upon a bit of a hack. I created a
dummy makefile on the NT box (where I need to do the compiles,
so that my NT-using workmates can make use of the result)
that did nothing but capture the environment variables
into a bash script that would recreate them on the Linux
box. I used smbmount (basically the converse of
to view the NT source tree from the Linux box, and next week
I get to test whether this arrangement allows me to convince
various Linux code-management tools, such as makedepend,
that they are, in fact, compiling an NT version of the
product. Of course, if anyone knows an easy way to work
around this and just see what makefiles produce what, and
in what order they must be run to produce some needed
target and its various parts, I'd love to hear it. I tried
Cygnus Source Navigator
(well, actually, I read the docs),
and not only can it not handle a project as big as R/3 without
a license fee, but it doesn't seem to handle inter-makefile
dependencies well. And don't even get me started on how
evil it is to require a network license manager . . . .
Nothing like spending an absolutely stark raving beautiful
day inside typing. What a maroon!
Well, I suppose I should know better than to say we shipped
before the product actually goes out the door; the number of
times that we got oh SO close and then failed to actually
ship because somebody found something else is utterly ridiculous.
On Friday we actually managed to send it out to be copied,
but we'll see whether we manage to cancel it before we get
the distribution copies back from the manufacturer
The whole group is getting seriously stircrazy, and whenever
there's a delay, the accusations are flying fast and furious
about whose fault it is this time. I figure if we don't
ship to the customers within another week or two, people
will start buying assault rifles.
Meanwhile, Marcy's server has been down for several days, and
her group (she has a day job at the same company as me, but in
a different department) has a beta due next Friday I think.
This means the chances are good that we will have to get off
our duffs and go in to the day job office to make up lost time;
the server just came back up a little while ago.
- 1998-06-10 late
We went gold today on ESS 2.0A, the product that I work on
at my day job
(SAP Labs Palo Alto).
Hopefully it will not
be found buggy before we manage to get it back from the
manufacturer and ship it to people; it's been a long road
of bugfix after bugfix for us, but it seems to be one of
the cleaner releases we have done. At least, we know of
fewer things broken at release time . . . .
Linux 5.1 today, along with a whole passel
of manuals. I'm going to finally jump on the Linux bandwagon,
I think, after many years in the Wintel world. The last time
I used any Unix-like OS was back in college, nearly a decade
ago; it will take a little while to get back into the swing of
things, I'm sure, but friends tell me Red Hat is the easiest
one to transition to from the NT camp. Wish me luck.
God I hate mornings. I am so not a morning person, it's
just plain silly. I have the annoying habit (well, to my
bosses, at least) of getting up two hours plus after my
alarm started going off. My only consolation is that
Marcy is no morning person either, though that certainly
doesn't help us get to morning meetings any more frequently.
Of course, if she were a morning person, we sure as hell
wouldn't see much of each other!
Time was that you could count on PC Magazine
being about the best Wintel-focused, English language
consumer mag out there, and ZD Labs kicked ass themselves.
Nowadays, the online portion of Ziff-Davis
here in the US) seems to be a poor child of the glory years;
they somehow feel the need to link words as common as
to their glossary, use that annoying
Click here for phrasing,
and come up with comments like today's
Compaq builds first
all-digital PC. Sheesh.
Here it is, the first entry. Happy Zeroth Birthday, .plan!
Alright, that's all folks. Nothing to see here. Go about
your business. Stay away from the yellow tape, please.