I posted on a confusing story out of France awhile back, and asked for clarification. Now, there's a good story on what's going on here. As it happens, France (and Spain, for that matter) are in the process of codifying an EU directive on copyright law from 2001. The issue comes up based on a few potentially troublesome aspects of that law - troublesome for OSS advocates and for commercial vendors alike. Here's what the OSS side doesn't like:
One proposal would require that all software enforce digital rights management, or DRM, a sort of digital lock intended to prevent illegal copying.
"This would basically undermine the fundamental principles of open-source software," said Loïc Dachary, vice president of the Free Software Foundation France, who is a software developer for Mekensleep, a Paris video game maker.
Based on how vendors currently want to "help" us with DRM (Sony and Microsoft come to mind), I think this is a terrible idea. It will bring all the worst aspects of the DMCA to Europe, in my opinion. The vendors have their own issues with the proposed law:
One would require software makers to show competitors the underlying source code of any DRM components in their products. The other would make software makers liable for damages from entertainment companies or artists even if their software were altered by criminals to perform illegal copying.
"We are very concerned about these two proposed amendments," said Francisco Mingorance, director of public policy in Brussels for Business Software Alliance Europe.
A sponsor of the French legislation, however, played down the concerns expressed by both factions as exaggerated and said lawmakers would ultimately strike the right balance between business and open-source interests. "What you are hearing now is a lot of nervousness as the legislation moves closer to a vote," said Senator Michel Thiollière, the main sponsor of the copyright legislation in the French Senate, which will vote on the issue in January. "I believe lawmakers will ultimately find the balance to protect the rights of artists and to preserve the best possible access for people who want to legally enjoy the Internet."
The danger is, since both OSS advocates and vendors have problems with the proposed law, it could easily be seen as the sort of "valid compromise" that makes everyone a little unhappy (excepting the RIAA and their European brethern, of course). This sounds like a train wreck law - let's hope it gets derailed.
We’re proud to announce that del.icio.us has joined the Yahoo! family. Together we’ll continue to improve how people discover, remember and share on the Internet, with a big emphasis on the power of community. We’re excited to be working with the Yahoo! Search team - they definitely get social systems and their potential to change the web. (We’re also excited to be joining our fraternal twin Flickr!)
That will definitely help them with ongoing scaling. Looks like it's a Google/Yahoo/MS fight for web eyeballs.
In news fthat should be from the past, Microsoft announces that they are bringing Windows up to the state of the art... circa the mid 80's:
Microsoft Corp. is working on a significant new feature for Windows Vista, known as Restart Manager, which is designed to update parts of the operating system or applications without having to reboot the entire machine.
Microsoft officials have not talked much publicly about this new feature, but Jim Allchin, the co-president of Microsoft's platform products and services division, recently told eWEEK that this is an example of just how important the reboot issue was to the Redmond-based software giant.
I boggled when I started reading Tom Yager's latest column - "Reviving Native Traditions". He's out there, but at least I know why he still thinks that the iTanium has a future - he's pushing for a resurgence of C++ (et.al.):
Even though it tags me as a graybeard, I have a firm belief that the welcome trend toward slower, cooler, more power efficient systems, as well as powerful converged mobile devices, requires nosing away from VB, Java, and .Net and back toward software that compiles from an editor down to byte patterns that match a target CPU’s unique, or native, machine language. One finds the antithesis of Java and .Net in C, C++, and Objective-C, the most popular programming languages that compile down to native code.
Yes, please pass me more buffer overflows now. Yeah, I know there are techniques to avoid them, and I know that "everyone" should know them. I think the history of the last decade shows that far too many people don't care - even at major vendors. System level sandboxing (something he mentions later in the column) is a great idea - and far better than the Java theory on that - but having an application take down an OS sandbox, while less bad than taking down the whole system, is still bad.
Heck, his own magazine contradicts him in the same issue.
Well, the forecasts were all calling for 3-8 inches of snow overnight - it looks more like 2 on my driveway right now. The schools closed, of course - this is Maryland :) Heck, they only just managed to get the roads cleared off. It might be enough for sledding, but I'm trapped on conference calls at the moment. We are making our go/no go decision on the release candidate for Cincom Smalltalk this afternoon - fingers crossed, it all looks good.
Blaine explains the difference between a Smalltalk environment and something like Eclipse:
I generally look at Smalltalk's IDE as playing with a live patient. You are in the middle of a living and breathing system that reacts immediately to you. There's no shutdown, compile, restart, and retry. It's all happening right here and now. It's an incredibly cool experience especially when you realize that you can execute any code and inspect the state of the system. Eclipse on the other hand is like looking at your objects through a window. You can do some manipulation, but you can't mess around with the guts of the patient like you can in Smalltalk. The thing that truly shocks me is why Ruby and Python developers still try to mimic Eclipse (ie. run the code in a different process) in the IDEs available. There's no IDE for them that allows you to be in the middle of a live system. Why wouldn't you want that? I can't wait till Ruby does have a great IDE like Smalltalks. It turns the amp to 12 instead of a mere 11.
And that really is the difference. Take the server running this blog - it's a headless (i.e., no UI) development image. When I update it, I can load code that modifies existing objects in the system. Need to add an attribute to all the registered users? No problem - I load the code, and every single extant instance gets the new attribute.
The same power exists at development time and and runtime. In the Java sphere, you don't get that power during development, much less at runtime. Which is why I call Java tools - even well regarded ones, like Eclipse - pale shadows.
This is kind of an inside baseball thing for the podcasting world, but if you follow that stuff at all, it's funny :)
I got this note from Andrew McNeil, a Cincomer in Sydney, Australia:
The Sydney Smalltalk Users Group is meeting on Monday 12th December 6PM at the James Squire at Kings Street Wharf down at Darling Harbour.
Special guest will be David Long.
David is the inventor of Atlantis Business Technology and produced the company's first patent application. He is the Chief Technical Officer and co-founder of the Atlantis software startup.
David will be talking about Development of Real-Time Applications with Atlantis and about the Atlantis technology in general.
Atlantis application is uniquely able to capture expert knowledge from human input and automatically generate a running program in a matter of minutes. The program duplicates programming functions in exact replication using a new modelling language known as ESGATEA.
This new and powerful programming language is designed to fast-track the product development process, in turn enabling customers to focus on their core business of bringing their products to market.
Bill Machrone at PC Magazine lays out the problems that have come out of the DMCA (here in the US - there are similar laws either on the books or being pushed elsewhere):
But if I did, I'd probably be in violation of the Digital Millennium Copyright Act, and it just might become the high-visibility test case that has me, PC Magazine, and Ziff Davis Media staring down the barrels of a lawsuit. Everything you need to know is on the Web, of course, and pointing you to the links would be the courteous thing to do. I'd planned to write a Solutions story on how to remove the driver that prevents your PC from ripping protected CDs, but I chickened out, because companies such as Sony and EMI have announced that they are upping their commitment to SunnComm and Macrovision copy protection on their releases. This means that they're now after the little guys, in addition to the counterfeiters, bootleggers, and big file-sharing networks.
This is the place the bozos at the RIAA and MPAA want to take us - and companies like Microsoft are only to happy to help them. Bill has an idea about what should be done:
Fortunately, the DMCA was enacted with a built-in review period, and it's time for the federal Copyright Office to review the anticircumvention provisions. If you would like to comment online, you can do so at www.copyright.gov/1201 /comment_forms/index.html.
I'm with Bill on this one
there is a bigger problem with dynamic languages in general, and this problem has been completely underestimated so far, which probably explains why dynamic languages are not making fast progress in developer mindshare.
This problem is the lack of IDE support.
I hardly know where to start with such nonsense. I suppose I could mention that Smalltalk has had auto-completion available for years, and that it was first implemented (and integrated into the tools) by customers. There may be a lot of Eclipse plugins, but how many of them are created as a "I wonder if I could..." thought over a couple of hours? Not many, I'd warrant. But just ask these guys - there's no IDE support in dynamic languages, so it didn't actually happen. Cedric manages to keep digging:
Auto-completion in IDE's has become extremely smart these past years. Refactoring is also a practice that modern developers have become completely hooked on, and for good reasons.
IDE's for dynamic languages come nowhere close to this level of functionality, and whenever I program in Ruby or Groovy, having to leave my IDE of choice is not only hard, it sometimes makes me decide against using the dynamic language, even if it's a clear winner on paper.
Ahh yes, for the examples he picks an Open Source project that isn't funded by a large corporation (I'm speaking of Eclipse), and a language that was dropped into the JVM and then forgotten. No mention of Smalltalk, or Lisp. Would it be too hard to have a look at the ancestors of all dynamic languages?
This kind of weather is not what we normally see in December in Maryland - at this time of year, it's usually the full excitement of 40 degree rain :)
Time to man the sleds!
Elliotte adds another post to the "Humane Interface" debate - the quote below follows on from an analogy about which remote is easier to use (an example Steve Jobs gave when introducing Front Row) - follow the link for the picture and analogy. Here's the meat, IMHO:
More buttons/methods does not make an object more powerful or more humane, quite the opposite in fact. Simplicity is a virtue. Smaller is better. Do you want to go all the way down to the absolutle theoretical minimum? For a list class that's probably about four public methods (new, insert, delete, get). Probably not. That's too few, but 78 is way too many. 10-12 is ideal purely from human-interface concerns. (I'd say 7-8 except I don't think most classes can really get that small. Maybe it is 7-8 if we count all overloaded variants as a single method though.) 25-30 is sort of the outside maximum: roughly the most signatures you can fit on a single piece of paper so that the programmer can see the whole class at once without scrolling their eyes. If that still doesn't convince you, tomorrow I'll take another look at the Array class that started this whole brouhaha and show exactly how pointless most of those 78 methods really are.
Well, I'm going to have to refer back to this post for part of the argument. Instead of dwelling on Ruby though (with which I'm less familiar), I'll look at Smalltalk, class OrderedCollection. In a base image, there are 55 instance methods in that class. There might be more with more packages loaded; have a look at this post on extensions to see how that's managed.
Now, I'm pretty sure that Elliotte would dislike 59 methods as much as he dislikes 78 :) Some of this is an Apples to Oranges comparison though. To wit: there are methods in the Smalltalk class implemented for polymorphic reasons that would not be done the same way in Java. For instance: #inspectorClass lets the collection tell the system how the development tools should look at the object. I'm fairly certain that Java IDE's approach that problem differently.
Additionally, exception raising has been factored out to individual methods. For instance:
notEnoughElementsError self error: (#errRemovedTooManyCollection << #dialogs >> 'attempt to remove more elements than are in the collection')
That's an exception that gets raised if we try to access past the end of a collection (on either end). An example:
removeFirst: numElements "Remove the first numElements elements of the receiver, and answer an Array of them. If the receiver has fewer than numElements elements, create an error notification." numElements > limit ifTrue: [^self notEnoughElementsError]. ^self privateRemoveIndex: 1 to: numElements returnElements: true
In Smalltalk, there's a strong bias to make the object responsible for its own actions. So when you try to index past the end, the object itself raises the exception - it's not handled by deep machinery in the VM.
Elliotte says that 10-12 methods are "enough" and that past that, we get into bloat. Well, looking at class OrderedCollection, I'm not sure what he'd want me to pull out. I suppose he might consider #add:before: fluff, but it's a useful method - it allows me to add some object before some other object in the collection. There's a ton of convenience methods of that sort in the class. Would it be better to simply have #add:, and then force developers to write their own versions of all the convenience protocol in their own classes? Recall that in Java, I can't extend a class, so these new methods will end up in some utility class. Clean OO, that's not.
Smalltalkers - and I think Rubyists - look at this problem very differently from Java folks. The Java people seem to like sparse classes, but they don't seem to realize that sparse classes combined with an inability to extend leads to everyone creating their own set of utility classes. In Smalltalk, the useful protocol that people add tends to migrate up to the vendor over time. For instance, in VisualWorks 3.0, OrderedCollection had 53 methods. More interestingly, the abstract Collection class (Collection) had 40 methods in VisualWorks 3.0 - and has 51 now. What we seem to have a two very different approaches to the class design problem. I think the Smalltalk/Ruby one is better, because it favors putting code where it belongs. The Java approach implicitly favors lots of utility classes.
From Blaine Buxton:
It's time for the Smalltalk User's Group. This week we will be discussing Dabble and showing the video demo. It should be a lot of fun! As always bring your cool pieces of code!
Here's all of the details:
When: December 13, 2005, 7pm - 9pm
Where: Offices of Northern Natural Gas
1111 S 103rd Street
Omaha Nebraska 68154
Office is at 103rd & Pacific. Guests can park in the Northern visitors parking area back of building, or across the street at the mall. Enter in front door, we'll greet you at the door at 7:00pm. If you arrive a bit later, just tell the guard at the reception desk you're here for the Smalltalk user meeting in the 1st floor training room.
Blaine Buxton, Mad Scientist In Training
"Tipping cows in fields Elysian"-Clutch
However, Elliot is completely right that having 78 methods in any class is an atrocity. Something that has that much surface area is way too complicated for humans to keep manageable. In addition, it also sets a bad example for coders learning the recommended ways of doing things -- i.e., "just throw anything you feel like in there."
I like the way he baldly asserts that 78 methods is "an atrocity". So what's the magic number? Is 22 methods ok, but 23 - heck no, that gets into atrocity range? There's absolutely no way to look at the raw number of methods and make that statement. He's assuming that there must be fluff in there - but that's an assumption, not evidence. The rest of his post is actually quite reasonable - it's just that one thing I object to.
Aaron Swartz has a long post up on reddit.com's move from Lisp to Python. It's an interesting post - especially so if you are looking for information on Python web frameworks - but the anecdotes about the reaction of the Lisp community sound very familiar to me as a Smalltalker. Sadly, lots of people in niche development communities have "conspiracy theory" reactions to this sort of thing.
The funny thing is, this gives me an excuse to make a point about reddit versus things like digg and blogniscient. The latter two services provide headlines and snippets in their feeds; reddit only provides a headline (title) and an url to follow - even on their web page. As someone who reads primarily in his aggregator, that makes reddit virtually useless to me. I do a lot of scanning, and - while I favor full content over partial content - partial content is better than just headlines.
If you are a startup, don't waste your time and money worrying about what happens when you have millions of users. Premature optimization is the root of all evil and in certain cases will lead you to being more conservative than you should be when designing features. Remember, even the big guys deal with scalability issues.
On a much smaller scale, I can speak from some experience here. When I first coded up the blog server running this site (back in 2002), I had no idea what kinds of scaling issues I'd hit - heck, at the time, I knew next to nothing about HTTP or XML. Had I spent time trying to solve whatever problems I could have imagined then, it would have been a complete waste. I had to learn from experience. Which is not to say that research and knowledgeable staff won't help; just don't assume that you know the answers up front. As Dare says, this is a problem that even the giants (who have a lot more cash on hand than the rest of us do) run into.
Sources say AOL's role as a critical player in search traffic makes it attractive to prospective partners.
Now, my referers are not representative of the web, but - I rarely see search requests from AOL. I see tons from Google and Yahoo, a trickle from MSN, and virtually none from anywhere else. AOL is bleeding subscribers and revenue - what value do they have to any buyer?
One of the things that came up in this thread was how method categories and partial class definitions make browsing code simpler in Smalltalk. Here's an example of why. In BottomFeeder, I have a package called RSSViewer (it holds most of the UI code for the application). Here's a screen shot of the upper four panes of the browser (the lower code pane is omitted), with one of the extension methods that have been added to selected:
What we are looking at is the top set of panes - starting from the left, we have:
- Package that contains the code in question - packages are a version control concept in VisualWorks
- Class View - a listing of the classes that are in the selected package
- Method Categories - often called protocols, these are names we use to group methods that are related in some way
- Method Pane - this is where we select a single method, so we can see its code
Notice how most of the protocols are italicized? If I were to select one, I wouldn't see any methods. What that's showing me is that there's more code for this class, but not in the selected package. I can narrow my view down to just the methods that are part of this package. However, I don't need to do that - I can see everything, if I want to. Here's another shot, of the same browser, but in hierarchy view:
Notice what's changed - the leftmost pane now shows the hierarchy for the selected class, and the second pane now shows all the packages that define code for that class. By selecting all those packages, I can see all the code for the class - or I can select only a subset of the packages, and see only that.
This is why commenters in the aforementioned thread say that Smalltalk's browsing tools and class extensions make larger numbers of methods palatable - we can add code directly to a class when we think it belongs there (instead of having to define a utility class), and then version off our changes independently of the rest of the system. We can then view our changes without having to see the whole class (or not - we can limit our view by package/class/protocol).
The Smalltalk tools give us a lot of ways to slice our view into the system.
Lee Gomes of the WSJ thinks that a subset of the technical blogosphere is shaking up tech reporting:
The reality is that while there are now as many tech blogs as stars in the sky, only a tiny fraction of them matter. And those that do aren't part of some proletarian information revolution, but instead have become the tech world's new elite. Reporters for the big mainstream newspapers and magazines, long accustomed to fawning treatment at corporate events, now show up and find that the best seats often go to the A-list bloggers. And living at the front of the velvet rope line means the big bloggers are frequently pitched and wooed. In fact, with the influence peddling universe in this state of flux, it's not uncommon for mainstream reporters, including the occasional technology columnist, to lobby bloggers to include links to their print articles.
There's a reason for this - when you look across the group of people blogging on technology, most of them are "hands on" people - i.e., they are not just talking about tech, they are producing it. Most (but not all) of the technical journalists suffer from the same problem as a lot of technical management: they hung up their tech spurs years ago, and now rely on other people (or their gut) in order to make decisions.
In business, smaller, nimbler companies "disintermediate" the plodding giants that have forgotten how to be nimble (think MS, circa 1985, or Google 4 years ago). In technology reporting, bloggers are getting the jump on many reporters, because they are still working in the field. Not all technical people can write, but there are plenty who can - and they can report on something far more quickly than the journals can.
One thing I've noticed on this - the technical journals - InfoWorld and ComputerWorld come to mind - have embraced blogging in a way that the MSM really hasn't. This has allowed the smarter publications to stay in the game. I no longer have to wait a week to see what Jon Udell thinks, for instance - he shows up in my aggregator instead. Over on the non-tech side of things, look at the New York Times as the epitomy of not getting this change in the landscape: they've put all the opinion columnists behind a pay wall. It's been a pretty good way of removing those folks (and the Times in general) from the conversation.
Hat tip to Daver Winer.
Looks like the musicians have started to cry "foul" over DRM - this is exactly the kind of thing that the labels fear most. In a NYT Op/Ed piece, Damian Kulash Jr. (of Ok/Go) has spelled out the problems succinctly:
The Sony BMG debacle revealed the privacy issues and security risks tied to the spyware that many copy-protection programs install on users' computers. But even if these problems are solved, copy protection is guaranteed to fail because it's a house of cards. No matter how sophisticated the software, it takes only one person to break it, once, and the music is free to roam and multiply on the peer-to-peer file-trading networks.
That's the technical problem right there - none of these schemes are break-proof, and the people willing to break them will do so quickly. Meanwhile, the bigger problem is with the people who legally buy the music, and then can't do what they want with it:
Meanwhile, music lovers get pushed away. Tech-savvy fans won't go to the trouble of buying a strings-attached record when they can get a better version free. Less Net-knowledgeable fans (those who don't know the simple tricks to get around the copy-protection software or don't use peer-to-peer networks) are punished by discs that often won't load onto their MP3 players (the copy-protection programs are incompatible with Apple's iPods, for example) and sometimes won't even play in their computers.
Conscientious fans, who buy music legally because it's the right thing to do, just get insulted. They've made the choice not to steal their music, and the labels thank them by giving them an inferior product hampered by software that's at best a nuisance, and at worst a security threat.
Damian then goes on to point out that having the music spread - even if some of it spreads illegally - is a net positive for the artists. More people hear it, and more people end up buying it. The attempt to lock it up merely gets in the way of the good people, and does nothing to stop the bad people.
Which is why all of these sorts of schemes - DRM for music, the absurd PVP-OPM thing that Microsoft wants to harm us with - these are all stupid ideas that get in the way of law abiding customers trying to legally use a product (CD, DVD, etc).
The Wikipedia page on the Tet Offensive, which is the first hit in a Google search, is clearly partisan. "The Tet Offensive is widely, however incorrectly, seen as a turning point of the war in Vietnam," it says in the second paragraph. Now of course I want to know who said that. See the problem? Same set of facts, two different views. In the case of Dowbrigade, I know who's speaking.
I talked about this problem in October. Like the origins of WWI (the example I used in that post), the Vietnam war is still controversial - more so, actually, since many of the partisans are still alive. We won't have anything that begins to resemble a historical consensus on that war (or the part played in it by Tet) for decades - it's too raw, and the people who were of age then - on all sides - simply can't step back far enough. The (American) Civil War is far enough back to enable objective discussions; there are few people out there who still have strong partisan feelings about it. The closer in time an event is to the present, however, the worse the problem gets.
What are the correct facts on something like Tet? It's too close to the present to have a universally accepted view. Trying to declare one now would be like trying to find a consensus on the Civil War in 1900 - the partisans were too close to the event. The power of something like Wikipedia is that (before the recent changes) it allowed for ongoing editing to iterate toward a consensus. Where one is lacking, dispute pages could be created. Now? We'll have editors, and tons of submissions. Like printed encyclopedias, events this close to the present will fall one of two ways:
- The bland, "on one hand, on the other" approach that is so common on newscasts
- A dry exposition of the (few) agreed upon facts, with nothing more
Yeah, that's a whole lot better than what we have now. Especially given that "experts" suffer from the same closeness problem that the rest of us do. Great - we've now got an electronic copy of the hidebound print editions. Editing is time consuming and expensive as well - the further Wikipedia runs down this road, the more pressure there will be to make it ad/subscription supported, in order to pay for that back end editing expense. A good thing ruined, because the MSM pros don't like competition, and a few people who disliked a few things in Wikipedia pitched a fit.
"The new models of Google and others reverse the traditional permission-based copyright model of content trading that we have built up over the years," said Francisco Pinto Balsemao, the head of the European Publishers Council, in prepared remarks for a speech at a Brussels conference.
His stance backs French news agency AFP, which is suing Google for pulling together photos and story excerpts from thousands of news Web sites.
"It is fascinating to see how these companies 'help themselves' to copyright-protected material, build up their own business models around what they have collected, and parasitically, earn advertising revenue off the back of other people's content," he said.
Geez, these clowns must have talked to this guy. Just like librarian Gorman, Balsemao wants to make everything harder to find, and - even worse than Gorman - wants there to be a tollbooth in front of it all. I'd try explaining the concept of "Fair Use" to him, but I expect it would make his tiny little head explode.
Mind you, I have a soft spot for bad movies, but I found that "The Triangle" was an ok show last night. It's a SciFi channel min-series with a decent cast, and the spin that they seem to be using is one that appeals to me - parallel universes. It's pretty clear to me that Neeno (played by Lou Diamon Phillips) is bouncing between at least two realities - he has one child in one, and two in another. The Crosstime Traffic series by Turtledove is one example of this genre (although, it's really aimed more at my daughter's age group than at adults).
In general, I really fiction in this area. I may end up disappointed in this show, but I'll be watching part two tonight.
Tim Bray talks about the new Sun Niagara chips, and the systems that will use them. It's a cool sounding technology, and I followed this link to a performance page on it, which raised a question in my mind. All things considered, the new system wasn't that much faster than the 3.6 Ghz Dell system at the bottom end. Especially when you consider that a lot of web applications can scale by throwing more hardware at them - the big question is this: What's the cost of the new SunFire systems, quantity one, versus the cost of 2-3 commodity intel boxes. Given the simple scale savings intel gets from their volume, it's going to be hard for Sun to compete there. I'll give them credit for being aggressive - this is neat stuff. It's an open question how well it will sell.
Wow, the Giants can actually win games now that they have a real quarterback - Kerry Collins had delusions that he was the second coming of John Elway, and continually tried to slice the ball into two and three man coverage. Game after game, he was just stunned that his passes were getting picked off. This year, with Eli Manning, that's not happening - and the Giants are 8-4.
It's December, and I actually have football games being played that I care about. Amazing.
Apple continues to make progress with the iPod - they've gotten NBC and others to jump (at least partially) on the iTMS store bandwagon:
Get out the popcorn and your 5G iPods everyone, because Apple has added a ton of new shows to the iTMS from the likes of NBC, USA, SciFi and Disney. The Office, Monk, Battlestar Galactica (including the miniseries), The Tonight Show, Late Night with Conan O'Brien, Law & Order and Surface are among the newcomers. But wait! There's more: peep the vintage NBC shows like Knight Rider (no joke), Dragnet and even some Alfred Hitchcock.
Friends of ours got interested in Lost after picking up the season one DVD set - they are now catching up by buying season two shows from Apple. I think the current commercial model for TV is about to flip to mass customization via individual subscription. Even Nielson sees it coming.
Hat tip Steve Rubel
Now here's a Forest Gump moment, podcast was chosen word of the year by the editors of the New Oxford American Dictionary. "Podcast was considered for inclusion last year, but we found that not enough people were using it, or were even familiar with the concept. This year it's a completely different story. The word has finally caught up with the rest of the iPod phenomenon."
Betsy Devine is a Wikipedia editor , and exactly the kind of person who should be in that role. Now if you could quantify what makes Betsy so ideal, and then find ten thousand volunteers with the same qualifications, then you'd really have something. The current Wikipedia system, as I've observed for a long time, gives anonymous trolls way too much power, although recent incidents should help to mitigate that. And Wales has been far too dismissive of the problem in the past. It may be time to find a new leader for that community, he's been more of a hypester and a flamer than a maven for information and a realistic community leader. To be clear, the previous situation, where Wikipedia was considered authoritative, yet at the same time had such low quality, was unacceptable. Either it loses the authority, or something is done to improve the quality.
Next, I expect Dave to be utterly stunned when the pace of content addition to Wikipedia slows to a crawl. Because in Dave's world, nothing is connected, and stuff just happens.
Maybe Java development does rot the brain - have a look at this screed from Cafe au Lait against Martin Fowler. Martin says the following about Ruby's List class (and the same things could be said about Smalltalk's List class):
The obvious contrast to a minimal interface is that humane interfaces tend to be much larger, and indeed humane interface designers don't worry too much about the interface being big. This isn't to say that classes with humane interfaces need be larger in terms of implementation. The fundamental functionality of the two is often quite similar.
A good way of looking at the difference between humane and minimal interfaces is to compare the list components in Java and Ruby. Java has an interface (java.util.List) which declares 25 instance methods. Ruby has an Array class (which is a list not an array) that has 78 methods. That difference in size is something of a clue of that there's a different style here. Both components offer the basic same service, but Ruby's array includes a lot of additional functionality. This functionality is all relatively small things that can be built on Java's minimal interface.
Seems reasonable to me - one of Martin's examples is that Ruby (and Smalltalk) have #first and #last methods. So with a Ruby collections, you can do this:
Whereas in Java, you have to do this:
The response from Cafe au Lait on this is just stunning:
A 78 method List class is about three times as bad as a 25 method List class, not three times as good. A 12 method List class would be about twice as good. Simplicity is a virtue for both users and implementers. There's simply no reason for 78 methods in a basic List class. In fact, there's no reason for 78 public methods in any class. 78 public methods in one class is a code smell. 78 public methods make a class hard to learn, hard to use, hard to test, and hard to maintain. When a class has 78 public methods, it's time to refactor.
The raw number of methods tells us nothing about whether we need to refactor or not; we would have to actually look at the methods, and see if any of them don't fit. However, that's not his objection; he's very worried about all these methods - he really, really wants his classes to be sparse. For instance:
Fowler likes the first and last methods in Ruby, but list.first() is not significantly simpler than list.get(0). list.last() is perhaps a little simpler than list.get(list.size() - 1) but only because Java stupidly indexes everything from 0 rather than 1. And how often do you actually need to get the first item in the list? Needing the last item in a list is even less common. Normally the reason we have a list in the first place is so we can iterate through it using an Iterator or foreach. More often than not no single element -- first, last, or middle -- is explicitly identified in the code. Java's List class does not lack any of the functionality in Ruby's. Java just factors it out into a few more classes, especially the Collections class, and skips a couple of rarely used "convenience" methods. The result is a simpler, easier-to-understand, easier-to-use, more humane API.
Umm, yeah. It's so much simpler to write extra code every time. I suppose that showing this guy the four search methods in Smalltalk's collection classes (which I'm sure Ruby has as well) - #select: , #detect: , #reject: , #collect: would just make his head explode.
I use #first all the time, btw, and I use #last a fair bit as well. Perhaps Java developers don't simply due to their absence? It can be hard to miss what's not provided.
This isn't the first time I've seen this reaction. If I recall, Java's Object class has something like 11 methods. A base VisualWorks image? Object has 235 mthods. I've seen Java guys recoil in horror over that, ranting about the horrid OO design. Funny how Smalltalkers have gotten by for over 25 years this way.
There seems to be a general desire for sparseness in Java-ville. It's a value that neither Smalltalkers nor Rubyists seem to worry over. We are far more interested in solving application problems than we are in the production of extra code to support sparseness.
Update 2: More here.
Martin Kobetic has put up a post on security code in VW 7.4, including a beta level DLLCC wrapper for OpenSSL. Check it out.
So I really have to ask: what's the "scripting language mystique" all about? You don't have to run javac? Rubbish--I don't believe that's a big issue. You don't have to write declarations? Bull--writing declarations means (to me) that it's easier to debug misspelled variable names. That's a HUGE time saver. As Brett McLaughlin has often said, "whenever you can get the compiler to do the debugging, it's a win." Is it that scripting languages are better "glue" languages for calling UNIX utilities and other external programs? Well, I don't see why it's so difficult to call Runtime.exec(). The fact is--if you have some documentation, you can use Java to call into the guts of other Java programs, not just their external command-line interfaces. That's some pretty powerful glue. If you understand reflection or have been watching what's going on with lightweight containers like Spring, you've got real computation superglue.
He goes on to say that he can do various tasks easier in Java because he knows Java. That's fine - I can do things easier in Smalltalk for that reason as well. However, I've done C, C++, and some Java - so I think I have some grounds to do comparative criticism. Loukides though?
"I don't know (insert language here), so it must be harder than Java"
That's right Mike - stay in your cave. It's probably safer there.
If BellSouth was trying to look Grinch-like coming into Christmas, they certainly did so - is there some kind of corporate competition for "best stupid PR stunt" going on that we don't know about? How else to explain the tantrum like outburst over New Orleans' plan to offer free WiFi:
Hours after New Orleans officials announced Tuesday that they would deploy a city-owned, wireless Internet network in the wake of Hurricane Katrina, regional phone giant BellSouth Corp. withdrew an offer to donate one of its damaged buildings that would have housed new police headquarters, city officials said yesterday.
City officials said BellSouth was upset about the plan to bring high-speed Internet access for free to homes and businesses to help stimulate resettlement and relocation to the devastated city. Around the country, large telephone companies have aggressively lobbied against localities launching their own Internet networks, arguing that they amount to taxpayer-funded competition. Some states have laws prohibiting them.
Of course, one of BellSouth's PR flacks disputed the story from the mayor's office. Not quite as stupid as Sony paying graffiti artists, but it's right up there.
I was in the kitchen, getting breakfast (and lunch) prepared for my daughter, and I thought I'd have a look at the weather channel - they've been calling for snow for a few days, and the forecast tends to be pretty solid this close to the event.
Not today though. They have one of their guys in DC (they like to send them on the road, so they can get "action shots" in the bad weather), and he was talking about the forecast. My ears perked up when he mentioned how it works. They run a number of forecast models, and then, as they get closer to the event in question, their models tend to converge. At that point, they go with the convergence as the forecast. This time, that's not happening.
It happens more often than I might have thought - I can recall a fair number of times when the local weather guy was pretty shaky on which way things were going to go, or simply said he was thinking "A" (while others might be thinking "B"). The models that are in use are better than they were (say, 10 years ago), but they still have a long way to go.
If you like unpredictable things, the weather is still partly in that camp. But hey - snow in Maryland in early December? That would be fun :)
Sometimes, when I have a modification I think would be useful for BottomFeeder, I figure it would make sense to try it out in a runtime environment before I send it off as an update. I can package the thing up as a parcel and simply load it into my application, of course - I just open the System>>Execute Smalltalk Code menu item, and enter the following into the workspace:
Parcel loadParcelFrom: 'ParcelNameHere.pcl'.
I highlight that and execute, and then answer "yes" to the confirming dialog (which pops because I'm reloading a new revision of a parcel that's already loaded). Other times, I want to try a smaller modification - a few method changes (which, if they work out, I'll package as an update. In that case, I export the modified code from my development environment as a fileout, and then execute this in a workspace in the runtime:
'FilenameHere.st' asFilename fileIn.
That loads the small change. If it's something that shouldn't go into production, but that I'd like to load at startup anyway, I can save the new file into the BottomFeeder directory, and just slap the code above into the .btfrc file (which gets auto-loaded at startup, if it's there).
The cool thing about all this is that Smalltalk provides its own scripting language. I ship BottomFeeder with the compiler and workspace present so that I can experiment like this, and also so that other people with Smalltalk knowledge can dive in, if they want to. Unlike a Java application, I don't have to tell people to use a "simpler" scripting language - which, btw, should be a sure sign that there are problems in Java - if the base language is too complicated for that task, that's a problem - at least IMHO.
In any event, it's a neat thing about Smalltalk - and it's something that allows customization of a runtime application, if the developer(s) of that application want to allow that.
More fallout from the Sony Rootkit fiasco - the person quoted here works a Saturday shift at a classical music station. Here's what the DRM publicity has done for Sony:
The prospect of taking a recent Sony release into the production studio, and using a selection from it for a pre-recorded program, or one of the staff popping it into the CD drive of their desk computer to review… and corrupting the production and library index on which the whole station depends… well, it is enough to give us all the cold shivers. I’ve been told that the station librarian is not ordering any new Sony classical releases until this whole thing is resolved. Now, there are probably series techies out there who can explain that the chances of this happening are pretty low, that Sony’s anti-piracy spyware couldn’t possibly damage our library and production set-up, and would they even bother doing this with classical releases anyway? But however small that chance would be, we still can’t take it. CD’s with potentially damaging programs hidden in them, versus the security of systems upon which the whole station’s programming depends?
My wife was commenting on this vis-a-vis "mission critical" systems last night - how happy do you suppose the IT staff at your company is going to be when they discover that security holes opened by Sony's DRM allowed malware to get into the network? Especially when all the employee in question did is pop a CD into his laptop while he was on a plane, so he could listen to some music? Never mind what the actual risk of that happening is - the fact is, this is well on its way to being perceived fact.
The upside: with any luck, the negativity will be aimed at DRM in general.
The Times has yet another article about Wikipedia, and how you need to be careful about trusting it - it's not a bad article, although the title - "Snared in the Web of a Wikipedia Liar" - certainly tells me something about the way the Times sees things. To wit - they have fact checkers, and those web folks don't. They bring up a good example of what can go wrong, with a guy who's name was smeared in a bio piece on the site.
However, it's not as if the Times' hands are clean of this sort of thing. Steven Hatfill comes to mind - the man who was publicly trashed as a "person of interest" in the Anthrax investigations from 2001. There were lots of breathless articles about him in the Times (and other media outlets) - and the damage done to Mr. Hatfill by the Times is far more extensive than anything Wikipedia has done.
In fact, the Times is now the subject of a suit brought by Hatfill. In the Wikipedia case, whoever put the bogus information on the page is unknown - but that's not true of the thing with the NYT. So before they get all high and mighty about the unreliability of Wikipedia, I have a simple question for them: why does Kristof still have a job after he went on a mission to destroy Hatfill's reputation?
Not only is the RIAA jihad against file sharing a huge PR mess, it's also technically illiterate. You have to love these folks - they really care about their customers. A lot.
It's only a few seconds, but the first movie footage ever shot, sometime prior to October 1888, is online here. Produced by Louis Aimé Augustin Le Prince
Auto-Blog Builder is your automatic website site builder. Build a giant website with 10,000 pages instantly... all real content rather than spam pages.
This waste of oxygen is selling a product that builds splogs. And touting it as a "web innovation". What a complete loser.
Hat Tip Mike Gunderloy.
In the 80's, it was D&D. After that, it was evil music and video games. Now, it seems to be a combination of video games and blogs. "Our kids are in trouble and it's all the fault of (insert bad influence that we don't understand here)".
I love reading a fatuous article like this one, considering how the media likes to disparage bloggers as rank amateurs.
Reports on the interwebs indicate that Sony or its ad agency has paid graffiti artists to spray paint images of little kids playing with PSPs in at least five U.S. cities: Chicago, New York, Philadelphia, Los Angeles, and San Francisco.
You really have to wonder what passes for thought in the executive suite there.
My daughter's sleepover (or, stay up over, to be more accurate) is over. The last of the guests left, so things have gotten quiet again. We had eight girls here this morning, inhaling french toast and chatting. The stay up part was the tiring part - they didn't get to sleep until about 1, and then they were back up at 3:45, playing with the GameCube. Then some of them were up at 6, in search of breakfast. Whew!
Alex Singleton has some thoughts for the "no html email" crowd:
In the early days of the web, there was a debate between geeks about what the web should look like. There were some people, the "ultra-geeks", who thought that websites should be about content and that it was wrong for webmasters to "force" readers to view the content in a particular way. Instead, the fonts and sizes used should be set by the visitor in their own web browser. Fortunately, everyone ignored the ultra-geeks, and the "DTP geeks" won (the geeks who thought that web pages should look like they've been desktop published).
Just as progress has been good for word processing and web pages, progress is good for e-mail. Geeks will give you a long list of charges against HTML e-mail. Ignore them, go into the Preferences window of your e-mail program, and tell it to compose HTML e-mail.
I'm sure I'll get complaints from the holdouts who use things like Pine. The rest of us have moved on.
To write an Operating System, you have to understand how the computer works. Right there, you have an advantage over everyone else. I don't know how many times I have to say it, but you cannot become a programmer unless you know how the hardware works. At the very least, how the CPU works. I find it amazing that some people graduate Computer Science with a degree and have no clue how computers work. Hardware programmers know the difference between a right shift for signed numbers and unsigned numbers. They are two different operators even though the symbol is the same in higher languages. In Java, they had to add an operator. Hardware programmers are frustrated that there's no operator that will give you both the quotient and the remainder at the same time. Hardware programmers find it annoying that you don't have access to the carry bit or other CPU flags in higher languages. Hardware programmers hate that they can't multiply two 32-bit numbers together and get the 64-bit result in higher languages. Same goes for dividing 64-bit integer with a 32-bit integer. Everything mentioned here should be standard in every programming language. This is what people who've only used high level languages don't get. That you're in shackles. You're being restrained. I don't need a safety net. I know what I'm doing. I don't have to be protected from myself. And I know many of you reading this don't need to be protected either.
Hmm - I wonder if this guy is an expert on every component in his house - including every tool he ever uses for something. Not to mention that 32 bit or 64 bit integers are simply lower level abstractions - higher level languages move you up a few levels so that you can worry about solving business problems.
Read the rest of his post - he's so buried in hardware trivia - the sort that is meaningless for most application problems - that it's amusing. As other people have said, an awful lot of software development is moving records back and forth from a database, with user interaction to make appropriate changes. Why exactly do I care about the graphics adaptor, or the way the CPU works for that?
Moving upstream to a portable language - like Java, or Smalltalk, for example - allows you to write an application that can move from one OS to another. I'd guess that any business that's evaluating a move to Linux, or to Mac OS X cares a whole lot more about that than they do about the trivia this guy frets over. Or even the ones contemplating their next OS upgrade.
I will agree that we don't need stupid shackles - but the ones I want removed have been - at least in languages like Smalltalk and Ruby.
Update: Gary Short agrees.
I've pushed out an update to the NetResourcesHTTP package - you can grab it via the update toolbar button. All it does is change the default agent string from what it was - reporting as "Mozilla compatible" to a NetResources specific string. The rationale is this - some servers look for "stock" agent strings and block requests from them - I've seen it locally. This should address that issue.
Time for the weekly log analysis - the BottomFeeder downloads are a little inflated, since I just pushed a new release - some of the downloads are existing users upgrading. That's reflected in the uptick to 457 downloads per day this last week. The breakdown:
I'm always amazed at those Alpha numbers :) On to the HTML page accesses:
|Tool||Percentage of Accesses|
Not a whole lot of change there from the last few weeks. Finally, the RSS tool accesses:
|Tool||Percentage of Accesses|
|Net News Wire||8.6%|
No drop in tool diversity there yet - the field is still wide open.
Glenn Vanderburg likes Seaside and Rails:
But there's a funny thing about pain: when your worst pain goes away, it doesn't take long to start being annoyed by the next worst. So it won't be all that long before Seaside's particular strengths start to look really attractive to developers who've grown accustomed to Rails' niceties. And then it'll be time for Seaside (or possibly some other continuation-based web framework inspired by it) to get the buzz again.
There are things Rails can learn from Seaside, certainly, but there are also thing Seaside can learn from Rails, and that learning will probably happen in both directions. As Avi pointed out in another blog this week, Smalltalk and Ruby are much more similar than they are different, so I see the two frameworks complementing (and, as above, complimenting) each other for some time to come.
The main thing is, more and more people are seeing that the roads taken by Java and C# are the wrong ones.
The final build that went out for 4.1 is using the default Agent String from the NetResources library, which flags itself as Mozilla compatible. This shouldn't be a problem, but I've seen a few feeds hand me back 412 precondition errors when using that string. So - if you see that (check the Help>>View Error Log menu item), then create a file named .btfrc in the BottomFeeder directory (same one that holds the executable), and place this text in it - it will get executed at startup:
Net.Resources.HttpClientModel userAgent: 'BottomFeeder/4.1 (', ExternalInterface currentPlatform second, '; ', Locale current name, ') NetResources/1.52'.
That's worked for me.
DeepCoveLabs asked me to post this:
DeepCoveLabs has an opening for a software developer. We write payment processing software used primarily by our main customer, a financial services provider with operations in Canada and Ireland. I once did a blog entry for Cincom and here is what I had to say:
DeepCoveLabs is in the business of developing payment processing solutions. We currently offer products for cheque conversion, multi currency credit card processing, international electronic funds transfers into about 30 countries, cheque printing in many currencies and languages, a currency exchange module and a CRM system for managing a payment processing operation... all written in Smalltalk.
Our team consists of a handful of developers all with strong Smalltalk skills. Current projects include:
- building a multi-currency credit card processing gateway mirroring our infrastructure across two sites with transparent fail over
- adding real time reporting of incoming payments from accounts worldwide
- extending the range of hardware our cheque scanning solution runs on
- enhancing the currency trading platform we have just deployed
- moving our file based reporting architecture to a web based one reviewing our DB design and mapping mechanism
Candidates must have several years experience with dynamic languages, ideally Smalltalk and have worked in an agile/test driven environment. Candidates with experience or skills in the following areas will have a distinct advantage:
- Payment processing and international banking
- Credit card processing
- Inter-bank communications and file transfer mechanisms
- DBA level RDBMS skills, especially MS SQLServer
- Network administrator level TCP/IP knowledge
- UNIX and/or Windows system administration
The work is located in Vancouver Canada and candidates must have a Canadian work permit. Interested candidates should send a resume and cover letter, including salary expectations to firstname.lastname@example.org.
4th floor 595 Howe Street
Vancouver, BC, V6C 2T5
I'm having trouble with what looks like a choppy translation, but it sounds like Open Source software may be facing some trouble in France. I'd be interested in hearing from someone who speaks French, and can read some of the original sources in French.
My daughter is having a sleepover birthday party - 10 or 11 girls, all aged 9-12 eating pizza, cake, playing GameCube, and pretending to sleep. I expect a loss of sanity some time this evening :)
Attitudes like this really, really irritate me. The same way that there are rich people and poor people in the United States, there are also parts of Africa that are less well off than others. It isn't all one freaking desert with bony kids surrounded by flies from South Africa to Algeria. For example, in Nigeria there are probably more cell phones per capita in the major cities than in most parts of the United States. The fact that some people get to use the latest iPods and iBooks in the U.S. doesn't mean there aren't homeless bums eating less than three square meals and sleeping on the streets in the same zip codes. Yet I don't see folks like James Robertson posting about how every homeless person has to be housed and every orphan found foster parents before we can enjoy iPods and laptop PCs.
Well, there's a huge hole in that last sentence - the people being targeted here mostly aren't supposed to be buying these - heck, if they were, this whole thing would be simpler. When people decide what to do with their own money, it's all good. Dare might want to look at the comments from Misbehaving.net - that speaks to my concern a lot more closely than Dare's bogus strawman. Not to mention that his "put your money where your mouth is" argument is nothing more than loudly shouting:
I disagree, so you should shut up now
I'll be blunt - that argument is beneath Dare, and I thought he could do better. In the parts of the world where people can get cell phones (and, where there's infrastructure for cell phones) - by all means, offer these for sale. My skepticism comes from a couple of sources:
- Lack of infrastructure - what about network access, and support in case of problems? Dare is questioning my motives instead of looking at my actual concerns. A large part of the marketing for these points to the hand crank power. I'm guessing that if there are no plugs, there's no network either.
- Heck, I'd guess that hand crank radios would be more useful for most of the people we are talking about here. Radio signals are already there, and access to timely news would be of great value - especially things like weather information. The "how do I use this" barrier is a lot lower as well.
What my concern boils down to is this - I'm guessing that a lot of these will be handed out, and will not be put to any productive use - due to infrastructure and support problems. Other things - clean water systems, hand crank radios, access to better medicines - could make a much bigger impact in short order - and wouldn't end up going unused.
You want to disagree with me? Fine - make an argument. Do better than telling me to shut up.
We are engaged in the last rounds of "is it ready" evaluation on the release - in fact, I have a conference call on that subject this afternoon. Things are settling down and getting close - so long as nothing mind bending comes up, we should have it out before Christmas. However, if we hit a show stopper, it could push us until after the holiday - time just compresses away at this time of year. We'll know soon.
Tim Bray sees that web development doesn't have to be hard; the mainstream languages and frameworks just make it that way:
Bruce claims that the “continuation” facility, commonly found in dynamic languages, snaps neatly onto the problem of making the Web look like a linear dialogue. Clearly, continuations are kind of hard to understand and not for casual or novice programmers. No problemo, says Bruce, frameworks like Seaside (layered over Smalltalk) hide the weirdness and let you just carry on an orderly dialogue with a user via a Web browser.
In my mind I was screaming “No! No! No!” because I’ve generally felt that the pain and complexity involved in object-relational and object-XML and object-messaging mapping outweigh the benefits; that if your application is based on exchanging messages, then the message exchange has to be visible to the application programmer. I’m not alone in having this kind of reflex.
Well, it seems that both Ruby on Rails and Seaside would tend to disagree, and the evidence is building up on their side.
And today I had a date with a Vancouver startup that I’ll write up when they’re ready; they have a very damn sophisticated Web app that I wish I’d been smart enough to think of, solid useful function and a ton of graceful little flourishes; and it’s all Seaside, all continuations, all simple methods that conduct orderly dialogues with the user. Maybe I’m wrong. Maybe you can abstract the Web away. Hmph.
A lot of people want to cling to the complexity as some kind of validation. It's nice to see that Tim's not one of them. I wonder what would happen if someone showed Scoble what Seaside can do?