Ted Leung on the air: Open Source, Java, Python, and ...
In an ideal version of the future, there would be a single app, perhaps XMPP based, replacing iChat, Adium, and IRC. It would support point-to-point and group versions of text, voice, video communications, and you'd have appropriate, useful, tools (like bots) for augmenting those communications.
[Side note: when researching the title of this post, I discovered Memory Alpha, a cool Wikipedia for the world of Star Trek.]
One of the great/terrible things about the term "dynamic languages" is that it means so many things to so many people. As I read the paper, I found places where my definition of dynamic languages was the same as what David wrote, and other places where it was different. So I'm going to over some of that in this post, partly to record it for myself, and partly for the benefit of anybody who cares (if there is anybody). Much of what's here won't make sense unless you read David's paper first.
In the Introduction, I agree that a big issue is helping people to understand that kind of languages being discussed have a much broader range of applicability. I think of the whole dynamic languages fad as an exercise in helping people to learn many of the lessons that Smalltalk and Lisp developers already know.
The paper lists 3 criterion for dynamic languages:
Criterion 1: High-level
As David noted, the notion of high-level is hard to pin down. He describes a bias towards more abstract built-in data types as one aspect of being high level. Many languages have large libraries of data types. I think that what is important here is the combination of more abstract built-in data types and syntax. A lot of what I like about Python vs Java/C# is the effectiveness of the notation for dealing with sequences, dictionaries, and so forth. The operations are there in Java/C#, but it's just a lot more concise in Python.
I don't think that favoring a VM implementation over a native code generating implementation is a requirement for a language to be high level or dynamic.
For me part of what it means for a language to be dynamic is to be able to interact with it. This means an interactive interpreter loop in addition to batch compilation/execution. I also think that a language needs to provide reflective capabilities in order to qualify as high level.
Criterion 2: Grassroots open source
One sentence in this section stuck out for me:
...the nature of the original creator (biological or corporate) has massive impact on the language's adoption and evolution...I think that this is a highly important point, that covers more than languages. Equally important is the community that springs up around such an endeavor.
Having said all that, there are languages which fall into my classification of dynamic languages which are not open source -- the usual suspects, Lisp and Smalltalk (and yes, I'm aware that there are open source implementations of both).
Criterion 3: Dynamically Typed
I don't have any real disagreement here, although I do think that a possible next direction for dynamic languages is to allow usage of static typing at the programmer's discretion. This could happen via either explicit type declarations or via type inference.
In the section on Properties of Dynamic Languages, I'd change the subsection Optimizing person-time, not computer-time to "Optimizing person-time and computer time". I don't think that these goals need to be in opposition. I also highly agreed with the two subsections Open source, deeply and Evolution by meritocracy and natural selection.
In the section on When to use Dynamic Languages, there is a subsection titled Ideally suited for loose coupling. I didn't quite understand the point that was being made.
The Myths about Dynamic Languages section has two subsections with very similar titles, You can't build real applications with scripting languages and You can't build large systems with dynamic languages. This seemed a bit like hairsplitting to me. I did find it amusing that the second subsection amounted to "proof by Smalltalk". Interesting that this section involves proof by Smalltalk.
I did have some trouble with the subsection titled Dynamic languages don't have good tools. I can't speak about tools for Perl, TCL or PHP, but the tools that I've found for Python have issues as far as I'm concerned. The best tool that I've found so far is Wing, which has improved quite a bit for 2.0. It still doesn't have any kind of refactoring tools, and it's not hackable because you don't have the source, unlike Emacs, Eclipse, a Smalltalk, or a Lisp Machine.
Of the challenges that David listed, the one that concerns me the most is No real/formal budget. The money isn't actually the problem that worries me. The problem that worries me appears later in the paragraph:
problematically, to engage in long-term technical projectsI think that it is important that a language's developer community be able to engage in person/resource intensive longer-term technical projects. There are plenty of things piling up for Python 3000, which is only going to happen if Guido van Rossum becomes independently wealthy or retires. Mitchell Baker summed it up best in her post titled Why Pay for Staff? when she said "Speed matters".
Here's what I'd like to see: Find Michael Salib and give him some money so he can sit down and finish/release StarKiller. Here's my rationale: There were 3 talks at PyCON on Python performance. Jim Huginin talked about IronPython. He doesn't need any funding anymore. The PyPy team is applying to the EU for mega grants, so the PSF probably just doesn't have enough money to make a difference. Salib's talk on StarKiller was the final talk, and at that time Salib was looking for a job so he could eat while finishing StarKiller. Four months have gone by and there's been no Starkiller release. If Salib's work could get out, then the Python community could start to help make it better.
Her thesis is that dark ages ensue "When stabilizing forces become ruined and irrelevant". She goes on to write about 5 stabilizing forces that she feels are weakening:
- Community and family She makes a distinction between families (biological units) and households (economic units), and focuses mostly in the financial difficulties of families, particularly the difficulty of affordable housing and its subsequent impact on family life. The family cannot stand as a unit by itself, and needs the influence and support of a broader community. She goes on to note that real communities are rapidly disappearing. In order to have community, people must encounter one another in person, something made increasingly difficult in automobile centric America.
- Higher education Here the argument is that higher (and other) education has moved away from education, and into the business of issueing credentials. Here in Washington, it's easy to see that emphasis in the rush to comply with the WASL tests that are the legacy of "No Child Left Behind"
- Effective practice of science and science based technology Jacobs claims (as I and others have) that science is worshiped, and then uses an interesting example from traffic engineering to show how the scientific mindset is disappearing.
- Taxes and governmental powers directly in touch with needs and possibilities Jacobs usese two terms in this chapter Subsidiarity is the principle that government works best -- most responsibly and responsively -- when it is closes to the people it serves and the needs it addresses. Fiscal accountability is the principle that institutions collecting and disbursing taxes work most responsibly when they are transparent to those providing the money. Her example is taken from the Canadian federal government's intervention in Toronto's previously successful public housing program.
- Self policing by the learned professions Think of the failure of CPA's in the Enron scandal, the recent scandals in the Catholic church and extrapolate those into the rest of the learned professions.
Coincidentally, I also recently saw a graph in Wired (7/2004) p.52 (not on the web) showing the number of engineering graduates produced by various countries in 2001:
US | 59,536 |
Russia | 82,409 |
Japan | 108,478 |
EU | 179,929 |
China | 219,563 |
Try to imagine how demoralizing that deterioration will be for a culture that almost worships science, and that proudly connects its identity and prowess with scientific and technological superiority. How will such a culture and its people deal with becoming incompetent and backward in science and science based technology?Wholesale outsourcing of technical jobs will likely have the same effect, numerical production of graduates aside.
Central planning, whether by leftists or conservatives, draws too little on local knowledge and creativity, stifles innovations, and is inefficient and costly because it is circuitous. It bypasses intimate and varied knowledge directly fed back into the system.Subsidiarity indeed. There are so many times when I've wanted a concise way of saying what subsidiarity means. Now I've found a word.
Matt's post described how you could use a suite of components around atomflow to build a highly modular blogging system. It seems tantalizing, mostly because it seems highly automatable. An easily scriptable way of blasting content into a blog/store, munging it, and then getting it back out, is attractive. Perhaps a step along the way to an RSS/Atom based personal information router. Maybe one could mix in a little of this as well...
I've grown to like Python, although the thing that I like the most about Python was a bit of a surprise to me. I look at dynamic languages through the prism of Lisp and Smalltalk, with an emphasis on the Lisp side. Like many Lisp people, I like the simplicity and regularity of the s-expression syntax, and the fact that the syntax facilitates powerful macros. I was disappointed when Apple switched Dylan from a s-expression syntax to a Pascal like syntax. Sometime in 1998 a friend showed me a book on Python, and I, like many others, recoiled from the indentation based syntax without ever using it. My opinions on this have changed as I've had a chance to work with Python. I find it very easy to write, as well as easy to read.
However, there are places where I don't agree with decisions that have been made. Lack of a conscise notation for dealing with closures, rejection of proper tail call semantics, no support for continuations, no macro system, and no way to do optional type declarations (although this is slated for Python 3000, whenever that is).
While I like Python and prefer it to most of the languages that have reasonable sized communities, I am definitely still searching for a home. There are lots of folks experimenting with ideas out there, Groovy, Boo (which looks interesting except for the required static typing -- I'm interested in how they handle macros), and others. In the meantime, if the JVM and CLR push each other to include better support for dynamic languages, I'll be happy.
I totally don’t see any reason why we shouldn’t try to become a world leader in this space.I hope he'll be giving Guy Steele a call.
Bill de hÓra thinks that Sun should Get behind Jython, citing the competitive threat from IronPython on the CLR.
I think that the threat from IronPython is much worse than the Bill describes. Not only does IronPython have the potential to make scripting on the JVM DOA, it also has the power to destroy Python as we know it. Jim Huginin is going to work full time to improve dynamic language support on the CLR. What happens if Bill is right and IronPython is the upgrade path for VB.NET and ASP.NET? Microsoft will start throwing large amounts of resources at IronPython. I find it hard to believe that the Python community will be able to keep up with Microsoft if they choose to do that. If Sun "gets behind Jython", you can expect a similar activity to emerge around Jython. Even worse would be for Jython development to be taken over by the JCP, all need to be compatible with CPython eliminated. Now you have two new dialects of Python, diverging from C Python and almost certainly in incompatible directions.
If Sun is going to get serious about dynamic languages, the first thing that they need to do is make changes to the JVM that make it more suitable for running dynamic languages. Once they do that, they can stand back and let the best dynamic language win. I think this is actually what Microsoft plans to do. They don't care which language wins as long as it's on the CLR, and they are going to do what needs to be done to make sure the CLR runs good languages well. Just look at they way they are pursuing language research and folding some of those features into C# (COmega).
There's plenty of room left for advancements in languages. The problem for the JVM and CLR is figuring out how to be an excellent home for the next generation of languages. The problem for Python, Perl, Ruby, etc is maintaining the lead that they have today.
CAcert is an interesting idea. I particularly like the possiblity of integrating with the PGP key web of trust. And trust is the key idea here. Just because companies have coughed up big fees doesn't mean that they are trustworthy. My big concern is whether they can achieve enough usage/participation to start the virtuous cycle.
Last week when I was at OSAF I saw Ducky's new T41. Her box is running Gentoo and the wireless card was working. However, power management (sleep/hibernate) was not. But the combination of the machine and Edd's post got me thinking about it again.
I like the Powerbook. The software is great, but the hardware is mediocre. I feel that the processor is underpowered, the screen resolution is less than I would like, and the battery life of 2:30 is poor compared to today's Centrino based notebooks.
Here's a list of things that would need to happen in order for me to look seriously at a Linux powered notebook:
- Support for recent hardware (Pentium M + 802.11 a/b/g)
- Good power management (fast hibernate and fast sleep/wakeup)
- Something that works with iChat A/V: I love e-mail and IM/IRC as much as the next open source guy, but using the iSight really makes a difference
- Something like SubEthaEdit: in combination with audio/video chat, this really makes it easy to debug problems live.
- Something like Launchbar/Quicksilver: These launchers are just so good
- A really good RSS reader
Ray Ozzie talked about uses of Groove in Iraq, as a demonstration of where things are working "at the edge" (this was a Supernova talk). He made some interesting points about workspace based awareness/presence. He also claimed that the experience must be simple and local. It's the need for a local feel that is difficult for web applications to achieve. There were interesting non-technical observations as well. Politically, servers are a center of territorial power. People who have accumulated that power are loathe to give it up. As a variation of t his, he pointed out that transparency is threatening to people who spent their careers keeping people from talking to each other -- something which apparently happens in some application areas.
Julie really enjoyed Ozzie and Robb/Krebs (below), but the most interesting of the recordings for me was Tom Malone's Supernova talk. He was talking about the ideas in his book The Future of Work. The key idea: It is now possible to have the information benefits of large organizations with soft benefits of small organizations. He described several ways of decentralized organization/decision-making: loose hierarchies, democracies, and markets. Examples of each way were provided as well.
Tom Malone is famous for quite a few things, but I always remember his work on the Information Lens and Object Lens.
There were some good questions from the audience about whether the trend Malone describes will really result in something better. I agree with Malone that the trend is inevitable. The question is what we'll do with the opportunity. This book is definitely going on the "must read" pile.
Most of the interesting parts of John Robb's interview with Valdis Krebs weren't technical, they were about human issues. Particularly the importance of total trust to network reconection - terrorist or military. There was mention of Kathleen Carley's work on Dynamic Network Analysis, as well as some work which tries to model specialization in the network nodes (for example people that have special training of some form). It seems to me that there's lots more room for more detailed network models.
Now I know that Jonathan Schwartz is crazy. He admitted that he wanted to tag his kids with RFID tags. Most of this conversation was about his ideas regarding commoditization, including his views on open source.
Alistair Cockburn described a few principles that he's seen on the many software projects that he's observed: "People trump process" and "Politics trumps people". I did like his characterization of software development as "a cooperative game of invention and communication"
The Gillmor Gang for 5/21/2004 talked about the various methods for using DNS extensions to combat spam (SPF/Caller-ID). There was an interesting observation that DNS has a defined extensibility mechanism, yet all these extensions are being dome by jamming the needed information into text record which weren't designed as an extensibility mechanism. There was a discussion about the utility of extensibility mechanisms -- the DNS example is not an isolated one. I also liked Doc's idea of a directory of blogs, which is kind of like a blogging specific wayback machine.
Mitchell Kertzman was the guest on the Gillmor Gang for 6/18/2004. Kertzman is now a VC at Hummer Winblad, and apparently they are looking at funding a real LAMP company. He had some interesting perspective on open source, Linux and Java. One of his claims was that Linux has destroyed the appeal of WORA for Enterprise servers. The argument was that since "everybody" is running Linux, the portability argument of Java is reduced. Also since data transfer is moving away from binary and towards text (XML), we should be looking at languages like Perl, Python, and others which are stronger at text processing.
Kertzman also had an interesting position on the platform wars. He says that at the enterprise purchasing level, Enterprises describe their technical platforms as either Microsoft or non-Microsoft, and that the nuances of .NET versus Java (or LAMP for that matter) are not the high order bit of characterization. He favored open sourcing Java because he believes that open sourcing is the best way to take advantage of the commoditization/customization of the platform.
He also had some interesting comments on DRM. He felt that both the RIAA/MPAA and the anything goes file-traders were trying to destroy the notion of fair use, and that we might be making more progress on the DRM front if there were proposals oriented around preserving (not repealing or broadening) the intention of fair use. RIAA and MPAA are trying to repeal fair use
I fenced foil for a few years in high school, before they had all the fancy electronics. Unfortunately I wasn't very good. I had a bad tendency to slap rather than thrust, so I didn't hit hat often. Things would have been much better for me had I fenced saber, where many of those slaps might have counted as touches.
The Olympics is one of the few sporting events that I'm actually interested in watching, although I tend to like the sports that nobody cares about, and I think that the Winter Olympics are actually the real Olympics. But tonight's medals brought back some memories. My foils are still in the garage.
What I heard on those IT Conversations Ted played in our van were discussions on using technology to help solve the problems of the world. I think it was the first time I had heard computers discussed with such applications and in a way I could comprehend. I was riveted, gripped, hooked. It was as if something in those recordings had taken hold of something inside me.Julie has seen some of the things that I've worked on during my career. Probably the most concrete was when I was working at Apple on the Newton. You could pick up the device, see that it worked, and so on. But mostly it was just cool. But none of the projects that I've worked on have had the same effect as listening to this one MP3.
Unfortunately, I'm not the only one doing a bad job of explaining the potential impact of computing. When we were students at Brown, Julie took CS4 (the CS course for non-majors)...
Is this what technology is about? I asked Ted. Is this what it can do? Then why, when I took computer science in college, did the instructors have us write programs that played tennis games? Why didn't anyone show me - show all the students - how technology can change the way the world works?Technology isn't the solution to all the world's problems, but I think that we could certainly be doing better than we are now. But it all starts in the imagination...
One thing that I asked about was the rumor that Apple will be incorporating Jabber into Tiger. This has been well publicized on the Tiger Server side, but left a mystery on the Jabber client side. Joe didn't have a lot of new information, but I did learn that Apple is already using a slightly extended version of XMPP (to deal with Rendezvous) for the iChat Rendezvous mode. Getting iChat to work seamlessly with Jabber would be a good thing, since Apple has found the killer app to lock me in to iChat -- namely iChat AV. The ability to do this over Jabber would be a big step towards IM freedom.
We talked about the use of XMPP for machine-machine notification and the ability of Jabber clients to implement selective presence (only being visible to certain people during work or off-work hours, for example). It looks like there are lots of cool things that you could do if there were a really good Jabber infrastructure (clients and servers) and a decent number of Jabber users.
It turns out that earlier in the week Peter Saint-Andre wrote a pair of blog posts, as a rallying call in order to increase Jabber adoption. His proposal involves Python servers and clients, and possibly use of Twisted in order to get the job done. I hope that something will come of this -- I'd sure like to have great XMPP libraries for Python.
It takes us one and a half days to drive from Bainbridge Island to San Francisco. We've never taken such a long car trip with the kids, so we weren't quite sure how things were going to go. Happily, the kids seem none the worse for the wear, and we were far from going insane during the car rides, despite the fact that we don't have a DVD player in our van. Of course, we did have some alternative forms of entertainment. We listened to a fair number of IT Conversations MP3's via the Powerbook, interspersed with kids songs and just plain quiet times. For fun, I wardrove for a little while, and actually picked up an access point that appeared to be located in an RV next to us. And as recorded in yesterday's post, I fiddled around with using my Nokia 6600 as a GPRS modem. I did discover that GPRS coverage is not quite as broad as voice, as there were a few areas where I was unable to connect.
We stayed overnight at a hotel in Salem, and I was very pleasantly surprised to discover that they offered a free WiFi network. Coincidentally, I spotted this post from Glenn Fleishman ( Wi-Fi Networking News: 27,000 Hotels with Broadband by 2008, Report Says), and it appears that Marriott at least, is right on schedule.
Due to some weird claims about the fire code in San Francisco we ended up staying in Emeryville. I normally stay at a hotel right around the corner from OSAF, but they told me that we'd need two rooms for 5 people, even though one of the five was sleeping in a playpen. That was a little richer than our budget, so we ended up in Emeryville, which was fine. I got a good education on BART, and the family got a taste of the commuting life. The girls have never really seen me commute to work (I did do it for some consulting clients in Seattle, but I think the kids forgot), so it was a new experience for them. Our hotel room looked out over I-80, so in the mornings I'd open up the curtains and let them see all the cars with people going to work. There's just a slight contrast between Bainbridge Island and the Bay Area, and it was good for them to see it first hand.
Also, one night I rehacked our mailserver at home to use IMAP+TLS, which is much nicer than using an ssh tunnel (although I ended up needed the tunnel during the week because the hotel in Emeryville intercepts port 25 -- took me a while to figure out what was going on). I also learned how to read my IMAP mail via the 6600. It can see reading just important stuff in my inbox, but I wouldn't really be able to do much useful e-mail on it. I need enough screen real estate to read the messages, and a keyboard in order to process them.
The family had a good time at the OSAF picnic. These trips always have a relationship building aspect to them, and it was nice to be able to connect Julie and the girls to OSAF'ers and vice versa. Morgen Sagen's kids are roughly the same age, so the kids were able to hang out. The Sagens also came prepared with a cool mini parachute:
(I took the picture with the 6600 too. I guess you can tell what kind of trip it was.) It was also fun to have my co-workers meet Julie, especially since many of them have read her blog. It's an interesting world that's emerging. Several times after I introduced Julie, the rejoinder was a variant of "I read your blog". I am sure that she'll be cranking out the posts now that we're back.
I've got material for a few other posts, but those will have to wait. For now, it's just good to be home.