I spent most of the evening over-thinking keyboard navigation for BottomFeeder. Finally, I ripped out most of the awful code I had been writing, and it started working correctly.
When in doubt, don't fight against the code framework....
I spent most of the evening over-thinking keyboard navigation for BottomFeeder. Finally, I ripped out most of the awful code I had been writing, and it started working correctly.
When in doubt, don't fight against the code framework....
One claim made on PrevaylerIsNotADatabase is that unlike RDBMS's and OODBMS's, Prevayler does not have to worry about RAM limitations. Excuse me? Huh? OODMBS's tend to suffer when your indexes can't fit in main memory any more. Prevayler will go completely to the dogs the moment any of your object model is swapped out. Surely Prevayler has to worry more about RAM than anyone else? I posted a politely-worded query to this effect on the page, and received the following reply from the project lead:
No. Prevayler assumes the Prevalent Hypothesis. Databases do not.
To save you following the link, the Prevalent Hypothesis is (direct quote) "That there is enough RAM to hold all business objects in your system." That's right. Users of Prevayler don't have to worry about there being enough RAM because... we assume there will always be enough RAM!
Whoa. i don't know about you, but that's a pretty ignorant hypothesis IMHO. If anything, objects and data tend to expand to fill all available space and then some. Even when it's true, it doesn't necessarily make for a well behaved system - one client system I'm familiar with cached all the Gemstone objects in the Smalltalk image before releasing the product, allegedly for performance - most of us assumed it was to avoid having to buy client licenses. The application was huge, and end users had problems running other applications on their systems. Ultimately, making assumptions like all the data will fit in RAM are dangerous - like other assumptions, they should be tested, not simply asserted...
It seems that every time I turn around there's a new aggregator being announced - SharpReader just came out, for instance. A lot of these are using .NET - which is a 20 MB runtime.
BottomFeeder, on the other hand, is a cross platform aggregator. The baseline download (compressed) is a tad over 5 MB, and updates to it are in the 200k to 900k range. I could ship smaller updates - patches - but it seems simpler just to replace the baseline application parcel, and is certainly easier to manage.
Kind of an odd place, having the Smalltalk solution be the smaller, lighter weight implementation - it's not at all what the conventional wisdom on ST is.
We go once a week or so with friends, I almost always have the B and B Burrito, followed by the (mmmmmmmmmmm) Iron skillet pie. Then I feel like I inhaled a blimp the rest of the evening. Oh well
Looks like we'll be playing a new Settlers variant tonight - Mike wants to try out the stone age variant. Should be interesting - Settlers of Catan is one of our favorite board games, although we did overdose on it some the last few years.
I spotted an explanation of the pitfalls of XHTML over on Don Box's Blog. He actually went to XHTML, and backed off. In the technical blog-verse, there's been an awful lot of hullabaloo about XHTML, but this document convinces me that not yet is the correct answer:
There are few advantages to using XHTML if you are sending the content as text/html, and many disadvantages.
In addition, currently, the majority (over 90% by most counts) of the UA market is unable to correctly render real XHTML content sent as text/xml. For example, point your browser at:
Only Mozilla, Mozilla-based browsers such as Netscape 6 and 7, and very recent versions of Opera such as Opera 6 are able to correctly render that site. (IE6 shows a DOM tree!)
Authors who are not willing to use one of the XML MIME types should stick to writing valid HTML 4.01 for the time being. Once user agents that support XML and XHTML sent as one of the XML MIME types are widespread, then authors may reconsider learning and using XHTML.
That's right - like it or not, IE has over 90% market share, so using XHTML at this point is telling over 90% of your potential viewers to kiss off. No thanks. Far, far simpler to just slap HTML out there, and wait for the tools to evolve.
"Tremors the Series"????
This is what we get instead? Bleah. The first movie was funny, the second was too much of a weak concept. The series is just a waste of airtime. How far the mighty have fallen....
It looks like spring has finally found its way to Maryland. The sun is shining, the bulbs are up, and the temperature has finally escaped the 40's and 50's. And just in time as well - one of the neighbors is having their annual Easter Egg hunt this morning. It's a huge thing - separate hunts for toddlers and older kids. A huge spread of bagels, donuts, and coffee. Just a neighborhood event, but very nifty - something everyone looks forward to.
The people who throw it remind me of a personality type discussed in "The Tipping Point". Most of us have a circle of friends and business associates. Then there are the people who seem to know everyone, and be involved in everything - school activities, boy scouts/girl scouts, neighborhood activities, the works. If you start talking to them about something, they will likely have a recommendation for the person you should be talking to about it. In short, they are some of the glue that make a neighborhood a community.
So I'll be off to this year's bash soon, with my daughter. The local cache of chocolate will certainly be renewed.
Now I know why our street got plowed early last winter, and seems to always get plowed early. It seems that someone who was very high up in the last governor's staff lives on my street. Since the local (county) government is of the same party as the last governor, he still has some pull. I spent awhile last winter puzzling over this, since there didn't seem to be a good reason for our (non-through) street to get plowed early.
Same thing happened while I was growing up - we had a county legislator who lived on our dead end street, and we always got plowed early. It's obviously an independent of party sort of thing - it was one party in my old home town, and the other one here. Some things never change, I guess. On the plus side, it means that we can always get out to the local supermarket.
So we tried out Settlers of the Stone Age last Friday night. I got my butt handed to me, in pieces. It played well - I'd be more than happy to try it again, now that I have a better idea of what the winning strategies for that variant are. It would likely play differently as a 4 player game as well - we only had three on Friday. One thing's for sure - the starting position would be a lot more crowded.
Then check this site, which covers the bases.
Here's an interesting story on open source and the likely impact on industry. From the Economist:
The main loser (so far) as Linux advances is Sun Microsystems, one of the largest server vendors. Its Solaris software is generally deemed to be the most capable flavour of Unix, the family of powerful operating systems used in servers. But for many applications, Solaris is overkill, and Linux, a less capable flavour of Unix, is good enough. Many people who would once have bought expensive Sun boxes running Solaris are now running Linux on cheap, PC-like machines instead.
This has forced Sun to embrace the technology that threatens its existence. Last year, Sun launched its first Linux-based server. After several zigzags, it has now decided on its Linux strategy. As well as offering cheap boxes running Linux alongside its more powerful Solaris-based ones, Sun will include its server software with both Linux and Solaris, to make its Linux boxes more attractive and to allow users to "trade up" to Solaris. Even so, many in the industry believe that, thanks to Linux, Sun is doomed.
The clearest winner is IBM, closely followed by Hewlett-Packard (HP) and Dell, each of which has done well selling Linux servers. IBM embraced Linux in 1999, and now offers it across its entire range, from lowly PCs to mighty mainframes. Linux has also boosted IBM's mainframe business, since a single mainframe can be set up to behave like dozens of small Linux servers. Firms with mainframes have thus been able to scrap entire rooms full of Unix servers, such as those made by Sun.
This is pretty much what I've been thinking for awhile now - Linux is a nice alternative to expensive Sun hardware, and is "good enough" for many situations. This is going to be the next big shock that runs through the IT industry, in my opinion - when Sun starts to crumble, the shockwaves will affect the server space (Solaris) and the developer space (Java). All the folks who are operating under the delusion that Java is "open" could be in for a few surprises...
People who read many weblogs can use an RSS newsreader that will collect the news from the RSS files of weblogs to one "place" on their desktop. The interface of RSS aggregators look quite similar to Email programs.
Web sites are pull mode. People come to them to read.
Email is push mode. Information is sent to people.
RSS newsreaders bridge the gap between the web and Email. They enables web content to be pushed to the desktop of its subscribers.
Unlike Email, people who use RSS newsreaders choose what RSS feeds to subscribe to. But once they have chosen to read a feed, or to be aware of new items in a feed, they have to make the choice of reading the item or to ignore it. They cannot ignore the fact that a new item has been published, unless they unsubscribe from the feed completely.
Do we need more Email?
I don't think this is a good analogy. with email, I have no idea what will come at me. I've got a public interface into which anyone can throw things. Good stuff, bad stuff, anything. With RSS, I'm filtering based on what I know I'm interested in. I find that it takes me less time to follow the sites I care about with BottomFeeder than it used to with just a browser. However, I don't think this is the poster's real problem:
I have created an RSS feed for a weblog that deals with publishing weblogs in Hebrew. There are some issues regarding the mix of character sets and the bi-directionality of Hebrew that should be taken care of. Finding an RSS reader that can display RSS feeds in Hebrew is a hard task. I haven't found one yet.
There's his problem, I think - at present, most readers - certainly BottomFeeder - don't handle all encodings equally. This is a limitation I mean to address, but unfortunately, I'm not personally that knowledgeable about the issues. However, this next part I disagree with, a lot:
While developing the feed and testing different readers I thought about the whole idea and I think I have reached a personal conclusion. I think I don't want to use an RSS reader. I want to choose when to go a website to find if there is new content. I want to make my own decisions on when to go to a web site.
The fact that a technology is possible doesn't mean it's a good idea to use it. I don't want do be more distracted than I already am.
A reader is a tool - nothing more, nothing less. When I don't want to be distracted by news feeds, I either ignore it, or mark everything read. It's not as if the reader forces me to visit a site - it merely tells me that content i have previously expressed an interest in has been updated. IMHO, this is a good thing - certainly better than wondering if there's good stuff I might have missed, and having to plow through a bunch of favorite links to figure it out...
There was another silly typo (my fault) in the download area for NC - two of us went over the information, and we worked off of different iterations of the file - so we ended up having links to non-existant files in the ObjectStudio downloads. so if you tried downloading OS NC or EVOL in the last week, go back and get them now; it's been updated. I posted the text below to comp.lang.smalltalk to explain the problem:
(re, where are the download files for OS?)
No it's there, but we got snagged by a typo. A week ago, I went through the file that drives the downloads and fixed up filenames that had changed from the last release to this one. Then, one of our tech writers cleaned up the text, but he worked off an old version of the file, and I didn't recheck.
It's fixed - the ftp and http refs will now go to the right filenames. My apologies
First off, I had to take my daughter to the dentist - but no, the car wouldn't start. One jump later, I was off. The battery was shot, so it was off to Sears for a new Die Hard. back home, take my daughter to dance class. Then back home, and my wife has had a conniption because we have ants in the house. It gets worse, because I couldn't hop right up - I was on a conference call. It's definitely been one of those days...
Over on the C2 Wiki. Here's a little bit of the conversation:
Static typing adds to the complexity of the programming language. When you define a new language, do you want to focus your effort on the type system or on giving the programmer the functionality he needs? (Sometimes a static type system makes a langugae harder to extend, as Java and generic classes.)
It can help with refactoring:
- As someone who has only become enlightened recently (and still immersed in a statically-typed world), I cannot be too entirely specific. I have noticed that I waste a lot of time when refactoring fiddling with the types of things. I'm a greenhorn at this, and would be overjoyed to see this comment replaced with some more solid answers.
This is more about the lack of static typing, not the addition of dynamic typing. A lack of static typing can help you to refactor incorrectly! Suppose your refactored design requires something as simple as an extra method in one interface. Without static typing, you would modify each instance of client code so that it called the new method. You would then need to modify each object that might be used by that client. Which objects are they? Oh dear... With static typing, add the new method to the interface. All implementors will not compile until you've provided them with an implementation of the new method. It's that easy!
But UnitTests, if used, will also catch the (generally small number of) problems that static compilation will catch, in addition to catching logic and other errors. My experience with a DynamicTyping language (Smalltalk) is that a very small percentage of run-time errors are due to mismatched types... maybe 1 or 2%.
There's lots more to read - go read the whole thing. Comments, assertions, and reasoned arguments from advocates of both sides.
We spent quite awhile sealing cracks that the ants might be coming through. That pretty much blew the morning, along with a conference call that I could only partially pay attention to (due to the ant stuff). Maybe this afternoon, but I'm not feeling terribly ambitious at the moment....
I'm with Bill Kearney on this one - I don't want full web page content in my RSS feeds. This is why I don't really care much for this trend to XHTML either. I don't want graphics, or lots of pictures (etc.) in an RSS feed. If I'm reading your feed, it's because I like your writing. Give me a link to a picture you think is interesting, and I'll follow it.
Bottom line - I read feeds for the same reason I read books - to learn something, to be entertained - to be part of a conversation. My web browser is right here if I want the full experience of your website - don't force it on me in your RSS feed - that's not why I read it....
Alan Knight posted this in comp.lang.smalltalk:
A comment from another poster:I find writing EJBs to be extraordinarily tedious (as with Java in general), but haven't noticed any serious impediments to development.
Well, some might consider being extraordinarily tedious (and thus slow) to be an impediment to development :-)
As Niall pointed out, there are slides on the web where I covered some of these things in moderate detail. For the high-level view:
- I don't think the domain objects as components view of entity beans is a particularly good thing to try and accomplish. You throw away basic OO concepts like inheritance and polymorphism and don't get much in return.
- You lose testability. You can't test an EJB outside of deploying to its container. This is why, if you look at EJB usage patterns from people concerned about agility, they typically recommend against them. e.g. Martin Fowler's typical pattern is paraphrasable as: Don't use entity beans. You can use session beans, but they should act purely as a facade to an ordinary object with exactly the same API
- I don't buy into the model that the world is divided up into authors, assemblers, deployers, and whatever the fourth one is, especially at the fine-grained level that entity beans imply. You end up doing much more work to deploy a simple object (thus the tedium). You get to write multiple XML descriptors, totally more bytes than your actual object, just to make it work.
- The programming model is both limiting and bizarre. So, e.g. the prohibition on "loopback" forbids any sophisticated object programming techniques like recursion, double-dispatch, or even complex graphs of objects. The "enforcement" of relationships, where setting a value in one place can result in nilling it out in another is a wonderful example of the principle of most astonishment.
- The persistence model is very constraining, and not very powerful. I'll admit I'm fussy about persistence models, but IMHO this one is particularly bad. Compare what you can do with an object database, one of the JDO-relational mappings, or a tool like TOPLink, with what EJB constrains you to. EJB 1.X at least had huge holes in the spec where you could do something useful. EJB 2.0 plugged the holes, but not with anything useful.
- Performance is bad. You're adding multiple layers of code-generated stuff and remote calls onto every operation. We had people measuring performance hundreds of times worse between regular Java objects and EJBs doing the same thing.
I could expand on these, although I might have to start consulting notes if things get very technically detailed. It's been a while.
Heh. The principle of most astonishment. I'll have to remember that one...
Between the endless conference calls, the ant issue, and some sporadic work on BottomFeeder, I've not had a lot of time to post this morning. The head cold I acquired from my daughter hasn't helped a lot either. I have gotten the new BottomFeeder UI started though - there will be a pane of buttons on the left hand side, which will allow one to filtere the views. I'm working on a just show me all new items view now, as a matter of fact...
If you are trying out the 2.9 dev stream, then you should make sure to grab the latest update. You don't need to download the entire build (and I have not yet updated the gzip files anyway). If you have the upgrades pointed to the dev directory, BottomFeeder will detect an update. Grab it and restart - you'll see a new UI layout. There's now a navigation bar on the left, which allows for various filtered views:
One thing to bear in mind - this is new, and has not been tested that thouroughly yet. The save file format has not changed, so you should be able to back this out - simply save the app/BottomFeeder.pcl file, and restore it if you have any problems.
Go visit Day by Day. Today's is funny - the older geeks in the audience should navigate back to the November 24, 2002 strip....
Let's see if I can survive a family dinner with my father in law. His politics and mine are on opposite ends of the spectrum - I've long since given up starting a political discussion with him.... but he sometimes insists on starting one himself.
Well, I've got the new views in BottomFeeder - but now, various small things are out of whack. For instance, the keyboard shortcuts navigate the tree and the item pane - which is not what you want when viewing all new items in aggregate. I did add a nice touch this afternoon - when viewing a feed, you get an count of the new items now - this is useful when using the aggregate view.
Perhaps after this evening's dinner party, I'll have a chance to look at the keyboard shortcuts.
I pass this headline on without comment:
Bob Lewis of Infoworld writes:
What was the primary practical difference between the world's failed communist economies and its successful capitalist ones? The communist bloc nations managed their economies centrally, whereas capitalist nations decentralized theirs. Most IT organizations look more like communism than capitalism. See for yourself:
- IT has a fixed budget, which its leaders allocate. Sometimes they form a steering committee (politburo) to share the responsibility. It's central planning.
- If the central planners don't understand the value of a request, the request has no value and is rejected. IT's government decides what has value, not consumers.
- IT is the sole supplier. Demand is satisfied through central production or not at all. IT's government owns the means of production.
Even our desire for industry standards has a communist overtone. Our need for compatibility vastly outweighs any desire to choose from a variety of suppliers. In IT, real choice in the marketplace is a bad thing.
That sure looks a lot like communism to me.
Clarence Westberg finds C# to be a drag compared to Smalltalk:
C# and Smalltalk
Back in C# development again, what a drag compared to smalltalk. Productivity dropping at an astounding rate.
Have been using C# Reafactory a lot. I would recommend it to any C# developer.
Have been declaring a lot of things as type object to get around the typing BS of C. In the end you always end up having to cast everything anyway!
more anecdotal evidence that C# is Java in Microsoft clothing...
Heh. I saw this on Dewayne Mikkleson's blog:
If you save your plugin into a "plugins" subdirectory, SharpReader will find the plugin and make it available in the listview popup menu (shortcut ^B).
Seems I never updated the dev links after 2.8 was released. I had that pointed out to me in the Smalltalk IRC channel, and fixed up the links. The .tar.gz files there are not completely up to date - download the files in this directory to get the latest parcels. Just replace whatever is in the 'app' directory now.
A fair bit of Booch slamming takes place in the XP mailing list as well - although I give Grady a lot of credit for taking part in that list, and giving as good as he gets. Ted has a large rant here:
Chief Scientist, Rational Corporation. I'm not exactly sure what a "Chief Scientist" is or does, but it apparently doesn't have much to do with developing software: Rational Rose for years was one of (if not the most) unstable development environments I've ever had the distinct displeasure of having to use. It crashed on a regular basis, frequently losing work in the process (once during a save, no less), and for a while there it was pretty common to see Rose generate code that wouldn't compile. This is not what you call a quality product. (It's fair to ask why Rose is arguably the Number One UML IDE in the world right now; in response, I ask you to name at least three other UML tools that have been around for five or so years. TogetherSoft didn't have a product out until well after Rose had pretty much established itself as the only game in town, and ArgoUML and MagicDraw came much, much later. It's pretty easy to win a race when you're the only contestant--and lo, and behold, the software came from the same company more or less doing all the work on UML itself. Think there was some "leakage" of specs under development there?)
It goes on from there; read the whole thing
Smalltalk Solutions 2003 Announces Show Committee and Keynote Speakers
CARY, North Carolina April 18, 2003 - The Smalltalk Industry Council (STIC) is proud to announce the conference committee for Smalltalk Solutions 2003. Smalltalk Solutions is the premier forum for Smalltalk users, developers, and enthusiasts. This year's conference will be held on July 14-16 in Toronto, Canada.
Please direct your questions and comments about this year's show to the appropriate conference chairperson:
|Conference Chairperson||Allen Davis, Knowledge Systems Corp.|
|Sponsorship/Exhibitor Chairperson||Joy Murray, Cincom Systems, Inc. firstname.lastname@example.org|
|Technical Chairperson||Alan Knight, Cincom Systems, Inc. email@example.com|
|Financial Chairperson||Monty Williams, GemStone firstname.lastname@example.org|
|Conference Coordinator||Jason Jones, whysmalltalk.com email@example.com|
|Marketing Chairperson||Andrew Ignatow, Cincom Systems, Inc. firstname.lastname@example.org|
The Smalltalk Solutions 2003 Conference Board is also pleased to announce this year's keynote speakers:
Scott Ambler - Are You Agile or Are You Fragile?
Abstract: The software process landscape is changing. A shift from large-scale, prescriptive processes that define rigorous procedures and policies to lighter, more agile methodologies is clearly underway within the IT industry. This is more than an idle fad that promises to disappear next year ? agile processes are here to stay. Are these processes appropriate for your organization? If so, which ones should you consider adopting? What challenges can you expect to experience as you adopt these new processes and how can you overcome them? Bio: Scott Ambler is a Senior Consultant with Ronin International, Inc. since its inception in 1999. He actively works with Ronin clients on large-scale, software development projects and on software process improvement (SPI) efforts around the world.
Scott is a Senior Contributing Editor with Software Development magazine and a member of the Flashline Software Development Productivity Council. He can be reached via e-mail at email@example.com.
David A. Smith - Croquet - A Collaboration Architecture
Abstract: Croquet is a computer software architecture built from the ground up with a focus on deep collaboration between teams of users. It is a totally open, totally free, highly portable extension to the Squeak programming system, a modern variant of Smalltalk. Croquet is a complete development and delivery platform for doing real collaborative work. There is no distinction between the user environment and the development environment. Croquet is a joint project being developed by David A. Smith, Alan Kay, David P. Reed, and Andreas Raab. More information is available at: http://www.opencroquet.org. Bio: David A. Smith has been focused on interactive 3D and using 3D as a basis for new user environments and entertainment for almost 20 years. He created "The Colony", the very first 3D interactive game and precursor to today's "first-person shooters" like Quake ... except Colony ran on a Macintosh in 1987. The Colony won the "Best Adventure Game of the Year" award from Macworld Magazine.
In 1989, David used the technologies developed for the game to create a virtual set and virtual camera system that was used by Jim Cameron for the movie "The Abyss". Based upon this experience, David founded Virtus Corporation in 1990 and developed Virtus Walkthrough, the first real-time 3D design application for personal computers.
In 2000, David joined forces with Alan Kay, David Reed, and Andreas Raab to develop a totally new kind of software. Croquet is intended to completely change the way you use a computer, transforming it from a closed box with very low bandwidth communication channels to a high-bandwidth collaboration and multi-user, idea processing engine.
About the Smalltalk Industry Council
The Smalltalk Industry Council (STIC) is a nonprofit trade association whose goal is to promote awareness of and increase demand for Smalltalk. STIC was reorganized in 2003 by Cincom, GemStone, IBM, and Knowledge Systems Corporation, creating a cohesive Smalltalk community where information, technical issues, new ideas, and concerns are openly discussed to benefit businesses as well as the software industry. STIC's membership consists of users, service providers, and vendors of Smalltalk tools, components, databases, and services. For more information on STIC, please visit www.stic.org.
2003 Smalltalk Industry Council All Rights Reserved