inicio mail me! sindicaci;ón

Archive for July, 2007

Weird day

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…

Caltrain.com written in EMACS Lisp?

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. :-)

Like A Boss


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.

BART Perrier Ad


BART Perrier Ad
Originally uploaded by drudru

Another interesting artvert

This Vim tip rocks

This vim tip is just awesome. Essentially, it gives you a control key shortcut for buffer cycling. Nice.

Keyboard Shortcuts

AutoHotKey

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.

Lisp Hackers Hit Another Startup Homerun

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.

I switched themes again

qwilm theme

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 »