Ted Leung on the air: Open Source, Java, Python, and ...
I first became interested in Thomas Barnett's book, "The Pentagon's New Map", after reading about his presentation at PopTech (which you can hear on IT Conversations). I was surprised at the reception that Barnett appeared to be getting from the PopTech audience, and I've been continued to be surprised at the reception his work is getting at places like Worldchanging. So I did what I usually do, which was to put a copy on hold at the library. In the meantime, I started reading Barnett's blog, which has caught me up to speed on many of his ideas (indeed there were few surprises left in the book after a few months of reading the blog).
I'm not going to even try to recapitulate the key arguments in his book. You can read his pair of Esquire articles, his blog, or his book to get the story straight from the source. The book gives you more biographical information on Barnett, the trajectory of his life and how it intersected his ideas. It was also useful to get an insider's view about how ideas succeed or fail in the defense establishment.
I find his Core/Gap theory to be a good explanation of the world that we now live in, along with the probable impact on our national security policy and actions.
There's just one point that I'm having trouble with. One of the key themes of the book is the notion of "A Future Worth Creating". Mostly this refers to the idea that the Core should work to shrink the Gap. And of course, this is where the use of force comes in. The part I'm having trouble with is that I don't think that everyone in the U.S. (much less everyone in the Core, let alone the Gap) will agree that the future Barnett has outlined is the "Future Worth Creating".
If your are using shorewall as your firewall, be sure to update the contents of your rfc1918 file periodically, as networks get reassigned by IANA. I had a very out of date version, which was making my website inaccessible to people on various networks.
Fortunately shorewall includes a Python script for generating the appropriate parts of the file.
[ via Seb's Open Research ]
From John Sowa's "The Law of Standards" (via Sean McGrath, via Jon Udell)
"Whenever a major organization develops a new system as an official standard for X, the primary result is the widespread adoption of some simpler system as a de facto standard for X."
In between meetings today (Wednesday), I hunkered down at Zeitgeist Coffee, which turned out to be centrally located for the various people I needed to see today (I picked it for the Wifi).
I don't really like coffee shops. There are a variety of reasons. First, I don't like coffee. I guess I don't have a sufficiently refined palate. You could pour me coffee from Folgers and coffee from Starbucks, and I'd be hard pressed to tell them apart. So the expensive gourmet factor doesn't appeal to me. When we first moved to Seattle, friends tried to addict me to coffee -- unsuccessfully. I have fairly severe lactose intolerance, which for a long time meant that I had to drink coffee black, also an uninviting prospect -- the availability of soy or rice milk has reduced this consideration quite a bit. So I use coffee for one reason: to stay awake when I need to. Today I added a second reason, to earn the right to use free wireless in a coffee shop.
The other problem with working in a coffee shop is that I am noise intolerant. I have pretty good hearing, which turns out to be a bad thing if you are sensitive to noise. Since many of my tasks require intense concentration, noise intolerance can be a problem. Today I saw with my iPod turned up fairly loudly in order to drown surrounding conversations and Zeitgeists own (and loud) music. Sounds antisocial -- but when I'm working, I'm generally antisocial.
So I was pleased to discover that I actually can do work in a coffee shop -- I participated in the Chandler IRC, I tracked down several bugs in some code that I am working on, and processed a bunch of e-mail. Just like I would have done at home. Didn't know I had it in me.
Also, today was the first day that I was actually able to use the Wifi network on the ferry. The WSF isn't quite ready to declare the system ready for use, but the Mobilisa folks let me register for an account, and have answered my tech support queries, so I figure I'm beta testing. So far I've used the network in the Seattle terminal, the Seattle terminal parking area (very important) and on the Tacoma and Wenatchee. Unfortunately the network didn't work in the Bainbridge Island parking area (very bad). And for some reason unknown to me and to SpeakEasy, my DSL provider, I can't access the servers at my house from the ferry network. The Mobilisa folks haven't figured that out either, yet, otherwise I would have posted from the ferry.
Miguel is in town for ECMA meetings, and the Seattle Mono user's group held a dinner in his honor. Since I was already in Seattle for some other meetings, I decided to drop by. We had some interesting dicussions on the quality of the Linux desktop interface, the ability of open source to innovate, and the ongoing rich client versus web client debate. Any one of these is a decent sized post in itself, so maybe I'll have some energy to expanding on this in the future.
I also got to see Lion Kimbro who I've kept passing in the night at various events. He's started a new blog, which I recently discovered, so I was able to ask him a few semi intelligent questions about some of the things that he's been up to, such as an HTTP Pipe plugin for pyblosxom, and of course his labor on Local Names. Lion's name also came up during the Chandler IRC this morning, in reference to his infamous paper notebook tome.
Vikram Dendi from Real Networks gave me the complete scoop on what's going on with the open source Helix player and the Rhapsody music network. This expanded my understanding from his interview with the Gillmor Gang.
There are lots of people in Seattle who are working on cool stuff. It sure seems like it would be a boost if we could get a large number of those folks together somehow so they could cross pollinate. If you're in Seattle, and you like this idea, let me know. I've floated some ideas about this in the past, but it seems that recently I'm running into more an more people. We should do something about this.
Last week a lot of people made hay over a DevX article about OO programming. I saw it first via Phil Windley's blog. Generally speaking, most folks found serious problems with the arguments used in the article. Still, I think that fixation on a single paradigm of programming is problematic. As a language feature (vs a design methodology) most object-oriented features are syntactic sugar for one more more layers of function calls through a dispatch table. Over the years, I've heard many many arguments for why object-oriented programming (or pick your favorite programming paradigm) is the one true paradigm for programming. I haven't found any of those arguments to be universally applicable, and I'm growing more skeptical of those types of arguments as I read and write more programs.
Using the best tool for the job applies to programming paradigms too. Perhaps that's a part of why I've found myself drawn to languages like Lisp and Python. It is relatively straightforward to integrate new paradigms into these languages, and you aren't
forced to accept a single dominant paradigm. You can be single dispatch object-oriented when you need to, you can be multiple dispatch object-oriented when you need to, you can be functional if you need to, you can be logic/rule-based when you need to, and so on. I like it when I can use the right tool for the job at hand.
In the middle of his essay about why getters and setters are evil, Ryan Tomakyo took a swipe at IDE's:
In Java, the tool (IDE) is the brush and the code is the canvas. In Python, the language is the brush and the machine is the canvas - the language and the tool are the same thing. In Java you enhance the IDE, in Python you enhance the language.
This is the primary reason why there is little serious demand for Python IDEs. Many people coming to Python can't believe no one uses IDEs. The automatic assumption is that Python is for old grey beards who are comfortable with vi and Emacs and refuse to accept breakthroughs in programming productivity like IDEs. Then they write a little Python code and realize that an IDE would just get in their way.
Actually, I think that the real grey beards here would be the folks that came from Lisp Machines or Smalltalk. These languages are like Python -- if you want to enhance the language, you can. In fact in Lisp, you even have support in the language for metalinguistic abstraction. Even so, the inventors of the Lisp Machine and the Smalltalk environment did not eschew powerful tools simply because they had languages for stratified design.
Notice that I did not say IDE. IDE has become one of those words like "apple pie", except instead of meaning goodness, it means badness. What I am interested in are tools that work on the deep structure of code, as Jon Udell recently wrote. I want to have tools that understand what a program means, not merely its textual representation. I'm definitely an Emacs partisan -- I've been using GNU Emacs since version 17 and I used the Gosling Emacs on BSD 4.1 before that. I've hacked the keybindings on OS X to include a large number of keys. But I would sorely love to get off of Emacs for programming, because Emacs doesn't really understand what a program means. (Yes, I know, there's elisp, so I could make Emacs understand what my program means -- an elisp is one of the reasons that I continue to use emacs -- I can mould its behavior to match my preferences).
When I do Java, I do Eclipse, although before that I was an Emacs and Java on the command line kind of guy. It was only when I could get refactoring, and the ability to see all the callers of a method that I was finally pushed over the edge. The Eclipse guys are still at the beginning of what they could do with the information that they have about Java programs. Imagine a rendering of source code that just doesn't display the type declarations. That would be one way to solve the "type declarations are annoyingly in my face problem". Just treat the source code presentation as a view on the static structure of the program and allow multiple presentations. In one presentation, you see regular Java. In another presentation you see Java without the declarations.
With Python, the tools are different. Right now I use a combination of Emacs and ipython for much of my work. When I start having to interact with code in the application layer of Chandler, then I find it useful to have Wing in order to present a usable debugger interface (I can hear James Robertson cringing all the way from the other side of the country). But none of these tools really understand what a Python program means either.
Having a good language doesn't mean that you won't get more leverage from good tools.
Recently I've been doing a bunch of interviewing at OSAF, and I'm experiencing something new. Of course, we all know that people Google each other before meeting each other, so I sort of expect that people will Google the folks that they are interviewing / interviewing with. Recently, some of the folks I've interviewed have brought up information that they Googled on me (predominantly from my blog) during the interview. This has lead to brief moments during the course of the interview where I really felt like I was being interviewed (which of course is really always true). Just more first-hand experience of the way that blogs and search engines are changing our day to day lives.
Yesterday (Friday) we took Michaela to the hospital to have a minor surgical procedure. Surgical procedures have a long preparation period, so we arrived at the hospital several hours early in order to accommodate all the requisite paperwork, measurements, and waiting. The operation was scheduled to take an hour or less, and there was no reason to be concerned about anything dangerous happening. At least, that's why my brain kept telling me.
Throughout the week my brain has been communicating with me on two wavelengths. On the first, it was saying "look, this is not a risky procedure, the hospital and doctors are very good, so just relax". (Of course, human doctors can and do make errors). On the second it was saying "look, you believe that God loves you and controls everything. Why are you worried?" (I've found that God's notion of what is good for me and my own notion are not always in agreement). So as I watched Michaela throughout the week, I'd occasionally be having one of these dialogues (or variations) with myself. It's all a part of being human.
The hospital allows one parent to be present until the anesthesia has taken effect. Julie and I decided that I would be the one to accompany Michaela into the operating room. The staff at the hospital did a good job of taking care of us. Someone came and showed Michaela the mask that she'd be using to breathe in the anesthetic, and we met all the doctors. Everything was comfortable and relaxed. Eventually some folks came to escort us back to the operating room. The staff did a great job of doing the induction -- they started by asking Michaela about her mask, then they asked her if she wanted to hook up the hose to the mask, which she did. Then they showed her the rubber balloon that was part of the apparatus and showed her how it inflated and deflated as she breathed in an out of the mask. So they had Michaela practice breathing into the mask. During the practicing, they had her lie down and started the gas flowing. I held her hand and talked to her for a few seconds as she started to go under. I kissed her brow and someone escorted me out of the room. Michaela was very relaxed during the entire induction, but still it was unsettling to watch her go under -- anesthesia is not a natural thing for people (the anesthesiologist warned that we might see eye-rolling, gasping or other symptoms -- of which I saw none).
Everything went fine and Michaela is back to being her energetic self, although she'll have to be careful about her stitches for the next week or so.
A few notes:
The presentation on parcels in Chandler will given by Katie Capps Parlante and me, not just me.
Andi Vajda from OSAF is giving a presentation on the voodoo work he did to make pylucene work.
OSAF will do a sprint and a BOF as well. More details about that as it happens.
Unrelated to OSAF, I will be giving a talk about pyblosxom.
[via fintanr's weblog ]:
wget --post-data 'really_long_set_of_options' http://foo.com/cgi/myScript
This is a drop in replacement for the existing plugin and will add the nofollow attribute to all <a> tags in the description of the comment. If your comment template (usually
comment.html) includes a link supplied by the comment poster then you should add a
rel="nofollow" attribute to your template
This year ABC doesn't have the contract for the ISU figure skating events, so those of us without ESPN are experiencing a drought of decent figure skating on TV. Today was the once a year marathon of the US National Figure Skating championships, which have been darkened by the death of Angela Nikodinov's mother.
I wasn't very enthused about watching today, because it seemed to me that there hasn't been much movement in the U.S team. Turns out I was wrong. The men's field continues to improve -- Johnny Weir successfully defended his title, and I really enjoyed watching him, despite the languid music that he is using. I was also really impressed with Evan Lysacek's skating.
Tanith Belbin and Ben Agosto are turning me into an ice dancing fan. They are continuing to improve, and it seems like there's no end in sight. Their attitude towards their citizenship obstacles regarding the Olympics was refreshing. I also liked the very new team of Stiegler and Magerovskiy.
I wish I could say that I enjoyed the pairs competition, but when you compare our teams with the Russians and Chinese, you realize that we (still) have a long way to go. It seems odd to me that we are improving in dance but not in pairs, because I think that pairs plays more to our strengths as nation than dance.
The women's field has been relatively predictable: Michelle Kwan puts out a solid program, Sasha Cohen fails to put together a clean program, and everybody else takes turns getting third place. Which was pretty much what happened tonight. The established senior competitors were fairly predictable. What was unpredictable was the performance of a pack of teenagers who are still relatively new on the scene. Beatrisa Liang turned in a pair of very beautiful performances, which were a treat. The highlight of the day was 15 year old Kimmie Meissner who turned in a flawless performance topped off by a triple axel, which makes her the second US woman ever to do a 3X. I was shocked when I saw her do it in the warmup -- light, easy, and beautiful. My mouth just hung open for a few seconds after I saw it. I thought that she was doing it to psych her opponents, but I didn't expect to see it during the program. Usually the ABC commentators would have talked this up quite a bit more, so I was also surprised to see her uncork it during he program. It wasn't quite as clean - she didn't quite have control over the landing, but still it was good. Combine this with beautiful posture and line, and you have something truly wonderful to watch.
Meissner, Weir, and Belbin and Agosto were my picks for memorable performances.
One other comment. Figure skating is one of those sorts of semi-esoteric content that is screaming for the podcasting or tivocasting revolution. If it weren't for USFSA or ISU rules, it would be great to see some fans go into a competition with an HDTV camcorder, make some MPEG4 videos, and put them up for bittorrent. I'd even be willing to pay for this kind of narrowcast video.
[ via Chao's blog ]
For those of you following OSAF, News.com has an interview with Mitch Kapor. I learned a bit about the history of Mozilla and Mitch's involvement with Mozilla.org. One of the good things that I've gotten out of working at OSAF has been the chance to work closely with Mitchell Baker, and I'm glad that Mitch took the opportunity to point out her contributions to the project. I know that I've certainly learned a lot from working with her.
I spent the last two days attending the CalConnect.org meetings that were at the UW. I was filling in for Lisa, who took ill at the last minute. This was a good excuse for me to get caught up with what's been going on with the CalDAV spec. The folks that were testing CalDAV interoperability have achieved quite a bit, which is very exciting. I'm not going to steal their thunder, so you'll have to wait until the public test results are posted at CalConnect.org. If you are interested in the calendaring space, you should keep an eye on what's happening with CalConnect (of which OSAF is a member).
WorldChanging had an interesting article about the Finnish school systems, which, according to some study, are now the best in the world:
Maybe it's the schools themselves. Students stay in the same school from about age 7 to 16. Schools are local, community-based affairs, with extremely low turnover in their teaching staffs and strong expectations on parents. Students are all expected to study languages, math and science (and in Finland, girls now outperform boys on science tests). Two thirds of them go to university.
On the other hand, maybe the secret is what they don't do: Finnish students spend less time in class than students in any other industrialized nation.
I believe that I am the developer that Scoble mentions in his post about Mitch and the Creative Commons:
I know a developer working for you. Is he working for free? I don't think so. He has mouths to feed and a mortgage to pay off.
I'm not quite sure how Robert got from the Creative Commons to working for free, but that's not actually the point of this post. This is just a good excuse for me to explain my personal motivations for doing what I'm doing. What you are about to read is my personal opinion and does not represent the views of the Open Source Applications Foundation or the Apache Software Foundation.
Dave Winer's prediction that "the term open source will mean nothing" has been true for a while. If you doubt that, go over to IT Conversations and listen to r0ml. I don't subscribe to the ideology that all software must be free for all people. What I'm doing is called commons-based peer production of software, which is an economically justified set of techniques for constructing information products that happens to look at a lot like what we call "open source". There's nothing about that which says software has to cost zero dollars. What you need is a way to make the information product available so that the highly efficient resource matching that is at the heart of commons-based peer production can kick in. Today, in what we call open source, that is done via source code licensing. It doesn't mean that's the only way to do it. We're still in the infancy of all types of commons-based peer production. But the key point is this: Benkler's work says that for certain kinds of information products, commons-based peer production is the most efficient method of allocating resources in order to get the job done. No free as in beer ideology or free as in speech ideology needed. No destruction of the notion of intellectual property required. Just simple hard nosed economics. People/creators can and do get paid while doing this. In fact, that's how I'm getting paid right now.
Since 1999 I've done a bunch of this kind of work in the context of non-profit foundations, the Apache Software Foundation, and the Open Source Applications Foundation. These foundations are important to developers because they provide a legal umbrella and governance structure to ensure that developers are protected from lawsuits and to ensure that legal and ethical standards are upheld in the development of software. But it goes beyond that. If you accept the notion of a software commons in the sense of the commons as described in Lessig's various works, then these foundations serve another purpose: They hold pieces of software in trust for the public. This is part of the reason they are chartered as 501(c)(3) corporations -- they have a responsibility to the general public. There are certain pieces of software that are so important (operating system, web server, web browser, and the list is growing) that it is in the public interest for there to be version of each of these types of software in a public commons. One of the many means of protecting such a commons is via intellectual property law, including copyright and patents. If you remove the protection of intellectual property, you also remove a very powerful protection for the commons. People are also getting paid to work on these commons. When I worked at IBM I got paid to help construct part of the ASF commons related to XML.
So, the next time you hear "open source development", think "the most economically efficient method for matching resources to construct information products". The next time you see "XXX Software Foundation", think "people constructing a software commons (protected by intellectual property laws) that the rest of use can use and extend". There are more things that you should think, but that's enough for one post.