Thursday, December 06, 2007

Boring Stevey Status Update

I had an exciting morning of not getting fired today. Get this: I'm on a trip to Google's Mountain View headquarters, and was glancing at Reddit between meetings, and lo and behold, I was inexplicably in the Reddit Tabloids again, this time for being fired, or so people were speculating (far too hopefully, I might add. Geez.) Needless to say, I immediately put all my other work-related plans on "pause" while I tried to figure out whether I was, in fact, being fired. Can't accuse me of not having my priorities straight!

It turns out it was a minor mixup by an automated system, a system that decided to jump-start its own evolution by going directly from brownian motion to VP-level decision-making (2 evolutionary hops total. Hee.). This automated system had apparently just watched the movie Brazil, and thought it would be fun to send me off to Information Retrieval. So my account was disabled, from which lonely data point the Reddit crowd concluded that I must be getting fired right now, in real time, like OJ in his white SUV. And seeing as I was too surprised to think of a counter-hypothesis, I spent about 20 minutes in an undignified, trouser-soiling panic. Thanks, Reddit!

Anyhoo, after some friends inside Google had undone the mistake for me, I pondered the overall thrust of the Reddit comment thread ("You suck". "No, YOU suck." "Your mom sucks." comment score below threshold) and decided I really ought to write something. Otherwise I'm likely to fall off the wagon and disappear for a year. Time is just whooshing away. I wish I could get back to High School Time, where even a single hour-long class can seem like eternity, and 4 years is effectively infinite. Sigh.

I do have a bunch of half-finished blog posts lying around, but nothing has really gelled yet. So I guess I'll ramble about stuff I've been up to. You know. A status update. Blech.

Incidentally, I've decided to try to limit myself to roughly 1000-word posts, which is about the length of a newspaper column, near as I can tell. I'll prolly just call it 5000 non-whitespace characters, and write an Emacs function to tell me when I've gone over. Off the top of my head, maybe something like:

(defun blog-check ()
(goto-char (point-min))
(let ((count 0))
(while (not (eobp))
(unless (looking-at "\\s-")
(incf count))
(message "%s: %d chars, %d words"
(if (<= count 5000)
"OK so far"
"Dude, too long")
(/ count 5)))))

which, when I run M-x blog-check, faithfully reports:
"You suck."  "No, YOU suck."  "Your mom sucks."
Oops, sorry. Wrong macro. My new function actually tells me:
OK so far:  2177 chars, 435 words.
Halfway there, baby!

So... In 500-ish remaining words, here are the first things that come to mind as I sit in this comfy modern-looking couch in Building 43 of Google's Mountain View headquarters.


I've been doing a lot of JavaScript-related stuff lately. I don't know if JavaScript 2 (aka ECMAScript Edition 4) is going to be the Next Big Language, but it's certainly going to be a Next Big Language. (There's room for more than one, obviously.) And in the meantime, well, JavaScript 1.7 is working plenty well for me.

Let's see... I'm working on a book on Mozilla Rhino with Norris Boyd (the primary author of Rhino, now a Googler in Boston). It's coming along in bursts, and is probably about 10% complete after 3 months of dorking around with it on weekends between football games (that goes for both me and Norris, as it turns out, although his team is 12-0, dammit). But it should be a pretty cool book, assuming football season ever ends. The book is pretty much where all my Joke Output has been focused lately, which hopefully helps explain my recent blog drought.

I've been watching the EcmaScript Edition 4 fireworks with keen interest. While I wouldn't want to name any specific parties, for fear of offending someone, it seems to me that one party, whom I'll refer to as "Uncle Mike", is up to his perverted old tricks again. If, like many others, you feel that "Uncle Mike" is being a "complete dickwad" (to put it as euphemistically as I can) then you can help by getting all your friends and sales people and random family members to switch to Firefox. Really. It'll help.

You might also write a polite letter to your favorite Ecma General Assembly Voting Member Company, telling them how much you and your ten thousand closest friends are really looking forward to the imminent ratification of EcmaScript Edition 4. Or hell, spam all of them. That's what Uncle Mike does.


Continuing in the spirit of freeing all my cats from bag-imprisonment, I should also mention I've been working on an Ecma-262 compliant JavaScript interpreter in Emacs-Lisp. I used to have actual details here, but it ate up 1000+ words, so I'll just summarize for ya.

The short synopsis is that I'm building a complete JavaScript environment in Emacs-Lisp, with two goals: (1) create a world-class JavaScript IDE for Emacs, and (2) permit writing Emacs extensions in JavaScript, since (2a) people aren't exactly flocking to elisp, and (2b) JavaScript turns out to be a better language, now that I know them both in excruciating detail. Emacs is a great environment that needs a better extension language, and JavaScript seems well suited to navigate the popularity-vs.-elegance tightrope I'm faced with.

