- In yesterday 's presentation, Dan Grigsby said "You' re not really on the Fringe

if you work for the Man . "

- I was in a meeting with " The Man ": Steve Ballmer, talking about how to recruit

young programmers straight out of school who might not think of Microsoft as

an option -- perhaps they've bought into the hype about Google

- " Are you gonna go work at Google and just so you can increase their market

share from 65 to 66 % ? Come to MS where every day is a glorious day ! "

- I believe that if you want to change things, the best way to do so is work in

difficult circumstances

- Three things I want to talk about

- Go see Steve Jobs' Stanford commencement address

- He talks about " connecting the dots backwards " in viewing his life

- Looking at that path, he was able to see that he was going to end up where

he was today

- People talk about how they accidentally wind up where they are,

but really, it's all a result of the choices you make

- Back when I was a kid, 6502-based machines were all the rage (Apple ][,

Commodore 64 and so on)

- (I'm old but I have the Asian mystique working for me)

- I came up with a lot of things that I didn't know already existed

- Metaprogramming

- 6502 assembly very limited

- Built a 16-bit interpreter kind of thing

- All my 16-bit instructions were prefixed with a BRK (break) instruction,

which triggered a call to an IRQ routine which would then start the

interpreter

- Another thing I did as a kid: building bridges between tech

- Commodore disk drives had their own processors

- I used to build bridges to conenct these smart peripherals to all sorts

of things

- Kids today, they're spoiled! You have to remember that a floppy drive

back then had throughput similar to a 1200 baud modem. Anyone remember

those?

- Went to University for a while

- Did not do computers in university, I did chemistry and got a doctorate

- I used computers, but did not program them

- Learned lots of skills, the most of important of which are:

- Teaching

- Writing

- In undergrad, when you turn in a paper, you just get a grade and

don't care about the feedback

- In grad school you can't do this; your supervisor won't okay it

until s/he likes it

- When I graduated, I realized I didn't want to " do the science thing "

and ended up doing computers

- Looked to see of there was a hot new thing that people weren't doing --

in a drag race, if there are fewer competitors, I'd have a good

chance of winning

- I took up Delphi

- My advice: look for something that people aren't much into and link it to

someething hard

- I did this by building bridges between Delphi and COM

- By doing this work, introduced to Michael Edigan, who ended up

being a mentor who opened my eyes to new things, including GSL jam

- One of these things was XML, which was trendy, hip and even

fringe at the time

- Ended up working with Don Box (SOAP spec, amongst other things) --

SOAP was awesomeness if you looked at the original intent

- This was all before I got into dynamic languages, so I built code

generators to make my life easier

- Does anyone remember the Treedragon blog? (a couple of hands go up,

including mine)

- I remember its author, Rhys, ranting about dynamic languages, saying they

sucked

- I truly believed this

- I recommend this book: " Advice to a Young Scientist ": P.B. Medawar

- Back when I was getting started, wanted to build stuff for people to use

- Like many people, the way I did this was via open source

- There's an open Source entrepreneur problem: the belief that " if you

build it they will come "

- Building it might actually be the easy part; getting people to come to

your solution may be the hard part

- You can get around that by working for a big company

- When I interviewed at Microsoft, they didn't tell me what I was

interviewing for

- I met with Scott Guthrie, who created ASP.NET, after my interview -- he

told me about the plan to release a cross-platform version of the CLR

and its support for dynamic languages

- IronPython is the fastest implementation of Python out there

- Of course, " fastest " needs to be defined. After all, there are three kinds of

lies, damned lies and bechmarks

- It's fastest in terms of throughput, but its startup is slow

- It was harder to build IronPython than it should have been

- It took a smart guy (Jim Huginin) and a smart team to make lots of

little decisions well

- Could we get a win the second time and extract a DLR -- dynamic language

runtime -- from IronPython?

- To prove it would work, we would use the DLR to build other dynamic languages

- That was the ideal, then there's the reality

- Back in May, we demoed Rails running under IronRuby -- really slowly and

consuming a lot of memory

- We're now working on performance

- Startup time turns out to be more important than you think it is

- Unit tests are the worst kind of code you want to run through a compiler

-- many are run only once

- Realized that we had to go off and build an interpreter

- We were working backwards from a compiler

- In getting from the language front end to IL, you have to build two trees --

a language-specific tree and a corresponding, more general DLR tree

- There's cost in building those 2 trees, and the DLR tree is 10x as costly

as the language-sepcific tree

- The ideal: we could put effort into building the DLR

- We have a working interpreter, just not that fast

- Have to adjust goals

- The world of Ruby development is " a sea of Macs ", which sometimes makes people

wonder who the intended audience of IronRuby is

- Ask yourself: What parts of my app should I write in Ruby?

What shouldn't I write in Ruby?

- You're on .NET because of the library

- If Rails were " done " -- for some level of " done " -- should portions of it be

written in a statically - typed language ?