Another superb rant by Steve Yegge on dynamic languages:
The comment section’s good too – especially the long comment by Dan Weinreb
of Lisp / ITA software fame. Steve’s got the same problem some of my
self-taught friends do (hi Bob, hi Jim!): he’ll say something in a strongly
opinionated way, without
giving supporting evidence. I think that makes people think he doesn’t know
what he’s talking about. So people tend to write him off. But if you talk with
him, it almost always turns out his strong opinions are backed by some pretty
deep experience and insight. I’ve learned to give Steve (and my self-taught
friends) the benefit of the doubt.
Check out this
teardown of a Sony OLED TV.
It looks like Sony has a
standardized architecture for their TVs, which makes sense, but which also
means that some TVs have unused capabilities (such as a multi-core CPU
powerful enough to run a web browser. I wish an enterprising hacker would
figure out how to download code and run them on the TVs – my understanding
from reading Sony’s GPL web site is that they already have Linux and busybox
installed. Oh well, maybe GPL 3.0 will force Sony to make their TVs user-
upgradable in the future.
It’s significant that Sony’s not using the Cell CPU
in their TVs. That was part of the justification for spending so much on Cell.
I assume this means that Cell’s just not cost-effective for TVs.
Tom Forsyth, who recently left RAD to work at Intel on the Larrabee project,
has posted to his tech blog explaining that Larrabee is going to be primarily
a traditional OpenGL/DirectX rasterizer, not some crazy raytracer:
Larrabee and Raytracing
Back in the ’90s I had a home page where I posted some of my code hacks and
articles. If you want to see what I was doing 10 years ago, check out:
(Mostly Java and Anime. Both
of which were leading-edge back then, but are kind of main-stream now.)
Some notes on ThinLisp, a dialect of Lisp for real-time systems. Thin Lisp was
written by Gensym Corporation in the ’90s. The general idea is that you
develop your program using a subset of Common Lisp, and then compile it into
efficient C. Garbage collection is avoided by using object pools, arenas, and
similar tricks familiar to advanced C programmers.
The current home of
ThinLisp seems to be Vladimir Sedach’s Code
Page . Vladimir seems to have used
it for “one small OpenGL” project before abandoning it. He seems to be happily
hacking ParenScript (a Lisp to
The Scheme guys have similar, but more
modest, sysems: Schelp, and PreScheme (part of
Happy Anniversary to me! Google’s automated HR script just emailed me its
Although I miss my friends and former colleagues at
Microsoft, and I miss the games industry, overall I’m still glad I made the
switch. I’m enjoying the new work, and learning all the cool Google
technologies. Now if only the stock price didn’t keep going down. :-)
Some things I like:
- Switching from Window to Macintosh. It took me six months to get used to the subtle differences, but as a user I’m just happier with the Mac. It’s easier for me to use. Now, to be fair, at home I still maintain a Windows Vista machine for the excellent Windows Media Center, but for everything else I use the Mac.
- Better corporate politics. There seems to be less infighting between groups. And while my overall compensation is about the same as it was at Microsoft, the way it’s managed and delivered makes it seem less competitive than MS. Perhaps it’s an illusion, but it feels better.
- Better equipment. I love using a 30” LCD monitor and a high-end laptop, and I love the “we’ll just give it to you” technical support. At MS sometimes I felt that I had to fight to justify minor hardware purchases.
- Fancier food in the cafeterias. I usually eat lunch and diner at work, so the tasty and relatively healthy food is much appreciated. Interestingly enough, I think Google Seattle uses the same food caterer as Microsoft does. I guess we just asked them to cook different food.
- More connected to the Web / Valley culture. Microsoft’s pretty insular. It was good to get closer to the Silicon Valley culture again.
- Able to use open-source projects. Sometimes the open-source projects are the best way of doing something. But Microsoft’s not able to use it, due to a combination of pride, loyalty to its own products, and fear of viral licenses. For example, using Linux for embedded devices is much better than Windows CE. I also find I liked using non-Microsoft technologies like Java, Python and Ruby.
Since you may be wondering, what do I miss from Microsoft?
- I miss the Xbox project. Right now my old team is probably starting to plan the next generation of Xbox, and it would have been a blast to have been a part of that process.
- I miss the free game betas, and using beta software in general. (I’m a sucker for new features!)
- I miss some of the Microsoft-specific technologies like C# (still better than Java), Visual Studio (still better than Eclipse), and F#.
- Surprisingly, I don’t miss my old single-person office very much. It’s true that a group office is distracting. But it’s also helpful for sharing ideas and for keeping focused on the project.
Well, that’s it, better get back to work!
One very nice habit of Western game companies is that many of them share their
technical knowledge with competitors. Insomniac Games is a very good third
party console game developer that has concentrated mostly on the PlayStation
platform. Their recent games include the shooter “Resistance Fall of Man” and
the action platform Rachet and Clank series.
At this year’s GDC they announced
the “Nocturnal” initiative. It’s not a
whole game engine, but rather a collection of useful utilities. Things like
logging code, C++ object serialization, and a cross-platform performance
monitor. Some of the utilities are Playstation 3 specific, but most are
applicable to any modern game platform.
Much of this code would be right at
home in a “Game Gems” book, but it’s even better to have it freely available,
on the web, with a BSD-style license. Good for you Insomniac!
publishes technical papers in a GDC-presentation-like format on their Game R
& D Page.
Why do so many
game companies share information like this? I think it’s for a number of
mutually supportive reasons:
- It’s a form of advertising, to show off how smart and competent the developers are. This is helpful in attracting job applicants and impressing publishers and game reviewers.
- It educates all game developers, some of whom will eventually end up working for the original developer.
- It encourages other developers to share their technology, which benefits the original game developers.
- It reduces the value of middleware, driving down the cost of middleware.
Game developers can give away source code because, unlike other kinds of
software, the major intellectual property in the game is in the copyrighted
and trademarked art assets, (the data) rather than in the code. Yet, at the
same time, game quality is directly tied to the performance of the code. This
creates a unique economy in which it is profitable for game developers to
exchange performance tips with their competitors.
And it’s a lot of fun for
armchair developers like me. Now if only we can get Naughty Dog to open-source
their GOOL and GOAL Lisp-based game engines. :-)
OS X allows you to format your file system as case-insensitive (the default)
or case sensitive (like Linux.) I use case-sensitive, to simplify porting and
working on Linux software.
Unfortunately, H&R Block’s TaxCut 2008 program
won’t work if installed on a case-sensitive file system. It fails because it
can’t find files, probably due to differences between the case of the file
name used by the programmer and the actual case of the file name on disk.
A work-around is to use the Disk Utility program to create a case-insensitive
image, and install Tax Cut on the image. I used a 600 MB image, so that I can
store all my tax forms there too, and eventually burn the whole thing to CD to
A good, three-part interview with Tim Sweeney (the other FPS graphics guru):
His main thesis is that soon
GPUs will be come so programmable that you won’t bother using a standard
Graphics API to program them. You’ll just fire up a C compiler. I think he’s
John Carmack is experimenting with a “sparse octree” data structure for
accelerating 3D graphics rendering:
Carmack on Octrees
The direction that everybody is looking at for next generation, both console and
eventual graphics card stuff, is a “sea of processors” model, typified by
Larrabee or enhanced CUDA and things like that, and everybody is sort of
waving their hands and talking about “oh we’ll do wonderful things with all
this” but there is very little in the way of real proof-of-concept work going
on. There’s no one showing the demo of like, here this is what games are going
to look like on the next generation when we have 10x more processing power -
nothing compelling has actually been demonstrated and everyone is busy making
these multi-billion dollar decisions about what things are going to be like 5
years from now in the gaming world. I have a direction in mind with this but
until everybody can actually make movies of what this is going to be like at
subscale speeds, it’s distressing to me that there is so much effort going on
without anybody showing exactly what the prize is that all of this is going to
Second-best quote is that he wants lots of bit-twiddling operations-
per-second to traverse the data structures rather than lots of floating-point-
operations-per-second. Must be scary for the Larrabee and NVIDIA CPU
architects to hear that, this late in their design cycles.
Hopefully John will come up with a cool demo that helps everyone understand whether his approach
is a good one or not. Hopefully the Larrabee / NVIDIA architectures are
flexible enough to cope. (Interestingly, no mention of ATI – have they bowed
out of the high-end graphics race?)