That's the elevator pitch: puts people to sleep in 20 seconds, guaranteed.

The status-in-brief is that I now have a fully functional, Ecma-262 compliant JavaScript interpreter and runtime in elisp, which began as a port of Narcissus. I'm currently reworking the parser and parse tree to be faster and more IDE-friendly. Next I'll need to turn the interpreter into a byte-compiler that emits Emacs-Lisp bytecode, which should enable it to run as fast as (or faster than) Emacs-Lisp. Then I'll need to actually write the IDE and the emacs host objects.

The whole thing looks to be at least a year out, at least on my current budget of 3 hours a week, so don't hold your breath. I'm giving priority to the IDE functionality, since I kinda need it for other projects, so that could potentially happen by summer.

If you happen to think of a clever name for this project, please let me know.

Other Stuff

Well, this 1000-word limit is... a toughie. I've already blown through it, although hopefully I get some slack for counting HTML tags. But I have to wrap up, so I'll close with some Unsubstantiated Random Thoughts that maybe I can clarify in upcoming crudely-truncated entries:

Google continues to be an astoundingly awesome place to work. Like my friend Dominic says, "it feels like I've won the lottery every day."

Our Rhino on Rails framework is still working great for us, and has finally begun to gain serious internal momentum at Google. Hopefully next year we can open-source it.

Interviewing for tech jobs at Google continues to be really hard (for both interviewer and interviewee), and I've accumulated enough truly useful interviewee-prep tips to merit a full blog post. Look for that one soon.

I still use Emacs to an extent that could justifiably be described as "unhealthy". I'd love to do another Effective Emacs post someday.

I still watch a lot of Anime. Currently watching Le Chevalier D'Eon, which is pretty awesome so far.

I taught my dog Cino to play guitar, a feat which so astounds people that they all say I should put it on YouTube, so there's Yet Another Side Project for me.

I'd love to write more about all this. The 1000-word limit seems to have made it feasible for me to create posts in a single sitting, with no bathroom breaks, provided I can actually go to 1500 "words". So hopefully in addition to all my side projects, I can blog more often.

And with that, I'm going to get back to my "day job" project(s), which are sadly confidential. But they're so cool that if I did tell you about them, you'd be so overwhelmed that you'd have to go sit in one of our $5000-ish massage chairs, like the dude sitting next to me right now.

Man this place rocks.


Blogger Herr Ziffer said...

Let me be the first to congratulate you on not getting fired. I have similar aspirations -- all thanks to your blog.

5:04 PM, December 06, 2007  
Blogger Matt Blodgett said...

You've never written anything boring. Just so you know.

5:08 PM, December 06, 2007  
Blogger offby1 said...

Dude! M-x tex-count-words RET

5:13 PM, December 06, 2007  
Blogger Jonathan Feinberg said...

My naming suggestions for you JavaScript IDE in Emacs:

JIOD (JavaScript In One Defun)
Yangful Warriors on Acid
Jeez (JavaScript in Emacs is E-Z!)
Jeez Edit(h) (The Archie Bunker of IDEs)
GiavaScript (All hail the GOOG)

These are submitted under a Creative Commons "You Must Be Joking" license.

5:50 PM, December 06, 2007  
Blogger Unknown said...

I wish you had been fired so you would blog more :)

Will extending emacs with javascript be like extending vim with python?

6:00 PM, December 06, 2007  
Blogger A. Nonny Mouse said...

you should open source your javascript emacs IDE, asap. I'd submit code.

6:04 PM, December 06, 2007  
Blogger Unknown said...

why do you think your contribuition would be benefic at this point?

6:07 PM, December 06, 2007  
Blogger Austin Seipp said...

You should just call it eJS.

I would have gone the recursive acronym route but it's losing novelty.

6:23 PM, December 06, 2007  
Blogger Peter said...

You should name your editor Ecmas.

6:41 PM, December 06, 2007  
Blogger Andrew Barry said...

you probably shouldn't call it ejacs

6:56 PM, December 06, 2007  
Anonymous Anonymous said...

"ecmas", "ecmacs", or "ecmacscript" would sound nice.

7:12 PM, December 06, 2007  
Blogger Dan Sickles said...


7:17 PM, December 06, 2007  
Blogger Victor Rodriguez said...

ENEL is not ELisp.

Recursive acronyms do *not* go out of fashion.

7:52 PM, December 06, 2007  
Blogger Brian Moon said...

Yeah, the crowd decided they did not like my company's ads the other day and decided to post my personal cell phone number. Gotta love those folks.

8:34 PM, December 06, 2007  
Blogger postmeta said...

You should add a "dude" count to that word counter.

