Dave and I continue to add features to BottomFeeder. We added support for changing the Http timeouts - a feature request. Also, the DEV builds on the site now have the version tags from Store in the Help About dialog, which should make it easier for us to identify issues. I finally got the error handling fixed up - UHE's should result in a notifier that gives you an option to quit or continue, and to send email to us.
Awhile ago, I started putting development builds for BottomFeeder up. If you are interested in seeing our work in progress (see my previous post), then grab either the Windows Build or the image for any platform. The image may or may not work on the Mac platform; I typically omit the window icon in the Mac build, since it was causing prim failures on startup.
I spent a long time last night and this morning hacking around issues in the TreeView and the DataSetView. Dave Murphy has been playing with the idea of adding a dataset (instead of the list) for the item view in BottomFeeder. We were never really happy with the grid spacing, so we have stayed with the list. We started looking at it again last night, and this morning I made it a settable option - you can keep the list view, or go to the dataset. The nice thing about the dataset is that it allows sorting - although that means that we need to provide more item entities. That wasn't the biggest problem though. Once I had the dataset in, I noticed that keyboard navigation didn't work - unless you had the shift key down, and then only with the arrows. That wasn't good; I added a few reasonable key bindings. That seemed to work - except that using the keyboard did not update the HTML widget (i.e., the description for the item) or toggle the has been read state. Arghh. Dove into the code, ended up having to wrap the vertical navigation method in DataSetView, and toggle the changed event - which for reasons I could not fathom, wasn't happening. I decided not to hack the moveEditVerticallyBy: method directly - go have a look and you'll see why. Thought I was done, and was pretty happy with all this. Then I noticed something about my notification code. I had added the ability to mark a feed as interesting, which means that new items will cause the feed in question to be selected. Well, the feed was getting selected. But again, the view was not updating the item list accordingly. Sigh - back to the code. It wasn't enough to send selection: to the feedTree - I had to grab the widget and shake it. I guess there are two ways to look at this. You could say that VW has some very limited widgets and be disturbed (although Pollock will address that). Or, you could say that - unlike similar frameworks in Java or C# - when you stumble on a problem, you can code your way out of it. If you have a limited native widget on Windows, or a limited Swing widget, you are pretty much stuffed.
I have been invited to speak at this XP show in Sao Paolo, Brazil on December 6th. This is a neat thing - Kent Beck is there as well, and a bunch of other XP folks. This should help get the word out on Smalltalk and XP - and that's something that needs to get out!. This will be my first trip to South America as well. Ironically, it will be to a place where my Spanish language skills (rusty, but there) will do me very little good...
In case you had no idea, Charles Monteiro explains what it is, and why is has enormous advantages: I have been playing with the StarBrowser and I think that it puts the VW IDE to the next level thru its notion of classifications. For example, I have effectively integrate Sunit into the StarBrowser by simply creating an ItemSunitEditor. I then extended the Sunit browser to have the notion of its target Sunit Abstract class as opposed to hardcoding it to be "TestCase". This then allowed me to specifiy a classification in the StarBrowser for an abstract test case class I created which effectively provides that every time that I click on said classification an sunit browser is displayed in the main canvas with only the Sunits located under my target sunit abstract class. I can add multiple classifications for different sunit abstract classes thereby putting a click's reach different sets of sunits. I have also created a classification that allows me to specify "All probed methods". The beauty of all of this is that all these things are arbitrarily grouped by the developer in a manner that specifically suits what he/she is doing and is "exportable". At the conference the StarBrowser developer showed a classification that basically integrated the Advance2Uml editor and made it an "editor" choice for browsing a class i.e. one can toggle between seeing a particular class in the RB browser or in the AdvanceUml editor (nice diagrams). This is an edge that Eclipse does not even come close to providing and I think that it is something that could eventually be milked from a marketing perspective.
A few community members have started a project enabling the versioning of Gemstone code ein Store. Here's a posting on the project: Since this is a StORE project, I thought it might be appropriate to manage the code on the Cincom public StORE repository. I find that it is exceptionally easy to use. OTOH, SF offers some really nice tools for project management, so I hope we can all take advantage of those, too. I hope to have the first posting on the mailing list by the end of the week. Any comments or suggestions are welcome!! Kudos to Joe Bacanskas and Paul Baumann, the people who made this happen!
This slashdot entry has an interesting review of a new, questioning book on XP - Questioning Extreme Programming. The review seems favorable, but does raise questions. This is bound to a controversial and widely read title -- it is a critical but fair re-examination of all of XP's assumptions and core practices. It provides a much needed comparison of XP with other, less popular, methodologies. Overall, XP emerges favourably, with one serious caveat -- the author concludes that XP is only suitable for a very narrow range of projects, and those that can fulfill all requirements probably stand a significant chance of succeeding using any of the similar methodologies. As with programming languages, there is no silver bullet -- put XP in your methodology toolbox, know when it is appropriate and only use it then.
On Slashdot, with details here. Somehow, someone managed to get trojan code into the source streams for libpcap and tcpdump - tools used for packet sniffing, which is useful when you think you have a network problem. Apparently, some of the source and compiled mirrors for the code have pushed the trojan around. I expect this sort of thing to happen more and more - the sheer proliferation of open source means that some things are going to slip by the eyeballs.
Comes this report on serious issues with versions of BIND. In a security alert, IIS said the most serious security flaws were found in BIND 4.9.5 to 4.9.10 and BIND 8.1, 8.2 to 8.2.6, 8.3.0 to 8.3.3 and affected nearly all currently deployed recursive DNS servers on the Internet. "Upgrading to BIND version 9.2.1 is strongly recommended", IIS said. Yeesh. So I read a bit further down, and bingo - there's a buffer overflow problem. Does no one ever learn from these things?
Yet another reason for upgrading to VW 7 - I can no longer imagine trying to develop without breakpoints - especially for web applications!
Dave and I pushed out BottomFeeder 2.3 today. This release is mostly stabilization; there were a few bugs that slipped through on 2.3. We need to thank Holger Kleinsorgen, author of TwoFlower as well - not only are we bundling a better version of TwoFlower, but Holger added some nice UI cleanups to this release as well.
In addition to the common use for headline reporting (by aggregators like newsisfree and syndic8) - and the very common use as a way of pushing out updates by bloggers, there are some business case uses as well. I've found the RSS feed I added to the Cincom Open Repository is very, very useful - instead of firing up an image, connecting, and hunting through the published items, I get immediate answers - did something I care about get published? This is cool. So this has generated some additional thinking - what about an RSS feed for our internal bug tracking system? And then what additional tools on a feed reader (like BottomFeeder) would make it more useful? I've already started thinking about having the tool do some kind of pop up notification for feeds of particular interest. Anyone else have ideas?
This one mentioned on Lambda the Ultimate. The survey itself is here. It's concise, but worth looking at. The Smalltalk summary is as follows: Smalltalk is an untyped, class based language. To better model the difference between performing actions on types of objects, and on a distinct object, Smalltalk classifies attributes and methods as belonging to either the class or to instances. Class methods are located in the class meta-object and can only refer to class attributes (also located in the meta-object to provide shared state for all instances). Instance methods are kept locally to each object and can refer to both the class variables and the instance variables (which provide local state). All methods are public, while all attributes are private. Single inheritance is provided, along with (partially) abstract classes, and method overriding (including signature modification). Although Smalltalk is untyped, the main purpose of inheritance is not just code sharing. The underlying principle is similar to sub-typing in that programmers should use inheritance to provide specialization of objects, and can subsequently feel secure that it will be safe to use an instance of a subclass as if it were an instance of the superclass - without having to worry about run time errors. Calling Smalltalk dynamically, but strongly typed would have been more accurate, IMHO.
This has got to be the most amusing switcher ad parody I've seen yet. Well worth watching.
Here's an interesting article on when to look ahead and when to wait and see - and also on the differences between bugs in an internal system vs. bugs in a system you market. The number of users trying the free online version of FogBUGZ surged to unheard of levels, and the server didn't handle it very well, necessitating a last-minute rearchitecting of the way the trial server creates private databases. Hopefully that is fully in place now and the trial server should be rock solid. In a perfect world, should we have load-tested the trial server before going live? It seems like "best practices", right? Maybe not. Let's assume load testing costs 4 engineer days which seems about right to me. Fixing the server to handle the code actually did cost 4 engineer days. Go read the whole thing - it's interesting stuff.
See John McIntosh's OOPSLA Diary for Wednesday - scroll down a little more than halfway. John had a hard time keeping up with me, I think - I have a tendency to speak too quickly. In any case, it's a nice writeup, and I thank John for doing it. And for all of you out there who might need a Smalltalk consultant - See John's main page - John is as expert as they come.
I do dev builds for BottomFeeder on a regular basis - it's a useful way of seeing if my dev changes work as I expect them to at runtime. In the area of more eyeballs are better, I am posting the dev builds on the application home page. If you use the dev build, you should be aware that it's a work in progress build, and expect that some things may not work as well as you would like.
And I got my first good night's sleep of the week. Maybe I just am no longer used to travel; I simply couldn't get a good night's sleep in Seattle. However, the show was a lot of fun, and it was very enjoyable seeing old friends and Smalltalkers. If you want a day by day report on goings on at OOPSLA 2002, see John McIntosh's OOPSLA diary. Good stuff, and - as always - well worth reading.