CocoaHeads Silicon Valley at Apple on Thursday, Apple 17, 2008

The next CocoaHeads Silicon Valley meeting will be on Thursday, April 17, 2008 — that’s tonight! — at 7:30 in the De Anza 3 auditorium at Apple. That’s just inside the south side of De Anza 3, right across Mariani Avenue from Apple’s Infinite Loop campus in Cupertino. See the web site for directions.

This month’s presentation is all about designing and implementing your human interface. User experience and human interface design are critical for Mac OS X software to get right. To that end, there’s even going to be a UI makeover as Scott describes in his post on the meeting!

Thanks a ton to Scott Stevenson, Steve Zyszkiewicz, Michael Jurewitz and Joar Wingfors for organizing!

In general, at a CocoaHeads meeting we do some introductions, have a presentation including Q&A time with the presenter, and then have an open Q&A and demo-your-cool-app period. After the meeting there’s more independent mingling and discussion until it’s time to go at 9:30. Often a subset of the meeting moves to BJ’s Brewhouse in Cupertino, which is right in front of the Apple Infinite Loop campus on De Anza Boulevard.

NeXTstation Color: Free to good (local) home

I have a complete 25MHz NeXTstation Color that I want to get rid of to a good home — in other words, you should want to use in some capacity as a NeXT workstation, not make its case into art or something. This isn’t some crappy PC of which there are millions with tiny variations among them, it’s a workstation of which only a relatively small number were made.

Specifications:

  • NeXTstation Color
  • 17-inch NeXT Color Display
  • 16MB RAM
  • 400MB SCSI HD
  • NeXT Keyboard (non-ADB)
  • NeXT Mouse (non-ADB)
  • NeXT Sound Box
  • Appropriate cabling.

It worked the last time I turned it on, which was probably 2003. It’s been in a box in my closet — the box the movers put it in when I moved out here four years ago. I don’t see why it wouldn’t work, but I wouldn’t guarantee it. The motherboard battery will probably need replacing, for one thing.

Want it, and reasonably local to Cupertino? Ping me and we’ll talk.

Update: The NeXTstation is claimed! Thanks for the impressive response — who knew so many people would want a workstation that’s old enough to drive?

Apple TV 2.0.1

A new version of the Apple TV software is available! And what’s more, after updating to Apple TV 2.0.1, I found that I can actually use my YouTube favorites and subscriptions on my Apple TV!

This is great, because I mark videos that I’ll want to watch again as favorites, and I have a number of subscriptions set up to interesting videos — like those from the Computer History Museum and Zendulo — that aren’t yet available as video podcasts.

YouTube favorites and subscriptions hadn’t worked for me in the past because I have a YouTube account that’s linked to my Google account — that is, a YouTube account that ends in @gmail.com. After updating to Apple TV 2.0.1, I just had to log out from my YouTube account and log in again, and everything came up just fine.

peterb hits it out of the park

peterb of Tea Leaves, in Game Developer To World: Please Revolve Around Me! summarizes the position taken by Tim Sweeny of Epic during an interview thusly:

  1. People aren’t buying expensive enough PCs.
  2. Even the expensive PCs aren’t good enough to run his games.
  3. People who buy cheaper machines with Intel integrated graphics are giving their money to Blizzard instead of Epic.
  4. This aggression cannot stand. The solution is that everyone except us should change what they’re doing and buy machines with more expensive graphics hardware.

This problem is endemic in the game industry.

The most recent example, I was going to buy my girlfriend The Sims 2 for Valentine’s Day to play on her MacBook. Oops! Her MacBook has the dread Intel integrated graphics and therefore can’t run it! Or, indeed, any of the other games ported to the Mac using the same technology! Thanks a bunch, it’s not like anybody has a MacBook! (Except, of course, everybody these days.)

But wait, what are the actual system requirements for The Sims 2 on Windows? 800 MHz CPU and a T&L-capable video card, or 2GHz CPU and non-T&L-capable video card. Her MacBook definitely meets those criteria, and it’s also a huge portion of the Mac customer base for a game like that. I wonder if the PowerPC build would run acceptably under Rosetta — the original Sims ran fine on an iBook DV a half-decade ago, after all, and it’s not like The Sims 2 is new.

I also heard a lot of commentary around the time the iMac G5 debuted about its “terrible” 5200FX video chipset. After all, it meant that a lot of games people were working on for then-high-end machines wouldn’t run! Except, uh, why wouldn’t they run? Because developers didn’t actually design for what users were buying! They were designing for some ideal system that very few people had, and beyond that they had the gall to complain that they weren’t selling many games. Hmm. I wonder why. If you limit your market to people with beefy dual-G5 systems with high-end video cards who are allowed to install games on them, maybe that’s not such a big market… On the other hand, if you design for the iMac G4, and the iMac G5 comes out, chances are you’ll be able to sell to a lot more people…

Game developers should be targeting the systems people are using rather than systems with every feature under the sun. No wonder casual games do so well — nobody else is willing to serve that vast majority of the market!