8:46 PM, December 06, 2007  
Blogger Unknown said...

I don't think I'd be able to both continue blogging and remain sane if I limited myself to 1000-ish words per entry. Good luck!

8:48 PM, December 06, 2007  
Blogger Unknown said...

so it's 1000 words base 11.47. no biggie. perhaps call it javalisp? follow in ignominious footsteps...

11:35 PM, December 06, 2007  
Blogger Unknown said...

Emacs already has a character counter. Just hit M-=

If it tells you that you have more than 5000 characters then you're over your limit.

12:24 AM, December 07, 2007  
Blogger Matthew Phillips said...

Even the comments on this blog are top notch.

Except this one.

1:13 AM, December 07, 2007  
Blogger Unknown said...

You could use the *nix 'wc' command:
C-x h RET M-| RET wc RET

2:01 AM, December 07, 2007  
Blogger Unknown said...

Hey Steve!

Your Javascript project sounds really interesting, I can see it providing a nice base for some great new extensions....

If you are looking for some testers, then I whole-heartedly volunteer!... At my company we write a lot of javascript, so testing some stuff would not be an issue... plus we have quite some javascript geniusses here! :)


3:08 AM, December 07, 2007  
Blogger Unknown said...

Any chance you could do it the other way around - write an elisp interpreter in Javascript?

I would LOVE LOVE LOVE to be able to embed an emacs instance + assorted .el extensions in a browser for online wiki editing.

3:23 AM, December 07, 2007  
Blogger Losing Side said...

You script! No you script!
EMACScript (although I doubt anyone will notice the letter transposition)
SNBL (The S is "Stevey's")

I'll let you know if I come up with a good suggestion...

4:38 AM, December 07, 2007  
Blogger Stefano Taschini said...

May I suggest a French acronym for your project?

JEDI: Javascript -- Environnement de Développement Intégré

5:22 AM, December 07, 2007  
Blogger ndimiduk said...

For project names, there's always:

el-Rhino (it's kind of Spanish and a double-entendre)
YASP (Yet Another Side Project)

7:08 AM, December 07, 2007  
Blogger Unknown said...

I second EMACScript. After all, JavaScript is confusingly named and it's more popular than ever now!

(My logic makes total sense. Admit it.)

7:19 AM, December 07, 2007  
Blogger Unknown said...

javathcript ..?

7:40 AM, December 07, 2007  
Blogger gene said...

dang, not fired and here I already had the recruiting SWAT team all spun up. Oh well, maybe some other time. Glad to hear all is well

8:21 AM, December 07, 2007  
Blogger Steven Atkinson said...

"JavaScript turns out to be a better language, now that I know them both in excruciating detail."

Now that would be an interesting blog rant.

9:08 AM, December 07, 2007  
Blogger lahosken said...

For the language name, I was going to suggest EEMCAMCASScript, but now that I peek at other suggestions, I like EMACScript better.

9:20 AM, December 07, 2007  
Blogger Eugueny Kontsevoy said...

How do you manage to work on something non-trivial for only 3 hours a week? It's almost like reading a book one page per day.

I do a lot of "context-switching" between my projects, and 3 hours is typically just enough to "warm up" (2 hours) and start "cranking on all cylinders". And find it nearly impossible to stop after just an hour.

10:20 AM, December 07, 2007  
Blogger Unknown said...

JavaScript IDE Suggestions:

AJIE ("Async JavaScript Inside Emacs")
AJILE ("Async JS Into Lisp Emacs")
YJIME ("Your JS Is in My Emacs")
TickBird (They pick the bugs off Rhinos... also called OxPeckers... that sounds like a Hex Debugger)
Ceros (Works well with Rhino)
YAJEI (Yegge's Awesome JS in Emacs IDE... or Yet Another JS...)

10:23 AM, December 07, 2007  
Blogger Unknown said...

You're back!!
For a moment, we thought you brought down BigTable; with your writing, you know :D

11:20 AM, December 07, 2007  
Blogger Seshagiri said...

Will be looking for that post on the interview prep tips. Please do make it the first to come next.

12:11 PM, December 07, 2007  
Blogger Unknown said...

Hippo (with a touch of hype)

3:57 PM, December 07, 2007  
Blogger Mathias Dahl said...


4:33 PM, December 07, 2007  
Blogger Unknown said...

Your feeds seem to be folded now, with no indication (at least in bloglines) that it is folded.

It would be nice to have the full text back, though, to be honest, your posting frequency does make me clicking through an easier option :)

7:41 PM, December 07, 2007  
Blogger Dan Sickles said...

In a
Sea of

11:08 PM, December 07, 2007  
Blogger piyo said...

Let me say the JavaScript for Emacs idea sounds exciting. JavaScript emitting to Emacs Lisp byte code, wow. I too would like to hear why "JavaScript turns out to be a better language". That would be an epic blog rant.

If you just want to write extensions in another language there's projects like EmacsLisp For Ruby. Of course there's always C ;-).

