Minding Your Business With Smalltalk (Part 3 of 4)
17 May, 2007
Previously we spoke with Michael Rueger and Steve Hunter. From Michael we found out about the perspective of writing and supporting open source software. From Steve we found out what it is like being a consumer of open source software. Today we talk with Bert Freudenberg. From Bert we hope to learn what it is like being a Smalltalk programmer contributing to open source.
Bert is a free-lancing software engineer living with his wife and four children in Magdeburg, Germany. Most time not spent with his family is currently focussed on porting Squeak/Etoys to the “$100-laptop“, a learning tool for children. Bert started working with Smalltalk in the early nineties. After receiving his PhD from the University of Magdeburg, he worked for Impara, a small company specializing in media-heavy Squeak development. Being a member of the Squeak community from its beginning, Bert was elected as Squeak Foundation Board member in 2006 and 2007.
Ron: Bert you have been working in Smalltalk for a long time. Can you tell me what factors of Smalltalk keep you working in this language?
Bert: I like Smalltalk’s keyword syntax. But more than the language, what really captured me is the interactive environment with its inspectors and debuggers, trying little code snippets anywhere, having the code browser always just a key stroke away.
Ron: Are there times when you feel like it would be nice to be working in some other language instead?
Bert: I am actually using several languages for different purposes. A small shell script here and there, Python in the OLPC project, C for low-level VM hacking … and that’s only what I use regularly, there are a lot more languages I dabbled in. There is no one system for all purposes, yet. I have great hopes for Ian Piumarta’s Cola though, it has the potential to allow working in one system from very high level down to the metal.
Ron: Do you find it difficult to find companies that support Smalltalk?
Bert: Not at all, but I didn’t have to look too hard, yet 😉
Ron: You are a major contributor to the Squeak Open Source Community. Can you tell us what encourages you to contribute your time to open source projects? What are the benefits and drawbacks of open source?
Bert: I learned almost everything I know about programming from reading source code, and discussion with other people. This is exactly what you find in open-source communities.
Books and papers are fine for learning higher-level design aspects, but for actually writing good code I think you have to read a lot of source code. Unfortunately, source-code literacy is not taught in computer-science courses, they only ever present tiny little example snippets of code that lacks anything you could call “style”. OTOH, Smalltalk makes it so easy to read source code, to “surf the image”
looking at implementors and senders, which I find much more convenient than browsing the documentation that comes with other systems.
The other major factor is of course the ability to modify everything when you need it. With enough experience, you even feel omnipotent, there is nothing that scares you, because you can be confident that if there is a problem, you can fix it. You’re not at the whim of others that provide you a blob of binary code that you can nothing do about if it is buggy (which it probably is).
Well, that didn’t answer why I contribute, right? I don’t know. Perhaps I’m too messy to find my own source code, so I just contribute it so others can do the work of keeping track 😉
Ron: Many open source projects benefit from contributions made by private companies. In the work that you do in Squeak for private companies is it difficult to get them to contribute your work back to the community?
Bert: Not at all. The Original Squeak License actually helped to encourage that. It required to contribute back any modifications of the base system to the community, in contrast to systems built on top of that base, which you could keep private.
Besides, Impara’s boss, Michael Rueger, actually encourages developers to publish their general-purpose enhancements. He values the community a lot, since a small company like Impara can’t possibly do everything alone.
Ron: How do you feel about companies offering bounties to get the open source community to focus on their issues?
Bert: I think that is a very good model for getting what you need. I would
have loved to work on a bounty project when I was a student 🙂
Ron: What do you believe is the future of Smalltalk, and is there anything the community should be doing to move Smalltalk forward?
Bert: I have to pass on this one. Smalltalk in general is doing okay, I think.
Ron: Can you tell us about your project with Agilense?
Bert: Steve Hunter of Agilense approached me because I am the author of the Unix browser plugin, which I developed a few years ago on Linux, to be able to use Squeakland Etoys projects on the web. Agilense created a graphical modeling tool that runs in a web browser in the Squeak plugin. This tool needs to talk back to the server in much more complicated ways than etoys ever did. Also, at the customer’s site, it had to run under Solaris and Windows, using proxies or direct
internet connection etc. When testing the deployed application, Agilense discovered problems that they were unable to pinpoint, let alone fix, themselves. The plugin sometimes would not load the application, and when it did, some files could not be fetched from the network.
We discussed that for a while per email and phone, but I was unable to reproduce the problem on my equipment. Because of a looming deadline, they actually flew me to Colorado. On site, debugging progressed quickly. I recompiled the plugin and VM with debug output enabled, and managed to figure out the first problem on the first day. The VM and the plugin communicate over a pipe. There was an
error condition on that pipe that never occurred on Linux, so it was not handled, and actually crashed the VM. It took another day to fix this, and verify the fix. The progress was hampered by the fact that I was unable to compile a clean version of the plugin, it always pulled in a dependency on some gnu libraries. This meant I could only test on a specific machine that had these libraries installed. Ian
Piumarta helped out by compiling my fixes on his machine in California.
With this major problem out of the way, I turned to the other, more obscure problem. We must fetch files through the browser instead of using Squeak sockets, because we can then use the browser’s proxy settings, it handles HTTPS, etc. This worked most of the time, but sometimes it inexplicably failed, usually with images. I had seen this before, but we always somehow avoided the problem, rather than fixing it. This time we had to nail it, and it took me a whole day to find the problem, and to devise a method to reproduce it. It turned out to be a firefox bug (which I reported to the Mozilla team, see the bug for the gory details). I spent another day on a workaround, but in the end, everything worked. Back in Germany, I worked with Impara to implement the same workaround for the Windows plugin – it turned out to be a cross-platform bug.
Ron: You are an exceptional programmer. You make a living programming in Smalltalk. How difficult do you think it is for new programmers to make a living using Smalltalk?
Bert: It’s not easy – but persistence pays off I think. I’ve been programming Smalltalk for many years before it became my day job.
OTOH I don’t think this is specific to Smalltalk but the situation is the same to anyone who wants to work in a non-boring programming environment 😉
Ron: Do you have any advice for people considering learning Smalltalk?
Bert: My advice? Be prepared for an earth-shattering mind shift. Okay, nobody can prepare for that.
The most important thing is to realize it’s not about learning the language – it’s about the whole system, the tools, working with objects directly, the image … Many people new to Smalltalk cannot imagine how this all ties together and creates a unique environment.
If you think of a browser as just another code editor you’re likely to feel lost and overwhelmed without experiencing why this is better than any text editor. If you feel the need to open a workspace instead of trying some code directly in the browser or debugger or inspector, you’re missing the best parts of Smalltalk. So just take your time working in the system. After a while, all of a sudden you will feel the power of simplicity that is Smalltalk, and you’ll never look back.
Bert Freudenberg is free-lancing software engineer. Bert was an original member of the Squeak Community. He is currently a board member of the Squeak Foundation and is working with Alan Kay and Viewpoints Research on the One Laptop Per Child initiative. Bert also works with Croquet and Qwaq.
Ron Teitelbaum is a long time Smalltalk Programmer, and is President / Principal Software Engineer at US Medical Record Specialists