whoops - power outage in Cinti
This site was unavailable for a period of time overnight, due to a power outage in Cincinnati. Things are up and back to normal now though; sorry for the inconvenience.
This site was unavailable for a period of time overnight, due to a power outage in Cincinnati. Things are up and back to normal now though; sorry for the inconvenience.
Chris Double shares a comparison between a Java struts and a Smalltalk Seaside weblog implementation. If you like lots (and lots) of code, pick the Java one :)
The FTP server is not working at the moment; I'm trying to get ahold of the admin. For NC downloaders, that means you should use the http service instead of the ftp service for the time being.
David Buck points out how Smalltalk tools enhance your productivity - and in the process, implicitly shows why Java/C# (et. al.) developers and Smalltalk developers talk right past each other when the subject of debugging comes up - Smalltalkers are talking about a much different tool.
The FTP service has been restored - so if you were trying to download Cincom Smalltalk NC, you should be able to use FTP again
The feeds (from this blog and from the ones in userblogs now have embedded comment support. You won't see them for anything cached in BottomFeeder unless you regenerate the feed.
Now that I have a bunch of other bloggers on the site, I'm starting to get requests from them for api access to the blog server. That brings up the ugly truth of the matter - this server sort of grew haphazardly, and the api has been mostly implicit. Well, I spent most of today starting to address that issue - and in the process cleaned up some inefficiencies. I haven't deployed the new code yet; I still want to test it out some more before I do that.
I got a request for supporting file urls this evening, and added support for it. This is only in the dev stream - it will show up in 3.2 when that is released. This should be useful for tracking local changes that can be published as RSS...
Ted Leung explains the concept of software monoculture far better than I did the other day.
The Yankees have 100 victories and the AL East pennant, and - so far - the Giants (football) seem to remember how to play the game. Somehow, the Red Sox managed not to succomb to their typical fall swoon (yet) - but then again, they have a series against Oakland (and then likely the Yankees, unless they manage to lose to Minnesota). Over in the NL, the Cubs managed to make it to the playoffs. Now, imagine for a minute - if both the Sox and the Cubs advanced to the series, one of them would have to win. Since that would mean the end of life as we know it, it can't happen.....
I love the fact that advocating Java in a vociferous way is pegged as normal - but being a Smalltalk (or Lisp, etc) advocate gets you labeled as a nut case:
James Robertson, smalltalk nut case and long-time Java detractor in c.l.j.a. (then again, I noticed most smalltalk nutjobs are Java detractors - it must come with the territory)....
Question the status quo, and there's just no end to how much you'll be called nuts. Interesting side point - most of the posters in c.j.l.a. who come at things from a Smalltalk viewpoint have used Java and other statically typed languages; while most of the Java folks arguing back haven't used any dynamic language.
Terry Raymond pointed me to this article on a "back to basics" movement in development:
The spark behind this growing trend comes down to control - enterprises tout IDEs as the development tool du jour, with supporters arguing that programmers will get more done if they can do all their work inside a single environment. But many programmers (especially experienced ones) prefer a markedly different approach, using code editors and pluggable modules, modes, or other extendibility features to pick and choose just the tools they need. They don't enjoy being shoved into a single development environment, and contend that IDEs are resource-intensive, slow, and have many more features than are really needed to get the job done.
Maybe that's because the IDE's are huge, bloated, and slow? Have a look at the footprint (both on disk and, more importantly, in RAM) of Eclipse, JDeveloper, etc - they are huge. I only have 256 MB of RAM on my two development systems - so that pretty much rules out any of the mainline Java tools. On the other hand, a baseline VW system starts up using 12 MB of RAM, and my standard development system, with all my tools loaded, uses 17. Heck, a dev image with all of BottomFeeder loaded - and a bunch of test artifacts lying around in workspaces - runs 24 MB. There's more:
"The editors in most IDEs don't have nearly enough features and they make manipulating code difficult," says Chris Rathman, a consultant and software developer. "For example, I need to be able to work with several hundred files in a single session and I must have the ability to do global search and replaces. Oh, and it has to be fast."
Hmm - that sort of refactoring in VW using the Refactoring Browser is nearly instantaneous - even on old, slow hardware like my PII 400. Maybe if the tools had a consistent meta environment, and didn't live on huge directtory trees of source code... The other intereresting thing is the need for editing features. Using Smalltalk, I'm simply never editing large bodies of text (other than SSP pages for the web - for which I often use an html editor). If the source for a method is so large that I think I need a power editor, then I made a mistake. Most methods should be short, and do one job - and by short, I mean - in Smalltalk terms - 7 to 10 lines. Consider the productivity loss from a language that, by its nature, pushes you towards long methods.
I also love this oft cited theory:
When it comes to expanding developer skill levels or teaching new programmers, there is some debate about whether code editors or IDEs are the right way to go. An IDE's extra features can act as a set of training wheels for new developers, depending on how much knowledge they bring to the table at the start. However, many of those who adhere to the code editing philosophy believe that junior programmers have an easier time learning the fundamentals of a programming language using a code editor because the new developer is not saddled with learning the bells and whistles of an IDE.
I guess some people just like creating mountains of text so that they can feel powerful about the whole thing. This is all part of the He-Man school of code construction, where the more text you create, and the harder it all is, the better.
I posted on the code bloat of a Java/Struts weblog implementation (vs. a Smalltalk/Seaside version last week. Now Chris Double points us to an in-depth comparison by Bill Clementson. This comparison explains, in a nutshell, why Smalltalk is so much more productive than Java - the sheer difference in code volume. Simple writing all that extra code is going to take longer.
Don Park is pulling for the Red Sox in the playoffs, partly because of their underdog status. Maybe they'll win - anything can happen - but they have a huge monkey on their back. The monkey is the 84 years of failure to win the big one - often with amazing flameouts (Think Bill Buckner). This weighs down in the players heads after awhile. If you think it doesn't, you haven't played competitive sports. As a high school kid, I ran track and cross country. There was a local high school that always seemed to win - and the mere fact that they won so much was an extra weight on the shoulders of every other team. It meant that we got more keyed up than we should have before every meet with them. It meant that we applied too much thought to the problem. It meant that, ultimately, in the back of our minds, there was always a question. That's where the Red Sox live, in that particular ring of hell. It's kind of fitting in a way that they now have Byung-Hyun Kim - he has that same monkey on his back due to the way the Yankees have played against him (not to mention his less than stellar year this year). He's going to go into any series with the Yankees feeling a need to prove himself - and that's just extra pressure. The Red Sox as a team feel that pressure, and it's going to take a lot on their part to overcome it. They might; anything can happen in a short series. I wouldn't count on it though.
Along the lines of this post, a reader submits this example:
Problem: I have a list of objects. I want to create another list containing the 'id' property of those objects.
Solutions:
Ruby
list.map { |i| i.id }Java
List ids = new ArrayList(); for (Iterator i = list.iterator(); i.hasNext(); ) { ids.add(new Long(((Thingy)i.next()).getId())); } Java w/ 1.5-style Generics and For Loop
List ids = new ArrayList(); for (Thingy x :list) { ids.add(new Long(x.getId())); }And the Smalltalk for that:
list collect: [[:each | each id]I think that all speaks for itself...
Yes, it certainly does. Just in sheer time at the keyboard, Java loses...
Some people using VW 7.x have reported freezes or crashes of VW on Linux distros with newer revs of glibc - particularly on RedHat 8 and RedHat 9. We've had a look at the problem, and believe that we have a bug in VW. Here's how to deal with this at present:
Some new linux systems install multiple libc.so.6 libraries, typically in /lib, /lib/i686, and /lib/tls. The difference between the libraries is the version of the kernel they assume to be running. Each library states this assumption in an ELF section named .note.ABI-tag that can be viewed using
#> objdump -s -j .note.ABI-tag <ELF file>The last 3 32-bit unsigned ints in this tag contain the kernel version, or "operating system ABI", required by the library. This was done as part of the new Native Posix Threads implementation. One big difference is that newer kernels have an api that defines the 'errno' global in thread-local storage instead of as a traditional global variable.
UnixSystemSupport has a #libraryDirectories attribute that includes '/lib', '/usr/shlib', and '/usr/lib'. On Martin's system, the loader resolves the engine's symbols in /lib/tls/libc-2.3.2.so and /lib/tls/libm-2.3.2.so. However, because the paths are hard-coded in the attributes of UnixSystemSupport, this causes VW to open /lib/libc-2.3.2.so when it tries to find the function pointers needed by the OSTimeZone package. Additionally, this second libc-2.3.2.so is loaded in RTLD_GLOBAL mode by primitive 330.
I discovered that I could eliminate the system freeze in two different ways:
- set LD_ASSUME_KERNEL=2.2.5 in the environment before running vw
This causes the loader to resolve the engine against the libc in /lib. Since the UnixSystemSupport methods search for the same library there is only one glibc library loaded.
- empty the #libraryDirectories attribute on UnixSystemSupport and add 'libc.so.6' to the head of the #libraryFiles list.
This causes dlopen() to be called on the name "libc.so.6" which uses the platform's library search path. This ensures that the libc.so.6 that gets loaded is the same library as the loader used when it loaded the engine.
That's part of the text - with work-arounds you can apply in your image - for the internal bug report on this issue. Let us know if you have problems with this!
CNET News reports that Sun is restating their Q4 from a $12M profit to a $1B loss, and that they expect hefty losses in Q1 (just ended). Hmmm. That explains the recent round of layoffs at Sun, that's for sure.
Bill Kearney complains about spam getting into blog comment chains. That's precisely the reason I offer no email interface into my blog. We all know that spam is overflowing, so offering an email interface to a blog is (at least at present) an invitation for trouble. It shouldn't be that way, but it is.
Doc Searls thinks these principles for the internet make sense. Apparently, he's never considered the tragedy of the commons. When no one owns it and no one takes care of it, it rots. We can dislike that all we want, but it's the way things are. In fact, spam is one of the logical consequences of this.
In response to this post, where I said that a Cubs/Red Sox series was simply not possible, I got this in email:
No, if they both get to the Series, it would end in a 3-3 tie. Game 7 would never be played. The planet Earth would explode. Babe Ruth and that stupid Goat would fight it out instead. My money's on the Babe
Heh
Not that it really gets that cold here (DC area), but we didn't have what I consider to be a normal hot summer - and fall came in like a light switch at the beginning of September. Now, it looks like frost this week - with luck, snow won't be too far behind :)
If you follow the BottomFeeder dev builds, you'll see some changed behavior in the latest build. In the past, updated items came in as new, and you saw them (and the previous versions). Now, you'll see just the updated version in most cases. Also, I've placed the comments inline with the main feeds (my blog and the userblogs feeds) - so anytime a new inline comment comes in, an item will show as updated. Updated items will appear out of date sequence - they'll pop to the top of the list. I'm still experimenting with this, so the final behavior may end up different. Comments appreciated.
Scoble mentions that the public school near him doesn't have a computer lab. That's not the issue he makes it out to be. You want to be scared by what goes on in schools? Go quiz 3rd and 4th graders on their times tables, and see how many of them don't know them. Then look into whether your school allows kids to use calculators. My advice - don't worry about the computers - they aren't that relevant. Whether the math teachers actually impart knowledge, on the other hand, is critical. We've had to do all the drilling on basic math facts ourselves, because the schools don't.
Another way to realize this - go to a local shop where there are high school age kids around. Se how well they deal with math when the registers fail. Then ask yourself how relevant computers in the classroom are
In looking through my server logs, I see a lot of daily requests for the RSS files - from a very wide variety of newsreaders. However, there have been no requests at all (at least not yet) for the atom feeds. There are atom feeds for all the blogs hosted here. Now admittedly, other than this blog, I don't really advertise the atom feeds. On the other hand, I haven't had any requests either. At least from my viewpoint, atom - as a syndication format - has dribbled off into irrelevance. RSS, for all its warts, is the format that is actually in use - and that's unlikely to change.
Jeremy Allaire has something simpler than SOAP - built on RSS and XML-RPC. It's worth a read!
I fixed the server the other day so that all the main feeds had embedded comments - what I forgot was that the extant feeds, unless they got regenerated (via new content) still had the errors in them. My feed got updated, but the others, until they got new content, weren't getting updated. That's been fixed, and the feeds now have the embedded comments where they belong.
I posted a comment on Atom the other day, and Gordon made a few comments. I've made changes to BottomFeeder to handle Atom feeds; there was a bug related to changes from 0.1 to 0.2 that I had missed. I fixed all the server side validation issues as well. However, that leaves my question about relevance hanging. Here's the problem, as I see it. There are tons of RSS feeds out there - I see vitually no Atom feeds. I'm sure they exist, but I'm not finding them. Heck, look at the feeds page on Sam Ruby's site - no Atom links listed. There's another issue as well - there are scads of RSS modules, many of them very useful (embedded comments and the commentAPI in particular). Can you use these modules in Atom? I don't know, maybe you can - but the point is, it's not clear (at least to me).
On the posting side, the invention of a new authentication mechanism just seems wrong to me. HTTP has an authentication mechanism, it should be used. As to people not controlling sites - well heck, then how do they add support for this new mechanism on the server side? The site controller has to add it. If they can do that, they can darn well turn on authentication. To my mind, inventing a new authentication mechanism is just silly. Use what's there and move on.
Cincom has been publishing a newsletter called Expert Access for some time now. I've created an RSS feed for it here.
I recently (in 3.1) got Http authentication working in BottomFeeder. I didn't have to do anything out of the oridinary - all the support I need was already in the NetClients package, which has been part of the VW distribution for a few years now. So how do you add such support? Well, let's say you issue an Http request:
request := self fillRequestHeaders. client := HttpClient new. response := client executeRequest: request. response isUnauthorized ifTrue: [authInfo := self promptForAuthorization].
Now, once you have that authorization information, what do you do? Well, you create the request again, this time with the authorization information in it, then re-issue the request. Something like this:
request username: authInfo username password: authInfo password. response := client executeRequest: request.
That should do it. Now, of course, you'll want to catch exceptions, and handle other cases (movement of a page, various error responses, etc.). To get an idea of how to do that sort of thing, load the package Http-Access from the Public Store. The package handles authentication, moved pages, and mod-gzip automatically. I use it in BottomFeeder and my blog posting tools - it's getting real world use.
The @Stake firing of Dan Geer has been widely reported by now, but I've just been loiking at the ComputerWorld story in print. This thing is uglier than I thought:
The day after the report's release, co-author Dan Geer was fired from his job as chief technology officer at Cambridge, Mass.-based @stake Inc., a security company that derives a hefty percentage of its income from Microsoft. Moreover, the firing was made retroactive to Sept. 23 so that @stake could further distance itself from Geer and the report, sources close to the situation said.
An @stake official, who spoke on condition of anonymity, confirmed that Geer was fired and said that as a corporate officer he should have known that Microsoft was a client of the company. "It's not a matter of the content of the report; it's a matter of ethics and respect for clients," the official said.
Hear that sucking sound? It's the sound of @Stake's management team kissing up to Microsoft. The funny thing is, the firing makes Microsoft look bad as well - I think I'd stop doing business with a partner that made me look that bad. I'm sure there were some interesting conversations in Redmond over this, and I bet that the firing made MS officials far, far angrier than the report - the report could be spun - the firing is very, very hard to spin. Regardless of the reality of the situation, lots of people are going to assume that MS played the heavy on this.
There's a new episode of Angel, and two baseball playoff games on tonight. Thank goodness for the ReplayTV.
The A's Red Sox game that just ended was a hell of a game. I think everyone watching and playing was surprised by the bases loaded bunt by the catcher to end the game. Shades of Major League!
SCO takes on SCO, and says that the GPL won't stand up. There's definitely going to be some precedents coming out of this case; it's hold on to your hats time:
"The GPL has never faced a full legal test, and SCO believes that it will not stand up in court. We are confident that SCO will win the legal battle that IBM has now started over the GPL."
Watch what happens when a static typing advocate takes on David Buck in discussing the issues of type safety - look here and here.
Overheard in the Smalltalk IRC channel:
Definition of a blogger: a Blogger is someone who writes emails to himself
Heh. About the size of it....
I haven't posted since early afternoon - I was watching the Red Sox take their customary October swan dive - and then the Yankees came on at 8. Pettite pitched a heck of a game - if the Yankees let him go at the end of this year, they are completely bonkers. Looks like the folks hoping for a Cubs/Sox series won't be getting their wish :)
Spotted in Blogging Roller - in a discussion of what's needed to make a rich web interface, it seemed clear (to me, at least) that what you need when it gets to the point he's talking about is a client app:
Now, I'm working on a Java-based web application with very complex forms. Some of the forms have multiple tree choosers, dynamic select boxes, popup windows with dual-lists, and popups that cause the page that launched them to reload. There is just no avoiding JavaScript and our requirements are pushing us towards complex solutions like inner-browsing to reduce the number of trips to the server for page reloads.
That's what the guys at Brettspielwelt did for their interface into the various board games they support - they have a web based UI, but also a downloadable client. Most of the regular gamers there use the client. IMHO, when a UI gets complex, it shouldn't live in a browser anymore....
I went to see Underworld this afternoon, and it was an enjoyable action flick. The movie was engaging, and the action was well done - not to mention the presence of Kate Beckinsdale in tight leather :)
There was a clear setup for a sequel at the end, but that was ok - I'd go see another run through. Recommended
Update - It's been pointed out to me that there is a simple option under File>>Page Setup. How did I miss that? Well, that blasted feature that shows only the most recent menu options (there's a down arrow to show all of them). On my first inspection, I missed that option (not to mention - why is it in the File menu??). So yes, Word sucks a little less than I thought - but the menu re-arrange option (and yes, I know it can be turned off - but why the heck is it even there??) effectively removed it.
My daughter was finishing off a book report the other day, and she wanted to make it look nicer than hand written - so with trepidation, we fired up Word. Getting all the text entered was the easy part. Then came layout options. I've been creating very simple documents in Word for years, so it's been awhile since I screwed with page margins - I think the last time I looked was Word For Windows 2.0, back when Word was a decent tool that enabled productivity, instead of the time sucking piece of donkey dung it's become. Is there a menu for adjusting page level properties? Heck no, the margins are hidden under paragraph formatting. To apply margins to an entire page, I have to select all paragraphs and then apply the margins. I suppose it's nice to have that control at the paragraph level - but how flipping hard would it be to provide a menu option for adjusting page wide settings, and have them applied to all paragraphs? I'm sure this is documented, but that's not the point - it was not easy to find - I really wasn't thinking of looking in the Format -- Paragraph menu area for page level settings. This is one of the reasons that every post on the greatness of Longhorn by Scoble sets my teeth on edge. Every release of Word since Word for Windows 2.0 has been worse. That's right, worse. 2.0 was easy to use, the bullets went where I wanted them, the menus made sense, I could figure out how to set page margins - it was all better. Why am I not excited about the coming of LongHorn? Maybe because I expect the incidence of suckage to increase. It's not just Word, either. One of the things in XP that drives me bats is the blasted pop up from the tray that periodically tells me that I have unused icons on the desktop. NO I DON'T - I put the damn icons there for a frelling reason. I'm sure there's a setting to get rid of that damned notice, but who was the utter idiot in Redmond who thought it was a good idea in the first place? This is the kind of thing I mean by the increase of suckage. Here's another - every so often, a random app I have open - and it's been all different ones - seems to be unable to restore itself unless it's maximized - as if the window had somehow wandered offscreen. What's up with that?
I'm telling you, the Linux desktop or the Mac desktop is looking better and better every day. And the "gosh gee golly" noise about Longhorn isn't improving my mood on this. Fix the suckage, and shut the heck up on the wonders of an OS I won't see for two years.
Gordon Weakliem is adding Amazon feeds to his aggregator. I think I'll build support in Bf for creating these RSS links....
I just added support for building Amazon RSS feeds in BottomFeeder. It's pretty slick, if I do say so myself....
Over the last 2 days, you may have noticed some odd behavior in the way comments were displayed - i.e., they were there on the main page, and not hideable. This had to do with a cache I implemented to make delivery of the content faster in between updates to the site. The problem was, it was possible for the HTML to get cached with comments showing, and then - without updates coming in - for the comments not to hide. I fixed that, so the comment options on the main page should work as expected again.
Don Park has some advice for Google with respect to the AdSense flap.
BloggerCon at Harvard looks like an interesting mix - there are political bloggers like Instapundit and Josh Marshal, and the technical folks like Dave Winer - as well as people that live in both worlds, like Doc Searls. Perhaps I should have looked into attending; that's an interesting mix of people.
The Yankees got closer to the next round by going up 2-1 today. Meanwhile, the Marlins advanced to the NL championship series, dispatching the Giants - something I didn't really expect to see. That leaves the Cubs/Braves series. As I write this, the Braves are up 4-1 - so maybe they'll stay alive. While not as frsutrating as the Red Sox saga, the Braves have been a spectacle this last decade as well - 9 straight division wins, and only one World Series victory to show for it. To get a feel for what the Red Sox fans go through, read this in the Times, and this in the Boston Globe. 85 years of waiting - there are only a few people even alive who have living memory of the last Red Sox World Series victory.
The worst part is, it just dawned on me that I'll be in Japan through the whole series - and the games will start at 9 AM Tokyo time. So much for watching any of the games live this year....
Dave Johnson seemed to have some wild idea that resources are infinite:
As Chiara has pointed out, JavaLobby is obligated to provide free weblogs, free bandwidth, free file storage, free system adminstration services, and free support to anybody and everbody who wants a weblog - all without charging a dime to anybody, placing any advertisements, or restricting anybody elses right to place advertisements.
Until I noticed - after prodding in a comment - that he was kidding:
As I have said before: if, at this point, you do not know that I am kidding, then you are an idiot.
Heh. Yet more proof that I can step right into it via blogging as well as in person :)