Friday, January 23, 2004
Phenomenal SQL Library
One of the guys at work sent me a link to a library with 123
TSQL Functions. There are some incredibly useful functions into
this library. Some of the function categories are base conversion,
combinatorial, algebra, numeric, string, date, comparision
validation, logical, trigonometic, hyperbolic.
You can find the library here
There are days when you write code that just feels ugly and hard
to read. Those times when you know that there must be a
cleaner, easier way to do this, but you can't for the life of
you think of it. It feels as if you were lobotomized against
your will and without your knowledge.
Then there are those days when it clicks, and you do think of
that cleaner easier way. When that happens, and you look at the
clean lines of logic and the natural flow to your code, you feel
an almost mystical sense of peace and tranquility as you bask in
the glow of your monitor. Knowing that you have produced a
thing of beauty.
Imagine being a painter, someone that is relatively good, but you
can still see all the flaws in your paintings, each little
imperfection cries out as if it were suffering an injustice.
Something that others praise as masterpiece looks like nothing
more than hodgepodge, a random collection of brush strokes without
any cohesive plan. Programming is that way to me, rarely do I
produce a piece of code that pefectly matches my own ideal of
consistency, elegance and beauty. When I do though, the feeling
is of pure elation.
Wednesday, January 21, 2004
Lisp Web Server
A few weeks ago I ran across this page.
It's an interesting study about building web applications using
lisp. This is something I've had a very serious interest in
since I have been reading Paul Grahams web site. They look to
have built a relatively serious dynamic web site using Lisp.
They used Portable Allegro Serve and several other open source
Lisp technologies. They also mentioned a Web Application server
they built called KPAX. They had not yet released the source
code, but they said they would release that code at some point
in the future.
Today is that day, they have made the KPAX source code available
at this site: KPAX.
I'm excited about this, because the two primary alternatives
that I have been considering for building web applications have
been Zope (python based) and using one of the Lisp based
frameworks. The problem that I've seen until now is the
relative immaturity of the Lisp based frameworks. KPAX is one
of the last major pieces that need to be in place. From the
sound of it, the code is in working condition, but they don't
plan to work on it any further. I'll talk to the authors and see
how they would feel about me starting a project on source forge.
Monday, January 19, 2004
The End of Ender's Game
I finally finished the Ender's Game quartet last night. It was
an excellent series, it was filled with interesting characters
and interesting ethical dilemas. The last book came across as
much more talky than the previous three, although he warns you
about that in the prologue to Speaker for the Dead.
If you've never read Ender's Game, I highly recommend it. It's
one of the best books I've read. The last three books are very
different than Ender's game, although they build upon the story
and elaborate on the ethical dilemas in a much more detailed
After finishing Children of the Mind, I started reading Angels &
Demons by Dan Brown. If you don't know, Dan Brown is the author
who wrote the Davinci Code. This book is the first in the
Robert Langdon series, it's about the Brotherhood of the
Illuminati. It's been very interesting so far. I really like
how he puts science into the book as well, he's had a decent
discussion of the X33 transport plane, and the first part of the
book takes place at CERN, so he gets some good instruction on
particle physics as well.
Friday, January 16, 2004
This is a good reference for those of you that like to
It's really amazing how many people will resort to ad hominem
attacks during a discussion, many times without even realizing
they are doing it.
The other night when I was listening to Michael Savage, he was
ripping on Hillary Clinton for a speech she was giving. He kept
playing a clip of her over and over again, because she was angry
when she was speaking. He never addressed the content of her
speech, only that she was angry. His comments in my opinion
were simply personal attacks because he couldn't combat her
logic. While I generally don't like Hillary's politics, she
made a good point in this speech. I find it interesting that
even though she made a good point, Michael Savage wouldn't admit
it. Instead, he attacked her on the only thing he could, her
tone of voice. I thought it was lame.
Censorship in the Sims
There is an interesting article on Independent.co.uk. You can
read the story here.
Being a long time player of many online games, Asheron's Call 1
and 2, Dark Age of Camelot, Showbane and Final Fantasy XI, I am
very interested in the economic systems of these games. Like
the researcher mentioned in the article above, I am keenly interested
the relationship of the online worlds to the virtual worlds.
I believe these systems are a fertile ground for research on
many different levels of social and economic interaction. Many
people that I know seem to think these games are for people who
have no social skills, and they have little to no value in the
real world. My experience though as been quite the opposite.
Some of the skills that people need to be successful with these
games are as follows:
Social graces - every social structure has its outcasts and it's
celebrities. Online social systems are no different, there are
customs to be followed, and actions to be avoided. It doesn't
take much to turn yourself into an outcast, and like the real
world becoming a celebrity takes time, effort and a bit of luck.
Leadership - there are many levels of leadership that can be
excercised in these games. From the simplest level of
organizing and leading a hunting party, to the more complicated
epic quest leaders, even up to running an organization to rival
medium sized companies.
Time management - it's easy to lose time in the real world,
especially if you are having fun. In an online immersive
environment losing track of time seems even more prevalent.
However, many quests are time sensitive and managing the clock as
well as multiple groups of people is an integral part of being
Bargaining and Negotiating - there is a tremendous flow of items
and cash between players in these games. Learning how to tap
into this system and turn a profit is a crucial part of building
your characters. Any sufficiently advanced economy engine will
require you to become adept at this in order to progress to the
Strategy and Tactics - there a many different situations within
these games where brute force simply will not solve the problem.
Sometimes you are facing a group of monsters that is simply
overwhelming, other times you are simply facing a more powerful
opponent. In situations like these, a solid grasp of how to
exploit the weaknesses of your enemies and capitalize on your
advantages is crucial.
Diligence and Perseverance - all of these games require a
serious time commitment if you want your character to rise
beyond the beginning ranks. The more powerful you want your
character to be, the more time you will need to invest.
Networking - as in the real life, success in these games often
boils down to who you know. The more people you know and can
draw on, the more successful you will be in your endeavors.
This is a relatively short list of the skills that will be
practiced when playing these games. Success in these games is a
complicated affair, rising to heights of power and influence in
these games takes a lot of hard work and some serious
Thursday, January 15, 2004
Old code update
Ok, so I manage to wade through my code today and get it working. It
took a while for me to slog through it, I'm sure part of the reason it
was so difficult today was that I'm not feeling well. I finally got
the code working though, surprisingly it worked a little better and
easier than I thought it would.
I have to say I'm really impressed with Python's utility. It really
is a great language for expressing complex ideas (not quite as good as
Lisp of course). The comments turned out to be a little more helpful
than I initially thought, although still not as helpful as I would've
Comments in old code
I have been working with a relatively complicated script that I
wrote in October 2003. I wrote this script right before I left
for the ILC 2003. I knew someone else was going to have to run
and be able to work with this script, so I commented it pretty
heavily. Now looking at the script again, I'm finding it hard
to decipher what I was doing, even though the code was
commented. I don't usually comment my code all that well, and
I'm finding the process that I'm going through to understand
this code is pretty much the same thing I would've done had
there been no comments.
I find it interesting that my comments haven't been that
helpful. Perhaps it's that this code is just hard to
understand, maybe I wrote it poorly, or maybe comments aren't as
useful as they are often made out to be.
Wednesday, January 14, 2004
Lisp Editing Mode
For those of you that don't know, I use emacs to write the posts
for this blog. I have it set to text mode with auto-fill so the
posts are kept to an aesthetically pleasing width. One problem
I've noticed with this mode is when I type in a url. It does
the autofill based on the length of text, yet when a url is
displayed online, only the portion between the tags is displayed
in the browser. This can cause a column to be broken up in ways
that I don't find visually pleasing. An interesting mode would
be a blog mode that wraps the text like normal, but if you have
a link on the line or any html element for that matter, it would
only count the number of characters that would be visible in the
browser. I think you could do a simple implementation of this
based just on opening and closing tags. Of course this might be
I bought a new book yesterday. It's entitled "Spidering Hacks",
it's published by O'Reilly. Since I have a relatively strong
interest in text classification, I thought using spidering to
extract information from the web would be a natural next step.
I mentioned in an earlier post that I wanted to write a slashdot
engine that included some of the more advanced featres I've been
contemplating. I really like how the slashdot moderation system
works, but I don't like how much time currently is spent doing
"troll" moderation. There are many worthy posts that never get
marked higher than their initial rating simply because people
spend too much time looking for trolls. Since there is an
extremely large corpus of pre-rated text passages, I think it
should be relatively simple to built a large text cluster and
use an automatic text classifier to bias posts.
We'll see how it works in practice though. Unfortunately I just
got buried at work again, hopefully though I'll be able to get
to this soon.
Lambda the Ultimate has a link to this Lisp Machine page.
This is a great reference site. It is basically a
catalog of all known information on the web relating to Lisp
I think Lisp machines are a fascinating topic. They are
probably the most legendary machine I've ever heard of. When I
was at the ILC, Gerry Sussman talked about their Lisp Machine at
MIT. Even with full access to the operating system code, and
even though they wanted people to hack it, no one ever
successfully hacked the Lisp machine. That's an amazing feat,
that not a single person that went through MIT, even with full
access to the source code, could ever hack it. I think there is
a market for un-hackable web servers out there.
I've heard quite few stories about how powerful, and secure
these machines were. The Unix Haters Handbook is often said to
be written by Microsoft apologists. While one of the writers
does work for Microsoft, thre primary reason he hated Unix was
because of how inferior they were to the Lisp Machines.
I stumbled on a zope based slashdot engine called Squishdot last
night. For the last year or two, I've wanted to re-write
slashdot and add in some more advanced features that I've been
toying with. I haven't wanted to wade into the morass of Perl
code though. I have a basic understanding of Perl, but to
rewrite it, I would have to pick up a lot of extra knowledge (of
course I've been planning to do that too, but you know how that
I think I'll download the code for Squishdot and give it a
perusal. Since it's based on Python and I've been wanting to
learn Zope anyway, I'll head that direction.
Make Your Mac a Monster Machine
There is an interesting article on asktog.com about improving
the productivity of you OS X workstation. He makes some
interesting points about why the dock isn't that great, and how
shows a tool that is far better. He has another article that
specifically covers why he doesn't like the dock, but apparently
that page is slashdotted at the moment.
AskTog is an interesting site, and is definitely worth a browse
if you are using a mac.
Tuesday, January 13, 2004
Marketing is success
I've been thinking a lot about the power of marketing lately. I
see languages like Lisp that is far more advanced than any other
language out there, it's taken decades and the other languages
haven't caught up, yet they are phenomenally successful despite
their technological inferiority.
Compare Windows to Unix/Linux. Technologically windows is still
a joke, it's been behind the times forever. Mac always had a
better user interface, it's far easier to use and it's generally
much more aesthetically pleasing. The *nixes were
technologically superior, the Lisp machines were as superior to
*nix as *nix are to Windows. Yet Windows is the dominant
I've had this long held belief that quality would always win in
the end. Yet the more I look around, the more I notice the
world doesn't bear this belief out. I think the book "Branding"
has it right, once you establish a Brand identity in someones
head, it's nearly impossible to change it. Therefore saying
that first impressions are important is a gross understatement.
That isn't to say that the first time someone sees your product
or service they will remember it. They probably won't, but the
first time it's truly impressed on their mind, they will
probably remember that impression forever. That's a pretty
Blog back up
Woohoo, I'm back in business!!
Previously I had my blog running on a Windows 2000 server, but I
took it down when it started getting hammered with Viruses.
I've been really lazy and didn't put up a new server, I thought
I'd just switch over though and have my blog posted on BlogSpot.
A lot of things have happened since I last posted to my blog, I
won't bother trying to cover them all, but here is a synopsis: I
got my second slashdot submission accepted: href="http://slashdot.org/article.pl?sid=04/01/04/0417209">What
you can't say. It is an excellent article written by Paul
In october I attended the Interenational Lisp Conference in New
York. I was able to meet some of the people that I've looked up
to for years. Notably I got to meet Paul Graham, in fact if you
check his bio picture on his website I am the one who took
I don't remember how much I had written previously about
learning Python, but we are now using Python full bore at work.
I still use C#, but Python is IMO a much better language. I
have a recipe published in the ASPN cookbook on how to unzip a
zip file using python.
Many more things have transpired, but that's enough of the back
story, if anything else is important I'll post about it.