As far as a name is concerned, try to avoid emacs, "script", "java", the letter "j". As you said, naming is important. Go with an animal name. But since I'm going to be typing M-x ...-build or whatever, make sure its short. "Butterfly" would be bad ;-P.

3:22 AM, December 08, 2007  
Blogger Unknown said...

Folded problem for me too... only 4 lines show on Google reader

4:02 AM, December 08, 2007  
Blogger A. V. said...

another name for your IDE - Ecmacs - is invented by William Bland (

5:02 AM, December 08, 2007  
Blogger J said...

I liked the suggestion above of "SNBL". I think I'd expand it to "Snowball."

- Snowballs are fun.
- Rhymes with COBOL.
- v.intr. 1. To grow rapidly in significance, importance, or size.
- It's a cocktail! (Just don't ask for one in a gay bar).

7:56 PM, December 08, 2007  
Blogger mccoyn said...

"How do you manage to work on something non-trivial for only 3 hours a week? It's almost like reading a book one page per day."

The approach I have found has been to spend 15 minutes doing something everyday and you will eventually be done. Some days I get into it and spend hours, some days I don't even start. I've always gotten bored with stuff before I've finished, though.

I have no idea how Steve makes the time, but I remember hearing that Google encourages their employees to spend 10% of their time each week on their own projects or research. (No wonder Google can attract so many creative people.)

5:29 AM, December 09, 2007  
Blogger TheQuux said...

Gaah! Far too short... bring back the mini-essays!

9:21 AM, December 09, 2007  
Blogger TheRetroSpectrum said...


Hey Stevey, I just wanna say that im still waiting for Wyvern to come back as well as alot of other people on If you could, could you please just send me an e-mail whether you plan to have it back up or not? (, not my gmail) Cause i wanna know if i should keep checking back on it or not... or just stop by and say something on the shoutbox or somthin, that would be cool to. OH, and it would be AWSOME if you could put it back up on christmas this year =D would make alot of ppl very happy including me =D

3:09 PM, December 09, 2007  
Blogger Wyvern Bullfrogz said...


The wyvern community is very anxious to play wyvern. We've been waiting for over a year and I know you are a busy man but it would mean to a lot to all of us if you brought it back up soon. Or gave us a update.
Theres lots of loyal fans still awaiting the game, we haven't gave up.
( or ( You can see for yourself there.

Even if it was by Christmas as a present for all your loyal fans would be really appreciated.


4:10 PM, December 09, 2007  
Blogger Wyverneers said...

Hey Rhialto, as you probably know everybody is waiting on some sort of information on Wyvern. Its been over a year and were still getting promises from the wizards that Wyvern will return. Please drop by the forums and you'll see that people are still dedicated to this game, even if it is JUST a game.
A dedicate Wyverneer

4:20 PM, December 09, 2007  
Blogger Unknown said...

Hey Rhialto, as you probably know everybody is waiting on some sort of information on Wyvern. Its been over a year and were still getting promises from the wizards that Wyvern will return. Please drop by the forums and you'll see that people are still dedicated to this game, even if it is JUST a game.
A dedicate Wyverneer

5:03 PM, December 09, 2007  
Blogger dfghdfhdsgtsdgsddghjg said...

This comment has been removed by a blog administrator.

5:16 PM, December 09, 2007  
Blogger Maciej Katafiasz said...

Jelly, aka "JS in Elisp".

2:07 AM, December 10, 2007  
Blogger kathy said...

Good to know you're still alive. Just hope your side projects won't grow side projects ;-), they always do for me :-(

2:36 AM, December 10, 2007  
Blogger Drew @ Cook Like Your Grandmother said...


Oh good lord. Two seconds utterly perplexed, then I nearly peed myself laughing.

9:29 AM, December 10, 2007  
Blogger binsenkind said...

even some old dwarfs still tell the fairy tales of wyvern to the younger ones, who cant believe their ears and wonder if this was for real...

5:38 AM, December 15, 2007  
Blogger alexlem said...

Steve you may or may not have noticed that the people of wyvern have no source of information anymore (all the forums are down) as to when or even if wyvern is going back up, you need to tell us something, dont leave us in the dark.

9:41 AM, December 17, 2007  
Blogger Qualityman said...

Hey Steve

I was just wondering whats going on with wyvern as theres no way to tell (the forums are down) so me and a few others just wanted to ask you perosnally whats going on, anything would be nice

9:44 AM, December 17, 2007  

<< Home