Archive for July, 2007
July 24, 2007 at 4:20 pm · Filed under General
the stock market tanked today, ouch.
Had lunch at Microsoft (nice). Met some interesting folks. I met the
guy behind French Maid TV… nice guy from Hollywood.
Terry then introduced me to Alex Tew. He’s the guy behind
The Million Dollar Homepage… smart guy.
He’s hanging out in the valley with the Bebo founder. I did
look at his socks, but he wasn’t wearing the space invader socks today.
When I got back, the power went out in the city … like 5 times in a row. This basically
sucked the productivity out of the entire day for everyone here. It also took down
some of the major sites out there on the internets. Besides our time, the only other
thing we lost was a RAID controller on a system. This wan’t a critical system and
all other internal systems came back fine. We pulled the drives and moved
them to an identical system that wasn’t heavily used.
The ad-network was not affected at all. I think the day has shown
that the results of some decisions made a while
back have paid off really really well.
still… a ..weird day…
July 23, 2007 at 4:08 am · Filed under General
Maybe Give that EMACS a try again…
I don’t know why but I have had Lisp on the brain for the last few days.
I think it was because I was thinking of switching back to emacs.
How many times have you heard this story. “I used to use Emacs, but then after
switching computers, I lost my .emacs file so I just switched back to Vi.” That’s
me. After one quick look at the ubuntu app search, I found that they are on EMACS 21
and the world and all their new goodies (Rails on EMACS
are on EMACS 22. After about 20 minutes of that thought, I happily went back to using
Vi. When I have a spare week, I’ll spend the time re-introducing myself to EMACS
and it’s internals… or so I thought.
LispBox & Web Serving
Later on that evening, I did read a blog entry on some lisp programming that pointed to Peter
Seibel’s LispBox. Aha. He gets it. I don’t want to screw around
figuring out stuff… I want a one click install to the magical lisp stuff. I’ve tried to setup
EMACS in the past to have all the bells and whistles necessary to do C++ work. That isn’t
an easy task. This was not going to be like that, so I gave it a try. Specifically I tried the
Allegro Install since the disclaimers said it would have the most magic. I don’t mind commercial
software and I want to see the polished tools.
I ran the software. Very nice. It has the famous SLIME extension to EMACS already lit up.
It definitely had that feel like… this isn’t your normal Editor/IDE environment. I’ve used EMACS
in the past, this was a bit slicker. It reminded me a lot of the Smalltalk browser/eval system.
This might be a little bit like what those old Symbolics guys would rant about.
After I got over appreciating that, I immediately went to the chapter in his book on web programming. I tried out the examples.
I got some web pages to serve and then after noticing the time, pretty much stopped there.
irb
I needed to get back to work on some other stuff, and that whole experience was fun for about 20 minutes.
The next step for me is to spend some time learning about this particular REPL environment.
I’m just not even remotely familiar with it to be productive.
I need to learn the Ruby equivalent of…
“what is that Ruby method on a string?? hmm.. I’ll just do.
irb
“”.methods.sort
Oh yeah, that is the one.”
Done. This is not a Lisp failure, this is a me failure. I just need that tool in my tool chest
before I spend any more time on this. Until then, it is good to know, though, that when I have the time,
the environment is there waiting for me… all set up and ready to go.
Thought. Is there a Rails for Lisp?
My curiosity from the web exercise did leave me with a question. Was there an equivalent
of Rails for Lisp. I’ll bet with a completely dynamic environment like this, there has
to be something like Rails.The web stuff in the Practical Lisp chapter was pretty barebones. Any good web development
framework today needs to be on par with Ruby on Rails. After a little searching, I found a few
scraped together libraries. None were top-to-bottom frameworks. There were lots of posts
on the Reddit ‘fiasco’. There are also a lot of good posts on Erlang which does have a Rails like framework called ErlyWeb (more on that later). There is also Arc… but we’ll have to wait until that
comes out to see if that is going to be interesting. Nope, it doesn’t look like the community has anything yet.
Hung Up on Threads Again
One interesting thing to note. The lisp community (like a few other languages) seems to be hung up
on having a multi-threaded lisp implementation for web serving. Why? If the LispBox sample is any
indication, only a few of the frameworks were capable of performing the samples in the book. Also,
from the Reddit fiasco posts, there was mention of the servers having deadlocking issues. Why
are they hung up this? Do they really want to follow in Java’s footsteps on this? Unfortunately,
this isn’t a ding on Lisp. A lot of languages have problems with the hosting environment. The only
major one that doesn’t is PHP. In an old post on PHP, I elaborate
a tiny bit on the benefits of the PHP multi-process model.
For the Lisp situation, I don’t know enough to understand why most of the web stuff requires a multithreaded
common lisp system. Is it the sexiness of having all the data available as shared state? Maybe the
warmup time for the runtime is quite high. More likely, it is the memory footprint. I took a look at
mod_lisp, and it just uses sockets to communicate to a long running process. I think the community
should look at multi-process based solutions if they want to have scalability and reliability. They could
then use any of the runtimes that they have available right this moment.
Back to the Real World
Anyways. I resumed my work back in the real world. Towards the end of the day, however,
I was scanning one of the iphone dev groups and found
this post by Jesse Andrews.
The subject was about a caltrain schedule app for the iphone. That sounded interesting and I could actually use it. So I checked out the post. As I got to the bottom of the post, he mentions that he found some “hunks of lisp” in the html of the site.
What? Lisp? Again
I got excited and raced to do the ‘view source’ on the page. What would it reveal about the framework
that they used for their site??
(while (re-search-forward "</th><td" nil t)
(backward-char 3)
(save-restriction
(narrow-to-region (point) (progn (end-of-line) (point)))
(goto-char (point-min))
(let ((s '(1 1 3 2 3 2 3 2 2 3 2 3 2 2 3 2 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 2 3 2 3 2 3 2 2 3 2 3 2 2 1 1 1 1 )))
(while s
(re-search-forward "\\(<td[^<>\n]*>\\)\\([^\n<>]*</td>\\)")
(replace-match (format "\\1<!%s-%d%s->\\2" "-" (car s) "-"))
(setq s (cdr s)))
(or (looking-at "</tr>") (error "Foo")))))
I’m not a lisp expert but that sure looks like EMACS lisp. So this doesn’t count as a lisp site. It might
qualify for a daily WTF, though.
Hmm. Still, maybe I should look at EMACS again.
July 22, 2007 at 11:02 pm · Filed under General
Like A Boss
Originally uploaded by drudru
I don’t know what it means, but it was what was ‘tagged’ on the freight elevator I have to take in the morning (I ride a bike in to work).
Like A Boss
I sense a very powerful meme in the making here.
July 22, 2007 at 10:55 pm · Filed under General
BART Perrier Ad
Originally uploaded by drudru
Another interesting artvert
July 22, 2007 at 10:11 pm · Filed under General
This vim tip is just awesome.
Essentially, it gives you a control key shortcut for buffer cycling. Nice.
July 21, 2007 at 9:23 pm · Filed under General

I’m very into Keyboard shortcuts.
A while back I wanted to write a global system hook that would allow me
to use EMACS/TENEX style navigation bindings (CTRL-E,A,N,P) on normal windows
programs. It turns out that somebody already figured out how to do this.
Check out this article at LifeHacker on AutoHotKey.
Overall, it works perfect and it feels really empowering. You can really put your keyboard
to work.
Also, if you want a really comprehensive list of keyboard shortcuts for
windows and some of the more popular apps, check this forum post out.
July 18, 2007 at 5:00 pm · Filed under General
The other day, I got snagged by the headline Flektor Case Study: Counter to prevailing Web 2.0 wisdom.
Hey, I’m a sucker for contrarian articles. I also like and understand the Web 2 dot oh.
Yet… I think the whole industry needs to, as they say in Hollywood, “pull it back a little”.
I’m not hot on the whole widgets thing, but I do have some friends here in the valley
that are in that industry (RockYou!,
slide, and Meebo).
So I gave it a read. After a few paragraphs it got even more interesting.
These guys were game developers and they used that development style/methodology
to produce their product. They focused on several things. First, they focused on
quality and had a large QA staff for a company that size. Second, they made
their app creation tools super simple to use. The product managers and the
designers could turn around new products very quickly. The analogy used
in the article is that of level editing on top of a game engine. Neat.
As I read on, it was mentioned that the founders were Jason Rubin and Andy Gavin.
Aha! Of course! These were the guys that made Crash Bandicoot. They were Naughty
Dog software, which was purchased by Sony. These guys are Lisp hackers. They were a poster child for the Franz Lisp company. I always thought it was cool that these ex-MIT hackers used Lisp to build great console games. Dynamic languages and garbage collection
aren’t supposed to work in the console world.
I searched my blog for the old post I had on GOOL. I thought I posted about their
technology before, but I can’t find the post. Essentially, they had a great
Lisp derivative and runtime that ran on the console. The system would allow for hot code replacement right from Franz Lisp/emacs/whatever. Essentially, you could imagine having
a character on the screen doing their death sequence. Then you change some
code/state and bring them back to life. Real RAD development for gaming. Something
that would be really really hard to do in MSVC. Not only that, but the system was
fast. For example, their language also allowed you to tie cpu or gpu registers to variables.
Very good tech and very good games. Who knows if they used Lisp at Flektor, but I definitely
need to check out their product now to see what the quality level is like.
Anyways, there it is again. That pattern. Certain people who do extraordninary
things tend to continue to do extraordinary things. If I were an investor, I would
place a lot of value on this team. These guys really know how to execute.
Update: Got a few comments about GOOL. When I read the papers
back then, their language was called GOOL. I think it was 1998 or earlier. It was the Oopsla
conference in San Jose when Anomorphic Systems got bought by Sun. The newer language GOAL
was created for the PS2 when they did Jax and Daxter in 2001.
July 18, 2007 at 1:49 pm · Filed under General

The theme I had up here yesterday, wasn’t working out. It didn’t have some very important features. For example, it didn’t
link to the archives. That meant that any search engine hitting my site would fail to find
my old posts. Another problem was that it wasn’t widgetizable and I needed to add a few
things. It looked nice, but it had to go.
My new theme is called qwilm. It was my second choice the last time I was
getting a new theme. The original author’s home page has disappeared off of
the net, but it works fine. I really like having the ‘recent comments’ section on the home page.
I’m always surprised by the great feedback that comes in. Now they will be a lot
more visible.
Anyways, check it out and let me know what you think. Definitely let me know if you see any issues.
Next entries »