Ted Leung on the air: Open Source, Java, Python, and ...
If you are using Fink on OS X, and you are having problems with dylibs not getting built, you should check to see if you have a
$HOME/.magic file. Apparently you can mess up the
file command so that it doesn't recognize shared library files. I've been having enormous problems building gettext (when fink upgraded), and this was a non-obvious problem. Needless to say, my
.magic file is going out the window. If you want to see the gory details, here's the bug report (and reply).
Last night I went to the midnight showing of Revenge of the Sith, along with some friends. It's been years since I waited in line for a movie, or went to a midnight show. We were in line for about two hours, which wasn't too bad because the company was good.
As for the movie itself, it's hard to say. Both the beginning and end were predetermined, so there was a limit to what could be done. Certainly there was plenty of action, and most of that was pretty good. The dialog was pretty bad, as expected. It certainly wasn't as bad as Episodes I or II, but I'm having trouble deciding whether it was good enough to edge out Return of the Jedi. Regardless, after 28 years, Star Wars is done.
After lunch, DHL unexpectedly rang the doorbell and the courier presented Julie with a box containing the Powerbook. The optical drive has been swapped, and now I"m in the process of moving all my stuff back onto the primary disk.
This was my first time shipping a laptop back to be repaired. The machine was gone for 2.5 working days, which wasn't nearly as bad as what I was led to believe. Exceeding expectations is good, I suppose.
Most of my experience with laptop repairs are from our first year in the Puget Sound, when I was working at a startup. I was using a Dell laptop whose screen decided to go bad. We had purchased the on-site service contract (although not the version that got you support absolutely right away). So I was able to work right up to the moment when the technician showed up with a new screen to repair the machine. I watched as he pulled out a sheet of paper with disassembly instructions and swapped the display. Unfortunately, when he put the machine back together he had a number of screws left over. Not exactly confidence inspiring. In the end it took a total of 3 such onsite visits before Dell finally agreed that they ought to just give me a new laptop.
Of course, neither of these experiences live up to what Ole Eichorn has been suffering through.
In contrast, our 4 year old Thinkpad X21 has taken a licking and is still ticking.
Things have finally settled down enough, which is to say that Tiger is installed and running decently smoothly, and I have gotten it backed up, for me to give up my Powerbook long enough for it to be repaired. It also didn't hurt that the machine was starting to do other weird things that were possibly PMU related.
When I originally called about the busted optical drive, the very first thing that the technician had me do was reset the PMU. I was pretty skeptical that resetting the PMU could affect a malfunctioning DVD, but Julie's PowerBook appeared to have eaten a DVD (its very first day in the house), and resetting the PMU got the DVD out and reset the blood pressure as well.
So all my SuperDuper gymnastics were in service of getting the Powerbook ready to go to the repair depot, which I found out yesterday, was in Houston, Texas. Yesterday afternoon, two gentlemen from DHL (one was a trainee) rang my bell with the pickup box. Thankfully, they asked me if the machine was ready to go, which it was. On Bainbridge, the various delivery services have bad habit of leaving packages without ringing the bell, sometimes even on packages that are supposed to be signed for. So I was imagining the worst case scenario, where the dropped the box without ringing, so I would then have to call them back and have them come back the next day to get the box. My brother must be showing those DHL folks the ropes.
In the meantime, Julie has graciously allowed me to commandeer her new Powerbook so that I can continue to work.
Today I registered my copy of SuperDuper!, which is program for backing up (cloning, really, since it doesn't do conventional incremental backups like Retrospect) Macintosh volumes. I had been using Carbon Copy Cloner, but I wasn't convinced that it would work on Tiger volumes, particularly on the metadata.
In particular, I was concerned about preserving all the "Where From" information kept by Safari. So I was ready to try SuperDuper!, having had a recommendation from Morgen. It did the backup pretty speedily, and even rebooted onto the backed up volume after it was done (a nice touch).
However, when I checked files that I had downloaded with Safari, I found that all the "Where From" information was gone. I sent a note off the the SuperDuper! tech support address, and got a very speedy reply from Dave Nanian at Shirt Pocket. Dave was very responsive, and I sent him Bob Ippolito's post about copyfile. He did some more research and discovered that:
the metadata importer isn't actually extracting that information from the file. Instead, it's being explicitly added/tagged by Safari (no doubt because there's no real association with an importer here), and it's not done in a 'classic' metadata way -- it's being shoved directly into the Spotlight index.
That means that information is lost if you recreate the index, too...
That was a nasty explanation, but one which also explained the behavior documented by Scott, namely that "Where From" info does not survive being copied by cp. It turns out I had later used the source volume, my PowerBook's internal drive in Target mode, as an external drive on Julie's new PowerBook, which caused Spotlight to reindex the drive (for reasons I still don't understand). And sure enough, now the "Where From" data was missing on the source drive as well.
Dave's revelation about the "Where From" data being stored in the Spotlight index (instead of as metadata on the actual files) is going to save me a lot of grief -- I was planning to use that feature a lot. But now it seems much less appealing since it's hard to know when the Spotlight indices get nuked.
My conversation with Dave goes above and beyond what I'd call "support". Not only that, I hadn't even registered SuperDuper! yet -- I planned to if it worked for me, but I was in the middle of proving that out, and I didn't mention that to Dave at all. This kind of support is why I'm happy to "pay for software". I put that in quotes because in my mind, I'm not really paying for the software, I'm making sure that Dave has time to continue to be amazingly responsive to questions like mine, to write on his blog, and to continue improving SuperDuper! Would I prefer SuperDuper! to be open source? Sure, but even if it was, I'd still have paid Dave the $20. That's one reason I like being on the Mac. I love all the small developers like Dave, Brent Simmons, and Adriaan Tijsseling.
[ via Kernel Traffic #307 For 26 Apr ]
Kernel Traffic is covering the development of git. Linus decided to write git instead of trying one of the existing systems. The mail exchanges on git had some interesting bits on community dynamics (at least in the Linux kernel)
Albert D. Cahalan said:
I think you at least instinctively know this, but...
Centralized SCM means you have to grant and revoke commit access, which means that Linux gets the disease of ugly BSD politics.
Under both the old pre-BitKeeper patch system and under BitKeeper, developer rank is fuzzy. Everyone knows that some developers are more central than others, but it isn't fully public and well-defined. You can change things day by day without having to demote anyone. While Linux development isn't completely without jealousy and pride, few have stormed off (mostly IDE developers AFAIK) and none have forked things as severely as OpenBSD and DragonflyBSD.
You may rank developer X higher than developer Y, but they have only a guess as to how things are. Perhaps developer X would be a prideful jerk if he knew. Perhaps developer Y would quit in resentment if he knew.
Whatever you do, please avoid the BSD-style politics.
(the MAINTAINERS file is bad enough; it has caused problems)
Later on in the thread, Linus followed up to requests for patch reordering / cherry picking (two features that I am interested in for a source control system):
I really disliked that in BitKeeper too originally. I argued with Larry about it, but Larry (correctly, I believe) argued that efficient and reliable distribution really requires the concept of "history is immutable". It makes replication much easier when you know that the known subset _never_ shrinks or changes - you only add on top of it.
And that implies no cherry-picking.
Also, there's actually a second reason why I've decided that cherry- picking is wrong, and it's non-technical.
The thing is, cherry-picking very much implies that the people "up" the foodchain end up editing the work of the people "below" them. The whole reason you want cherry-picking is that you want to fix up somebody elses mistakes, ie something you disagree with.
That sounds like an obviously good thing, right? Yes it does.
The problem is, it actually results in the wrong dynamics and psychology in the system. First off, it makes the implicit assumption that there is an "up" and "down" in the food-chain, and I think that's wrong. It's increasingly a "network" in the kernel. I'm less and less "the top", as much as a "fairly central" person. And that is how it should be. I used to think of kernel development as a hierarchy, but I long since switched to thinking about it as a fairly arbitrary network.
The other thing it does is that it implicitly puts the burden of quality control at the upper-level maintainer ("I'll pick the good things out of your tree"), while _not_ being able to cherry-pick means that there is pressure in both directions to keep the tree clean.
And that is IMPORTANT. I realize that not cherry-picking means that people who want to merge upstream (or sideways or anything) are now forced to do extra work in trying to keep their tree free of random crap. And that's a HUGELY IMPORTANT THING! It means that the pressure to keep the tree clean flows in all directions, and takes pressure off the "central" point. In onther words it distributes the pain of maintenance.
In other words, somebody who can't keep their act together, and creates crappy trees because he has random pieces of crud in it, quite automatically gets actively shunned by others. AND THAT IS GOOD! I've pushed back on some BK users to clean up their trees, to the point where we've had a number of "let's just re-do that" over the years. That's WONDERFUL. People are irritated at first, but I've seen what the end result is, and the end result is a much better maintainer.
Some people actually end up doing the cleanup different ways. For example, Jeff Garzik kept many separate trees, and had a special merge thing. Others just kept a messy tree for development, and when they are happy, they throw the messy tree away and re-create a cleaner one. Either is fine - the point is, different people like to work different ways, and that's fine, but makign _everybody_ work at being clean means that there is no train wreck down the line when somebody is forced to try to figure out what to cherry-pick.
So I've actually changed from "I want to cherry-pick" to "cherry-picking between maintainers is the wrong workflow". Now, as part of cleaning up, people may end up exporting the "ugly tree" as patches and re-importing it into the clean tree as the fixed clean series of patches, and that's "cherry-picking", but it's not between developers.
NOTE! The "no cherry-picking" model absolutely also requires a model of "throw-away development trees". The two go together. BK did both, and an SCM that does one but not the other would be horribly broken.
(This is my only real conceptual gripe with "monotone". I like the model, but they make it much harder than it should be to have throw-away trees due to the fact that they seem to be working on the assumption of "one database per developer" rather than "one database per tree". You don't have to follow that model, but it seems to be what the setup is geared for, and together with their "branches" it means that I think a monotone database easily gets very cruddy. The other problem with monotone is just performance right now, but that's hopefully not _too_ fundamental).
It's always interesting to see how the various open source projects view their community dynamics. The amount of community engineering embodied in source control systems is also pretty interesting.
Doc is continuing the conversation around his flat world post. The conversation has turned to the distribution of intelligence, or more accurately, the distribution of scores on the IQ test, which is a proxy for intelligence.
We love metrics -- turning people into numbers, sorting and then classifying according to which sections of the histogram they land in. My experience is that turning people into numbers is extremely unreliable. I've worked with people who've had their degrees from the finest universities in the US. Some of these people I'd work with again in a minute. Some of them, I'd prefer not to work with again. Most of them probably scored quite well on some combination of IQ, SAT, AP, GRE, or other quantitative proxy for intelligence. I've also worked with people who have either no degree or a degree from a university that I'd never heard of before. And again, there are some who I'd work with again, and some that I'd prefer not to work with. The point is that "intelligence", which is a proxy for being successful in life, is not nearly as useful as we'd like to believe. Other factors matter, too. And different fields of endeavor require different skills and qualities for success.
In Benkler's paper on commons-based peer production, he advances the notion that
What peer production does is provide a framework, within which individuals who have the best information available about their own fit for a task can self-identify for the task.
People find a task which they have the skills for and which they are interested in performing. At the end, the person either completes the task or does not. If they don't, that's pretty self-evident. If they do, then their contribution is evaluated. Self selection is not the only factor involved. In peer-production, once people have self selected, there's an important balancing mechanism to ensure quality
This is why practically all successful peer production systems have a robust mechanism for peer review or statistical weeding out of contributions from agents who misjudge themselves.
But notice that these mechanisms operate on contributions -- that is, on the merit of something that a person contributed to a project. They do not do quality control based on the person's grades, IQ, SAT scores, their position in an organization, or anything other than the work the person actually did.
The DrunkenBlog has a great inteview with Jonathan Rentzsch, a big time Mac Hacker. Buried in there is a plug for Python and PyObjC:
Objective-C's big weaknesses today is its lack of a Windows story, its lack of automatic memory management and its method call syntax, in that order.
That said, my eye isn't on Java or C# to put the knife in Objective-C's back -- it's Python. Python addresses all the issues and PyObjC makes it easy to use Python with Cocoa. Indeed, PyObjC can do things Objective-C can't do by itself.
but later on he also says this:
Windows is so backwards that the ancient Objective-C/AppKit was better. C#, while not aimed at Objective-C per se, gets them closer. So let's widen the gap again. It's highly arguable if Python is "better" than C#, but from a control-your-own-destiny angle, Python is a complete slam dunk. Python works well on *nix, Java, .NET and Mac OS X. It's open source. It's sane.
But I won't argue it's fast. It's usually just not so slow you care. (grin)
Speed *does* matter.
[via Wonderland: Burn The House Down ]:
Part of a Brenda Laurel rant at this year's IGDA
There hasn’t been a game about geopolitics that was worth a shit since Hidden Agenda! We should be giving people rehearsals for citizenship and change.
Doc Searls has spilled our beans. Using Thomas Friedman's new book "The World Is Flat: A Brief History of the Twenty-first Century", and essays by John Taylor Gatto, Doc makes the connection between open source and home schooling.
Stop and think for a second here. How much of the world's best open-source code is being created by people who were trained to write that code in school? How much of it is the product of mentoring and self-education instead? How much of the intelligence behind it is as different as fingerprints?
What if the old industrial schooling system is as threatened by open source as the old proprietary software system?
If I had fallen in line with my teachers in school, I might have never learned to program a computer. When I was in 7th grade, our junior high school got computers. Problem was the computers was an 8th grade activity. So I begged one of the math teachers to let me come after school and learn. I think he figured that I would get bored after a few days. Instead, I turned up every day after school for the rest of the year, copies of Byte and Creative Computing in hand. I never had a formal course in computing until I got to college.
Writing about Friedman's book (in Part 1 of his essay):
He also credits open source with a contagious value system:
The striking thing about the intellectual commons form of open-sourcing is how quickly it has morphed into other spheres and spawned other self-organizing communities, which are flattening hierarchies in their areas. I see this most vividly in the news profession, where bloggers, one person online commentators... have created a kind of open-source newsroom.
This value system is the value system of open source, of blogging, of home schooling, and other trends towards decentralization. And the value system of the traditional/industrial school system (not just public -- many private schools have the same philosophical orientation) are the reason that we prefer to homeschool.
I say all this because it's clear to me--and probably to Tom Friedman, too--that the flat new world isn't big on fitting. Here we reward differences. We value uniqueness, creativity, innovation, initiative, resourcefulness. Every patch to the software in the server that brings you this essay was created by somebody different, with something different to contribute. Yes, a meritocracy is involved. But I can assure you it has nothing to do with grades or IQ tests. It has to do with quality of code and with the virtues that produce it, only some of which are fostered in school.
The flat world is different. The flat world really does reward individuality, creativity, freedom, initiative. Tom says that too, but he also seems to think school can solve the problem when, in fact, school may be a big part of the problem. And not only in the US. Other countries may have better educational systems than we have in the US, but those countries also produce plenty of intellects whose self-education is far more helpful than whatever they obtain from school. And the ability to self-educate is essential in the flat new world
I want my girls to be ready to thrive in the flat new world.
I was looking forward to Tiger, but some of the stuff that I've seen in the last few days is making me excited about the Mac.
One of the areas making me excited is the whole metadata scene. John Siracusa's great review of OS X uncovered a lot of under the hood stuff related to metadata.
Les Orchard pointed out that Safari is annotating downloaded files with the URL's that were used to obtain them. This isn't the first time that Mac OS had this feature, but it's the first time that it's appearing in OS X. And of course, you can search these annotations with Spotlight.
I have a David Allen style read and review list, and much of what I want to read and review is PDF files. I had been using OS X Finder labels to mark whether I had printed a particular file (I have a file of papers of various lengths that I carry with me so that I can make the most of breaks), and then to mark when I actually finished the paper. So I can create a smart folder of 'printed' PDF files and then use that to mark those documents as read after I finish. And if I use Safari to get those PDF's in the first place, now they'll record where I got them from.
I already sent a feature request to Brent to have NetNewsWire do the same thing when it downloads files. Pretty much every application that downloads files ought to be doing this. I really want Firefox to do this too.
Russell wrote a post about sticking tags in the Spotlight comments in the Finder. He even suggested that someone write an application that would let you batch tag files. A bunch of his readers commented that you could just use Automator to do this. Lon Baker even posted his Automator workflows. Elapsed time to solution? About 4 hours to the first Automator suggestion, 5 hours till Lon's post.
[ Update: here's another Automator/Spotlight Comment action ]
Today I went looking for the latest version of Growl (.6.2) which has a fix (among other things) to make the Smoke theme visible. I learned that the version of GrowlMail in subversion is supposed to work with Mail 2.0. It does, except that some proportion of the time it kills Mail. Hopefully that will get fixed soon. But I also discovered an Automator action (in svn) for Growl (and that's in addition to the Python bindings and the command line growlnotify).
Perhaps Automator is going to end up surprising a lot of people in a very positive way.
Our family had a great time hosting the first Bainbridge Blogger's Bash. Chris, Chip, Mike, and Phillipe have the full lowdown. A few people commented on my burned arm (I no longer need the gauze bandage, so it's pretty glaring). I did the good host thing and circulated around. I amost did not recognize Dave Henry due to his beard -- it's been a while since I saw him last, but I'm looking forward to some of the stuff that he's working on.
I was particularly interested in meeting Adrian Sampson, author of iChat Auto-Reply, NIce to know that there are some other open source Mac hackers on the island, even if they are "young". It was amusing when Adrian asked if I knew his friend Sarah Gould, who also happens to be young. Sarah is part of our bi-weekly Bainbridge Island "Geeks" reading group, and I definitely know her. She wasn't able to make it, but I'm looking forward to getting both of them together into a room. Adrian, Dave, and Phillipe were engaged in interesting and philosophically oriented discussion about open source, communities and so on, which I injected a comment into as I was passing by to feed Elisabeth her dinner.
Mike brought his PSP and (accidentally) induced some depression:
At the top is Mike's PSP. At the bottom is a Newton MessagePad 2100, which I worked on while I was at Apple. I should have thought to open the lid on the Newt so that that full depression could be displayed. The difference in size and weight should be obvious. The differences in the displays, the 802.11b, and the retail price?
On the whole, it was a totally enjoyable evening.