Avi Bryant Keynote
I need to learn Smalltalk. Avi seems to be one of the smarter people I’ve ever seen speak.
I don’t come from the outside, I come from the future - Avi Bryant (received with laughter)
Avi Bryant is much younger than I would have thought.
Ruby in 2025
- Fast JIT compiled VM
- Multiple commercial Ruby vendors
- Best way to predict future is to invent it.
He’s not talking about Ruby in 2025 he is talking about smalltalk today.
Ruby and SmallTalk are the same language. Slide of Urdu and Hindi of the same phrase. Writing is different but they are said the same way and mean the same thing. People who speak urdu and hindi can talk to each other and apart from accent not know that they’re speaking “different” languages.
Ruby community can treat smalltalk as alien technology that we can learn from.
Ruby’s features make it inherently slow: false. True 20 years ago but we solved that problem
sun started strongtalk bought it all back and turned it into the JVM
And this is one of the greatest tragedies of the technology world.
Does performance matter? twitter cares, the rest of us don’t. ruby is fast enough. but there are other reasons to want fast implementations. Namely we want to be able to write ruby in ruby. Right now too much of the stdlib is written in C. (Note: there was a great blog post a while back about why it is important for a language to be self compiling a while back)
What if your Ruby ObjectSpace were transactional and persistent, could be distributed, wasn’t limited by memory, with no restrictions on what type of object (threads, etc.)
GemStone does this for SmallTalk now.
Objects get better with age - big difference between rails and seaside, in ruby you use objects for milliseconds. in smalltalk you keep them around for a really long time. A lot of the work is in creation and deletion of objects, if you get rid of that then you have a much better ratio.
State is your friend. In web development we work on making web apps stateless. If you embrace state then you can do a lot of amazing things, you can have a paradigm that feels like desktop gui programming.
Questions
Is SmallTalk good at interacting with the rest of the system?
If you use a smalltalk environment you are giving up textmate, svn, grep. You don’t work with text files, you work with objects. It does not integrate with normal dev process. Can you call out to C or environment? yes, but he likes ruby api for extending C libraries better. The bulk of DabbleDB is in Smalltalk, but they use http to call to ruby to handle some integration.
What is the first step to having turtles all the way down? (pure objects)
Implementation of the Ruby Standard Library in Ruby instead of C.
I agree they are similar. It seems like there are significant differences (mixins, multiple inheritance, argument passing, etc)
He thinks that Ruby can be implemented on a stock smalltalk VM. He’s implemented ruby mixins in smalltalk as an exercise.
Could you run us through an example of how you develop in Squeak? How do you cleanup when you have messy data without control-c and starting over?
He brings up a smalltalk image (think core dump of irb session) of dabbleDb. If you don’t save, you can go back to a fresh memory DB. He keeps a DB instance in the smalltalk image and he can just reset the DB. “So your objects may get screwed up, but you through them away”
What about Rubinius?
He thinks that it is great that there are all these implementations going on, but commercial smalltalk vendors have spent a whole lot of time and money to get really optimized VMs.
Rails seems to be moving away from object systems towards loosely coupled interfaces?
He agrees that Rails and Seaside/Smalltalk have very different philosophies. But he thinks that it is a good idea to see what other dynamic languages (smalltalk) has gone. If you reject that, cool, but you should at least know what is possible. He is opinionated but with different opinions than rails.
Seaside was a tough sell to ruby and java people until I showed them the debugger in seaside. Demo it
You get a stack trace in the browser, but if you hit debug, you get a debugger in your image. You can edit the method in the debugger an save it, then hit proceed in the browser and finish the response. Similar to the irb command line debugger David shows this morning. Continuations let you hit back and go back to the error that you had before. I’m describing it poorly, but that is one of the best things I’ve ever seen. You can run the debugger or class browser in the browser.
I know a lot of SmallTalkers who are glad to be off it because of image based development and collaboration
It did suck. First thing that he did when he got his first consulting gig was to write his own version control system. Similar style to Git other distributed version control systems.
More Articles on Software & Product Development
- Agile With a Lowercase “a”
- ”Agile“ is an adjective. It is not a noun. It isn’t something you do, it is something you are.
- How Do You End Up With A Great Product A Year From Now?
- Nail the next two weeks. 26 times in a row.
- Build it Twice
- Resist the urge to abstract until you've learned what is general to a class of problems and what is specific to each problem.