So if you’re writing a game, or thinking about writing a game, or any other performance-sensitive application, look at what the bulk of the users you want to target are currently using and design for that. Neither you nor your users are likely to be disappointed with the results.

Free font happiness! Inconsolata, Kaffeesatz and Tagesschrift

I love good fonts. It’s one of the things that I enjoy most about Mac OS X — the font rendering is *wonderful*.

Lately for programming and Terminal use, I’ve used [Inconsolata][1] by [Raph Levien][2]. It’s a very clean monospaced font that renders really well at 12 points and higher, and is perfectly usable for coding at that size. It avoids the [Vera Sans Mono][3] problems with too-thin horizontal lines at common sizes.

Tonight — thanks to [Jens Alfke][4] and his [logo design][5] for the [Mercurial][6] distributed SCM system — I’ve discovered the free fonts from [Yanone][7], specifically [Kaffeesatz][8] and [Tagesschrift][9]. Kaffeesatz in particular is a pretty slick font; hopefully I can find a use for it in something.

Any other free & open font suggestions? Let me know in the comments. I can always use more great fonts.

[1]: http://www.levien.com/type/myfonts/inconsolata.html
[2]: http://www.levien.com/
[3]: http://www.bitstream.com/font_rendering/products/dev_fonts/vera.html
[4]: http://mooseyard.com/Jens/
[5]: http://mooseyard.com/Jens/2008/02/make-mine-mercurial/
[6]: http://www.selenic.com/mercurial/
[7]: http://www.yanone.de/
[8]: http://www.yanone.de/typedesign/kaffeesatz/
[9]: http://www.yanone.de/typedesign/tagesschrift/

Arc in a nutshell: It’s no Dylan (and that’s too bad)

What’s the point of [Arc][1]? Infix-syntax [Dylan][2] is a much, much better language, especially once you add in the changes and features from the [Dylan Design Notes][3] and the infix version (but keep the prefix syntax). Really, Dylan is pretty much the Ultimate Lisp in a lot of ways.

Arc is essentially `(decr Scheme)` with a couple of interesting additions to try and make up for the downsides. Downsides like a lack of international character support (what decade is it again?!) and an unhygienic macro system.

[Dylan — as designed in the **early 1990s**][4] — really is `(incr Scheme)`. It’s essentially Scheme re-hosted atop an enhanced CLOS-like object system. With the prefix syntax, it’s even very Scheme-like in actual use.

So, yeah. If you’re interested in Arc, check out Dylan. It’s a better language, and there have been implementations available for 15+ years.

PS – The original Dylan had a [``][5] class. In the early 1990s.

[1]: http://www.arclanguage.org/
[2]: http://www.opendylan.org/
[3]: http://amigos.rdsathene.org/other/prefix-dylan/design-notes/home.html
[4]: http://amigos.rdsathene.org/other/prefix-dylan/book.annotated/preface.html
[5]: http://amigos.rdsathene.org/other/prefix-dylan/book.annotated/ch12.html#unicode-string-class0

OLPC group in Silicon Valley

If you have an OLPC — or have set up VMWare or another environment to emulate one — and you’re in the Silicon Valley area, there’s a group of enthusiast hackers forming called [SV_OLPC][1].

I ran into the founder of the group completely randomly after leaving [NSCoder Night][2] a couple weeks back, and it’ll be interesting to see just who is doing what with the OLPC stack.

[1]: http://groups.google.com/group/sv_olpc
[2]: http://nscodernight.com/

Jon Harrop dives into OCaml on LLVM

As seen on the LLVMdev mailing list: Jon Harrop, Fibonacci example in OCaml:

Here is a complete 104-line native code compiler for a tiny subset of OCaml that is expressive enough to compile an external Fibonacci program: [...]

The compiler is itself written in OCaml, of course; for those who don’t know, OCaml or Objective Caml is an object-oriented dialect of Standard ML, a purely functional language.

Jon’s name rang a bell because I just listened to the second of two podcasts from .NET Rocks on the F# functional programming language — Jon Harrop Makes Us F# and F# Moves Forward — that Microsoft will be including with future versions of VIsual Studio. F# is itself a derivative of OCaml, runs atop the .NET Common Language Runtime, and can interoperate with other code

F# is interesting because, due to its functional and side-effect-free nature, one can get a huge amount of parallelism out of straightforward code. (It’s the lack of side effects that allow such analysis to be performed.) The Xbox Live matching service, for example, is using a TrueSkill engine developed in F# by Microsoft Research.

OCaml on LLVM is interesting in a lot of the same ways: You have a functional language that’s very amenable to all sorts of analysis and optimization, and an abstract platform that can run on an extremely wide variety of systems very efficiently. It’s really the best of both worlds, where you will be able to write the parts of your software that need to be highly parallel and mathematically rigorous in a language amenable to it, and interface that to the rest of your application in a very natural fashion.

It’s great to see that Jon is enjoying exploring OCaml atop LLVM and I can’t wait to see what kind of fun results!