examples

Smalltalk and large images

May 9, 2003 18:21:25.242

Periodically, I get asked about using VisualWorks in large memory situations. In the sense I'm discussing it, this means more than a gigabyte. If you need to set up a VW image that is going to use more than that amount of RAM in a runtime situation, you are going to have to get into the guts of the MemoryPolicy system. The first thing you'll want to do is read the documentation - it's pretty well covered there. After that, you'll need to have a look at a few places. The place to start is class MemoryPolicy. It turns out the ObjectMemory is managed, in large part, by settings in the current memory policy. As the class comment puts it:

This class contains a class variable called CurrentMemoryPolicy which contains a reference to the currently active memory-policy object. Control is passed to the CurrentMemoryPolicy during the idle loop and during the low-space condition for the appropriate response. This class also relies on the CurrentMemoryPolicy to specify a hard and soft low-space limit. The HardLowSpaceLimit is meant to represent an emergency low-space condition, and the SoftLowSpaceLimit is a secondary threshold that the CurrentMemoryPolicy can use to gain control in advance of the hard limit. This class arranges for control to be passed to the CurrentMemoryPolicy whenever either of these two limits is exceeded. See the comments in the class MemoryPolicy for further details regarding the role that a memory policy is expected to play.

This is why you have to modify MemoryPolicy if you have an application that will use "large" amounts of RAM - the basic policies aren't going to work. For our purposes, here's the core method that will interest you in MemoryPolicy: #favorGrowthOverReclamation. This method is invoked whenever the system needs more space for new objects - it has to decide, based on the current policy, whether to ask the OS for more RAM, or whether to do a GC and hope some space clears up. Here's the basic implementation:

favorGrowthOverReclamation
	"Answer true if we want to react (at this point in time) to the low-space condition by growing memory rather than reclaiming memory."

	^growthRegimeMeasurementBlock value <= growthRegimeUpperBound

growthRegimeUpperBound is set to 32MB by default - likely not what you want! It's better than the pre-7.1 setting of 16MB, but not suitable for the situation we are discussing. The block being referenced looks like this:

[ObjectMemory dynamicallyAllocatedFootprint]

or

[ObjectMemory growthDuringCurrentSession]

What that's going to do is cap the maximum growth of memory for the Smalltalk application. You'll likely want to adjust that block based on your application and deployment situation. Another place you'll want to look is the amount of RAM that system allocates when it does allocate - which is controlled by the preferredGrowthIncrement variable. By default, this is set to 1 MB - you'll likely want it bigger. How do you do this? Here are the steps:

  • Define a new subclass of MemoryPolicy. Make sure to implement the #setDefaults method, invoke the superclass version, and set the values of the appropriate variables.
  • Install the policy like this: ObjectMemory installMemoryPolicy: MyMemoryPolicy new setDefaults

I've published an example implementation in the public store. The #favorGrowthOverReclamation method there looks like this:

favorGrowthOverReclamation
     ^self memoryStatus availableFreeBytes <= self
growIfFreeBytesLessThan

Where growIfFreeBytesLessThan is a new variable setting. It's the floor for how much available RAM the image ought to have. Be Careful!! with this strategy - this method puts no ceiling on image growth. If the OS allows you to limit that, or there are other application specific factors that make this "not a problem", go ahead - but you'll likely want to think long and hard about this one.

In any case, this ought to get you started. To take a look at the example Memory Policy, look at package LargeMemoryPolicy in the public store. It installs itself as the new memory policy on load, as follows:

ObjectMemory installMemoryPolicy: LargeMemoryPolicy new setDefaults

Questions? Send them my way

 Share Tweet This

humor

My Software Development Axiom

May 9, 2003 15:56:02.195

Jim Robertson's Axiom of Software Development:

No good deed goes unpunished, no bad deed goes unrewarded

yes, I'm feeling cynical today :)

 Share Tweet This

development

Dynamic Languages - bloated?

May 9, 2003 15:29:29.911

Tim Bray attempts to denigrate dynamic languages as "big" and "bloated" when one uses them to deploy systems. Hmm. Maybe he can explain this. BottomFeeder is in the same neighborhood as the other tools out there in widespread use. So much for "fat". maybe he can explain why Netscape routinely chews more RAM on my desktop than do my running Smalltalk development environments, much less the deployed applications. Then there's the complaint that Ted comments on:

Secondly, and in the same spirit, there do remain performance issues. There are is some (small) number of people who have to write low-level webserver code, and if you've ever done this under the gun of a million-hits-a-day load, you quickly become a control freak with an insane desire to remove as many as possible of the layers which separate your code from the silicon.

Hmmm. Sure, you can get better math performance from Java or C++ than you can from Smalltalk. On the other hand, Strongtalk is comparable, and Lisp can be as fast or faster. The main reason Smalltalk environments don't optimize for math speed is that it's not very important for most business applications. Why are the C/C++/Java crowd always so obsessed with this? Get it working, get it optimized - in that order. The C language crowd invariably inverts this. Not to mention this - in my experience, the performance issues are invariably not where the developers thought they would be up front. Premature optimization is a poor development practice.

 Share Tweet This

java

I was going to make fun of Sun again....

May 9, 2003 15:15:34.633

But darned if Ted Leung didn't beat me to it:

Sun has a new article describing new language features in JDK 1.5. I love this sidebar quote:

The new language features all have one thing in common: they take some common idiom and provide linguistic support for it. In other words, they shift the responsibility for writing the boilerplate code from the programmer to the compiler.

In other words, we're modifying the language because we didn't have a macro system that we could do this with -- at least for generice, enhanced for, static import, and attributes. Getting rid of boilerplate code is what macros are all about.

Also notice that 3 out of the 6 features in the article are being copied from C#.

While Smalltalk doesn't have the macro system Lisp has, generics are a non-issue in ST, as is boxing/unboxing. Ditto the "simplification" things. One could summarize this whole thing as adding complexity to a language to make up for the glaring flaws.

 Share Tweet This

cst

New stuff in the Public Store

May 9, 2003 13:44:22.906

Torsten Bergmann has two new goodies in the public store:

This small package adds separate window icons to the Launcher and Inspectors in VisualWorks 7.x. This is very helpful for Windows users since in the default VW implementation it is hard to distinguish IDE windows since they all have the same Cincom ST icon. If you are used to use ALT+TAB to switch between VisualWorks windows or other applications this is very helpful

This small package adds support for the native Windows shell folder dialog in VisualWorks. It wraps the SHBrowseForFolder and the SHGetPathFromIDList() API.

 Share Tweet This

development

About Static/Dynamic again

May 9, 2003 13:17:26.801

 Share Tweet This

events

NYC Smalltalk - Ethnography

May 9, 2003 12:46:09.101

The New York City STUG is having an interesting meeting on May 28th:

NYC Smalltalk will hold its next meeting on Wednesday May 28th, 2003.

DateMay 28th, 2003
LocationSuite LLC offices
Address440 9th Avenue, 8th Floor
Time6:30pm to 7:00pm -- Open house
Time7:00to 8:30 pm -- Ethnography and System Design

See below for abstract and bios.

Directions:

Take E or C train to 34th (Penn Station) walk to corner of 34th and 8th. Walk up one block to 9th.

RSVP is requested. Please send mail to charles@ocit.com with subject line of: NYC Smalltalk May 28th, 2003

Our meetings are opened to the general public. Invite a friend ! To join our mailing list simply send mail to nycsmalltalk-subscribe@yahoogroups.com.

Joining our list will give members access to all of the presentations and articles maintained on our site. Any questions send mail to charles@ocit.com

Charles, Chair - NYC Smalltalk

Abtract:

Ethnography is the output of anthropological study; literally it means "writing people" or "writing culture" and it is usually a detailed description of a particular people, organization or type of work. What, you might ask, does this have to do with computer system design?

For the past 30 years, methods from traditional anthropology have been used to study people and their work and apply what is learned to designing computer systems. This presentation describes these methods and their application. We'll tell you how an Anthropologist got started in the Smalltalk lab at Xerox PARC and how an engineer got involved with anthropologists. We'll draw the connections to certain European software communities (e.g., Kristen Nygaard and Participatory Design), tell you about a few of our projects and what we are doing now.

Our contention is that especially in an environment that emphasizes agile, iterative approaches to software, observing technology in use is an important capability that software system architects, designers, and developers can use to insure successful design, development and deployment.

Bios:

William L. Anderson

Focus

Bill is a co-founder of PRAXIS101. His consulting practice focuses on user-centered systems architecture, participatory design, software development practice innovation, and organizational learning.

Background

Prior to founding Praxis101 Bill was a Software Architect for Xerox Corporation, where he developed service discovery software as part of an agent-based, peer-to-peer, document services middleware infrastructure. He pioneered codevelopment and participatory customer collaborations in rapid prototyping and product development in projects that put end-users and engineers together, jointly developing and deploying new products. Prior to Xerox, Bill worked in the telecom, networking, and pharmaceutical industries. Bill holds a Ph.D. in Theoretical Chemistry from Rensselaer Polytechnic Institute. He is currently serving on the National Research Council's National Committee on Data for Science and Technology, and speaks internationally on issues of preservation and access to scientific and technical data.

Susan L. Anderson

Focus

Susan is a co-founder of PRAXIS101and fassforward consulting group. She uses her expertise with cultural nuance, transformation and innovation to help companies break through their tough problems, plan for the future and productively engage employees and customers.

Background

Formerly, Susan was Senior Director for Gartner.Com (covering users, technologies and competitive intelligence) where she helped build the next generation Gartner.Com. Prior to that, at Xerox, she was instrumental in developing collaborative, socio-technical approaches to the design of new technology (from knowledge solutions to remote collaboration tools and systems to document management systems). Susan's work has also emphasized change initiatives in corporations, education, health care and international development. She has been an active contributor to professional conferences and organizations. Susan holds a Ph.D. in Anthropology; she has written on topics from technology's role in health decision making to technology-mediated collaboration.

Looks different from the normal User's Group meeting - if you plan to be in NYC then, check it out!

 Share Tweet This

development

Dynamic typing works

May 9, 2003 12:29:18.364

Via Sam Ruby:

Sean McGrath: Dynamic typing is good for you. Its good for programming. Its good for data. It makes it possible to develop software without a crystal ball and without a 10x hit between "product" and services thanks to the extra levels of loose coupling it introduces into your designs. If you haven't yet tried it - get Python, get XML and do something non-trivial with the combination. Give it a couple of weeks to sink in. I promise you, you won't go back.

Although, I'd say try Smalltalk as well. Give Lisp a shot. Look at Ruby. And after all that, see what you think.

 Share Tweet This

general

Off to a customer site

May 9, 2003 8:58:47.808

I'll be visiting a customer site this morning, so no blogging for a bit. First, a nice hot Mocha. mmmmm....

 Share Tweet This

development

"Experts" and static typing

May 8, 2003 22:49:25.635

Managability is still fighting the good fight over static typing. Today, he's using a call to authority:

  • Improves robustness through early error detection
  • Increases performance by making required checks at the best times
  • Supplements the weaknesses of unit testing

Hmm. Early error detection? I don't think his expert has done a lot of work in dynamic languages. The kinds of errors that static typing guard against just aren't that common. I can't recall the last time I made one, for instance. Increases performance - early optimization is always a bad strategy. If you are thinking of optimization at first, you made a mistake. Weakness of unit tests? You mean, testing the actual usage of the code is less useful than verifying that we passed an int to a method defined that way? Pardon me while I laugh. a lot.

After showing a demo of how nifty Eclipse is, he goes on to say:

I think given the arguments presented by Eric Allen, and the utility of Eclipse in doing TDD, the issue of Static vs Dynamic typing should be a closed issue.

Sure, just not the way you think. The Eclipse link argues about the lack of power in Ruby and Python development environments (is this true?). Here's a tip - grab a Smalltalk environment, and get back to us.

 Share Tweet This

blog

Google is indexing blogs now

May 8, 2003 16:34:40.291

Via StronglyTyped, I see that Google now has a web log specific search page. It's not nearly as good an index as Feedster; it misses a lot

 Share Tweet This

development

How much does vendor neutrality matter?

May 8, 2003 8:32:59.406

Within the context of commenting on Sun and Open Source, Ted Neward points out the irrelevance of vendor neutrality in the J2EE world:

FWIW, I agree with the large vendors that JBoss doesn't really deserve the J2EE brand name; I also think having the J2EE brand isn't worth the bytes it would take to put it on the website. By this point in time, with the market having consolidated behind just a few key players in the J2EE space, is it really all that important to be vendor-neutral?

That's about right - with how much money companies spend on J2EE server tools, migration is about as likely as db migration - i.e., not very. Given that, moving to J2EE will yield just as much vendor lock as moving to Smalltalk. It will also mean dramatically less productivity. Sure, you can find more developers with Java on their resume - but see this post for how that will work out....

 Share Tweet This

development

Uncle Bob on the money today

May 8, 2003 8:17:47.852

Bob Martin discusses overstaffing and empire building this morning:

I once consulted for a company that had 50 developers working on a simple GUI. This GUI was a flat panel touch screen upon which several dozen dialog boxes could be made to appear. These 50 developers worked on this project for five years or more. That's 25 man-decades, 2.5 man-centuries! COME ON! Three guys could have done this in three months! My buddies and I used to joke that they had one developer per pixel and that each developer wrote the code for his pixel.

OK, so the manager was empire building. Some managers measure their worth by the number of people they manage rather by how much they can get done with how little. Still, I find this problem is not isolated. It seems to me that a large fraction (perhaps a majority) of all software projects are overstaffed by a huge factor

Another question to raise here - these problems are most rampant at the largest companies - the same ones that follow all the fads - and the same ones that are now furiously outsourcing development in order to save money. I think I see a pattern forming.

 Share Tweet This

general

So much for my linkage theory

May 7, 2003 22:32:34.765

Well, Joss placed a link between Buffy and Angel this week - obviously, as Angel will be on the last two Buffy episodes - but it wasn't what I expected. My question for next season is, what the heck was Gunn offered?

 Share Tweet This

general

Home Network Blues

May 7, 2003 21:06:58.516

I posted a little while ago on our home network blues. I just found the source of the problem - Under Services (This is an XP Home problem), the Server service wouldn't start - when we tried, it gave us some bizarre message about a missing file. I figured that maybe allowing it to get updates from Microsoft would help.

Well, that went oddly. After rebooting, the system wouldn't see the internet. So we had to re-run the blasted wizard, and that fixed that. Then voila, the Server and Computer Browser services started up, and we could actually share printers again. Huzzah.

So my question is, why was this so frelling hard?

 Share Tweet This

development

More on Ted Neward's O/R posts

May 7, 2003 19:53:21.173

Maybe it's the language that Ted works in. I commented on Ted's posts comparing object, relational, hierarchical, and procedural last week here and here. So today I ran across Ockham's Flashlight and this excellent observation:

As Ted points out:

thanks to the fact that everything produced by a SQL query is a table, we can have a single API for extracting however much, or however little, data from any particular query that we need. We don't have the "smaller than an object" problem...

However, the issue here is not a problem with OO, it is a problem with the crippled languages that dominate mainstream application development. C++ and its VM-hosted descendants freeze types as they are loaded. You cannot dynamically change the type of, say, a Java instance at runtime. Nor can one instance of a class be different typewise than other instances. Further evidence of the problem is the host of partial solutions: CLR attributes, AspectJ, XDoclet, the Universal Delegator, SQLJ, and countless code generation tools provide ways to "enhance" classes. And, at least in part, they work around the underlying weakness of the languages they are built for.

A different approach would be to choose a more powerful language. Ruby and Smalltalk don't have any problem letting you create right-sized objects whenever you need them. Moreover, extensions such as AOP are simple to code in such languages, and work within the language instead of cutting across the grain.

So why don't these languages, or others like them, dominate application development?

I think he has a point. There's still and impedance mismatch from OO to Relational in Smalltalk, but it's easier to work through.

 Share Tweet This

linux

For those who don't thing "the little things" matter

May 7, 2003 19:14:24.469

Scott Johnson reports on his initial experiences with Linux. And while they aremostly positive, he points out a few "little things" that are very important:

The lack of overall keyboard shortcuts is astonishing to me. Example -- in Mozilla ctrl+a doesn't select all text in the current field.

The lack of an equivalent to the Microsoft common dialogs for File Open, File Save, etc really does make a difference. You wouldn't think so but it does.

It's always the small, finishing touch sort of things that new users notice. Something to keep in mind.

 Share Tweet This

development

Simple Language Syntax and Power

May 7, 2003 19:10:14.901

Gordon Weakliem comments on simplicity in language syntax. He makes some interesting points - and coincidentally, this topic has come up on comp.lang.smalltalk recently.

 Share Tweet This

smalltalk

ESUG News: Keynote Speakers

May 7, 2003 12:28:41.955

More news from ESUG - this time on the keynote speakers for the upcoming ESUG conference:

The European Smalltalk User Group (ESUG) is very proud to announce the following keynote speakers for the next ESUG Smalltalk Conference in Bled, Slovenia - August 25-29

  • Lars Bak
  • John Brant
  • Vassily Bykov
  • Dan Ingalls
  • Joseph Pelrine

In addition to the keynote speeches, the program consists of other presentations in the morning and in the beginning of the afternoon. These are followed by Talkussions, discussion sessions/workshops about the talks held that day, or on any other topic of interest. With the Talkussions we want to bring the people giving the talk and the people that crave for more detailed information closer together, and foster ad-hoc workshops where the participants define the content. Hence this year's programme promises to be a healthy mix of talks and workshops.

We are always soliciting talks about your use of Smalltalk. Prospective speakers must clearly explain the format they would like to use (tutorial, experience report, workshop or demo). Each proposal must include a valid e-mail address and an abstract of around 200 words. All proposals have to be sent to Roel Wuyts AND Stephane Ducasse, in plain ASCII pasted in the body of the e-mail - NOT attached. Hot topics include, but are not limited to:

  • web service applications using Smalltalk
  • experience using eXtreme Programming
  • distributed applications
  • new Smalltalk implementations and optimizations
  • Smalltalk Development Tools
  • Language improvements or enhancements

Exhibitors or sponsors should directly contact the ESUG board for more information.

 Share Tweet This

smalltalk

ESUG News: Call For Proposals

May 7, 2003 12:22:30.970

I got this from an ESUG board member:

Call for proposals for hosting the ESUG Smalltalk Event 2004

ESUG is a non-profit organization which was founded in 1991. Its goal is promoting object technology within the context of the Smalltalk programming language. To achieve this goal, ESUG undertakes many activities, such as:

  • organizing conferences and workshops that allow users and vendors and also industry people and academics to meet
  • providing free teaching materials and books to students and universities
  • supporting local Smalltalk users groups and helping establish new ones

ESUG is looking for local organizers for hosting its event for year 2004. This edition of the event should take place the last week of August 2004 (i.e. from Saturday August 21st to Friday August 27th).

We (the ESUG board) would like to take decision on August 2003 during the forthcoming conference that will be held in Slovenia. We would like to meet discuss with potential organizers in Slovenia, so to discuss their proposals. Also, this will be the opportunity for selected organizers to gains over preceding local organizers experience.

Please send your proposal to us by August 20th 2003. Your proposal should include three names and email addresses for the local organization contact people (3 persons at least), and give information about location, hosting, etc.

Important notes:

  • At Essen and Douai we got around 100 participants
  • We plan to have (again) a student volunteer program to help local organizers to take care of the coffee break, material, badges, projectors, etc
  • When you will propose to organize ESUG you should consider that we would like to host CampSmalltalk too. For this purpose we will need one or two amphitheaters, a room with network access.
  • Ideally, we would like to be able to have everybody in a single location

We hope to hear about you soon and that we will have a great place for ESUG 2004.

The ESUG board

 Share Tweet This

events

Rationalization, thy name is Sun

May 7, 2003 11:57:08.471

Spotted for JavaOne

"Better Than Open Source? An Independent Look At the Java Community ProcessSM Services"

lol

 Share Tweet This

itNews

Silicon Valley - still "the" place?

May 7, 2003 8:42:12.201

I've seen a number of articles recently on Silicon Valley, and whether or not it's still the place for software ventures. In that vein, here's a story on Cisco leaving the valley - spotted via Critical Section:

Will the last person/company to leave Silicon Valley turn out the lights?  Now it is 3Com which is moving; continuing the string of companies which have fallen on hard times after buying the rights to name a stadium. (Candlestick Park it will always be...) The key fact: "[3Com CEO Bruce] Claflin has roots in Massachusetts."

I have been wondering for awhile now when the high costs of California would start overcoming the network effects of all the firms/people there. Is this all anecdotal, or is there something afoot here?

 Share Tweet This

development

More on that Paul Graham essay

May 7, 2003 8:35:44.139

 Share Tweet This

itNews

Hmmm. Maybe .NET isn't the be-all for Windows?

May 6, 2003 23:31:18.345

I saw this in InfoWorld, via Manageability:

There is one decision organizations won't have to rush -- the move to .Net. Microsoft reversed its position that companies should rework everything for Windows-managed application framework. The .Net Framework is now just part of the Windows platform. It is installed with Windows Server 2003, but it does not replace the various frameworks (like Win32 and COM+) that were used to create Windows NT and Windows 2000 software.

Nor has Microsoft reserved Windows Server 2003's performance benefits solely for .Net software. Windows is a true platform, with an application layer that's acutely aware of the specific OS. But Microsoft has proved with Windows Server 2003 that it can dramatically rework its underlying OS without disrupting existing application-layer software

Hmmm. So does this mean that the army of VB programmers is pushing back on .NET?

 Share Tweet This

development

Lots of talk about static and dynamic typing

May 6, 2003 18:04:38.687

There's been a lot of posting going on about static and dynamic typing recently - and today brings two more posts. This one from Bruce Eckel, with a similar light bulb pop to this post from Bob Martin:

If it's not tested, it's broken.

That is to say, if a program compiles in a strong, statically typed language, it just means that it has passed some tests. It means that the syntax is guaranteed to be correct (Python checks syntax at compile time, as well. It just doesn't have as many syntax contraints). But there's no guarantee of correctness just because the compiler passes your code. If your code seems to run, that's also no guarantee of correctness.

The only guarantee of correctness, regardless of whether your language is strongly or weakly typed, is whether it passes all the tests that define the correctness of your program. And you have to write some of those tests yourself. These, of course, are unit tests. In Thinking in Java, 3rd Edition, we filled the book with unit tests, and they paid off over and over again. Once you become "test infected," you can't go back

There's a lot more in that post - read the Python example, which is what Bruce uses to draw his conclusions. The bottom line is, the sorts of mistakes that static typing protects you from are rare, and the costs are much higher than the benefits (as I've posted before). For the opposing viewpoint, have a look at the Fishbowl, where we find this:

Firstly, I agree with Bruce Eckel. Static typing is a form of testing. As a form of testing, it's particularly restrictive on the programmer, and forces the programmer to test all sorts of things they probably shouldn't have to: remembering the unit testing adage that you should only test those things that could possibly break.

There are difficulties, however, with going from that premise, to the conclusion that testing can give you the same benefits as strong typing, but without the disadvantages. The difficulties lie in the difference between testing-through-static-typing, and testing-through-writing-tests.

My statement is that static typing provides few tests worth anything by itself. His defense of static typing comes here:

The other reason I tend to steer towards statically typed languages for my own projects puts me in agreement with Carlos. In a dynamically typed program, it's easy for a human to tell what type something is likely to be, but no way for a machine to say for sure what type something is. Thus searches, code-assistance and refactoring tools for dynamically typed languages must, at some point, guess. These are all tools I rely on frequently, and want to work with as little of my interference as possible.

I want to work with those tools as well. And guess what? I do! Losing static typing does not mean losing those tools.

I'm aware the Refactoring Browser originated in Smalltalk. What I fail to understand is how truly automatic refactoring is possible when types are indeterminate.

This isn't really an argument against, so much as it's a simple lack of experience with Smalltalk tools. At a talk a few weeks ago, I refactored all references to '+' to 'fred:'. This took awhile (there are a lot of references) - but it worked just fine. There's a reason these tools originated in Smalltalk - it was easier to build them. Why? Consider a compiler. In the course of compiling a program, it creates loads of meta information about the code. What happens to this meta information? It gets thrown away. A Smalltalk system is one in which none of the meta information is thrown away.

Being able to discover precisely where (or if) a type or method is referenced is invaluable. A text-search can help, but you must sift through the false-positives yourself. This requires a certain familiarity with the code, and as the code-base gets bigger (or your familiarity with it wanes for some other reason), that sifting takes longer and longer.

I rarely find this to be a problem. Smalltalk can find all the references (senders, implementors, references, restricted to a hierarchy or not). Using a pattern of naming with intent, I find that I usually have very few false positives to look at. If you name all your methods after commonly used system methods, sure, you'll have sifting. But that's bad practice.

I work on my own, personal projects maybe one or two days a week. I tend to have four or five hanging around, so some will go months without me looking at them. When I return to a project after that amount of time, the information that the IDE can glean from the type system is invaluable.

On the other hand, my couple of Ruby projects languish far longer, because it ends up being a lot harder for me to pick them up after a long absence, because I have forgotten all the type information that is implicit in the program.

The IDE's understanding of types can also cause it to save me at least as many keystrokes as the type information causes me to endure. For example, when auto-completing a method, Eclipse will check the local scope for objects of the same type as the arguments, and include them in the completion. Similar guesswork is performed when using macros to generate loops. IDEA has similar features. It will even recommend simple variable names for me based on their type.

It's also amazing how quickly you can remember the workings of a half-forgotten API with a sketchy glance at the documentation and an IDE with type-informative code-completion.

Type information helps recall API's? How? Are the class and method names so generic as to be meaningless? If that's the case, how does an int declaration help out? I simply don't get this argument. Code that does not use meaningful names is hard to figure out in any language, and it's independent of whether there's manifest typing information present. Well formed class libraries are easy to read, poorly formed ones aren't - period.

 Share Tweet This

general

Counting down....

May 6, 2003 15:47:38.057

Only 4 hours and change to a new Buffy. Tomorrow night's Angel wrap up should be interesting as well, and we'll see if my linkage theory holds water or not. 24 is on tonight as well, but that one has been wandering into tinfoil hat territory, IMHO....

 Share Tweet This

general

Feeling a little more ambitious now

May 6, 2003 14:13:12.752

For some reason I had a distinct lack of motivation this morning - so I took a break and watched one of the Band of Brothers DVD's. That made me feel better, so now I'm a little more charged up and ready to look at blogging API's.

 Share Tweet This

development

XP - paying more than once

May 6, 2003 11:44:41.028

Clarence Westberg wonders how many times he needs to pay for XP. Me too - eventually, this notebook will be history. Will I have to pay for a new copy of the OS?

 Share Tweet This

development

Wow. Just Read Paul Graham's latest

May 6, 2003 8:46:02.446

Via Thomas Bray I came across this artcle by Paul Graham. It's a long read, but absolutely worth the time. I can't possibly do justice to the entire article, but I'll comment anyway; it's what I do :)

What hackers and painters have in common is that they're both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things. They're not doing research per se, though if in the course of trying to make good things they discover some new technique, so much the better.
This is an inchoate thought I've had about software for a long while - Graham manages to express it more clearly than I ever have. It's not just this paragraph - he explains this very thoroughly in the article.

For example, I was taught in college that one ought to figure out a program completely on paper before even going near a computer. I found that I did not program this way. I found that I liked to program sitting in front of a computer, not a piece of paper. Worse still, instead of patiently writing out a complete program and assuring myself it was correct, I tended to just spew out code that was hopelessly broken, and gradually beat it into shape. Debugging, I was taught, was a kind of final pass where you caught typos and oversights. The way I worked, it seemed like programming consisted of debugging.

For a long time I felt bad about this, just as I once felt bad that I didn't hold my pencil the way they taught me to in elementary school. If I had only looked over at the other makers, the painters or the architects, I would have realized that there was a name for what I was doing: sketching. As far as I can tell, the way they taught me to program in college was all wrong. You should figure out programs as you're writing them, just as writers and painters and architects do.

I agree with this quite a bit, and it's one of the areas where I depart somewhat from XP. I'm often not entirely certain what I want mycode to do - so much so that I couldn't write a clear test for it if I wanted to. A large body of my code starts as half thought out workspace scripts, with frequent trips through the debugger- mostly because it's easier to just look at the objects than to try and imagine what state they are in. This is one the reasons that the popular notion of avoiding the debugger drives me nuts. I do a lot of my best work in the debugger! From workspace scripts I move slowly to some kind of object model - and not necessarily the most well thought out one. In BottomFeeder, entire subsystems have been refactored more than once. I don't think I would have arrived at the current iteration by thinking about it more up front either - I had to iterate my way towards it.

I think this next thought is a brilliant insight into large company development:

If you want to make money at some point, remember this, because this one of the reasons startups win. Big companies want to decrease the standard deviation of design outcomes because they want to avoid disasters. But when you damp oscillations, you lose the high points as well as the low. This is not a problem for big companies, because they don't win by making great products. Big companies win by sucking less than other big companies
I've often said that somewhere around the $50 million revenue point, ad-hocery gets replaced by formalism - i.e., at that point (roughly) you need procedures. I wonder if it's also the point where less creativity starts happening? There's a balance here - you have to build something other people want, or there's very little point. One of the risks of not injecting outside influence (sales, marketing, product management) into development is that the engineers will wander off the reservation completely. Of course, that's why he talks about the 'day job' - he's convinced that the artists among the developers won't be able to completely express themselves in paid work.

In any case, it's a provocative, interesting read. I've barely scratched the surface of what he's said here - go read it yourself

 Share Tweet This

BottomFeeder

TypeLess Plugin users - new version

May 6, 2003 0:03:44.161

For those of you using TypeLess with BottomFeeder - a new version of the TypeLess plugin has been posted. Check the upgrade manager in Bf - it will show up as an available download. Kudos to Dave Murphy and Michael Lucas-Smith for all the great work!

 Share Tweet This

BottomFeeder

whoops - feed list bug

May 5, 2003 21:37:29.764

Rich Demers pointed out a feedlist bug to me (shows how much I use that feature) that crept into the release. I pushed a new version of the BottomFeeder parcel up to the server, and it's available for download.

 Share Tweet This

BottomFeeder

BottomFeeder - next moves

May 5, 2003 18:51:56.288

The first thing for the next release will be module support - i.e., the various tags that live in different namespaces. That shouldn't take too long for the basics, although figuring out what (if anything) to do with the various tags will be a different matter. Anyone else have suggestions? I'm working off the Wishlist page, but I'm open to constructive suggestions.

 Share Tweet This

humor

Amusing Message Names

May 5, 2003 15:57:43.658

We got to talking about amusing message names in the IRC channel today - many of the suggestions were very amusing, but unprintable. Here's a small sample:

  • #release - change to #diediedie
  • #release - change to #dieAndGoToH***
  • super new initialize - change to #yo

Of course, you can find this theologically improbable message in the image:

#sendTheInfidelToParadise

 Share Tweet This

development

software dev at a dead end?

May 5, 2003 15:19:25.227

 Share Tweet This

BottomFeeder

BottomFeeder 2.9 is out

May 5, 2003 14:43:38.605

I've released BottomFeeder 2.9 today. There are lots of new features:

Changes from version 2.8
  • On Windows, print requests will now open the standard print dialog
  • When using the views that cover the tree, the table has an extra column, which shows the feed's title
  • Changed the uI layout - there is now a 'View' bar on the top of the interface with multiple buttons. Users can view all feeds and feedlists (standard view, as it has been), only subscribed Feeds, only Feedlists, or all New items - the items and html view expand over the tree in this view
  • All New Alerts - the items and html view expand over the tree in this view
  • Searching in BottomFeeder now shows all results in the same view used by 'New Items'
  • With Support for OPML, BottomFeeder can save its subscribed feeds out to disk as an OPML file. BottomFeeder can also import subscribed feeds from OPML, OCS, or RSS formatted files.
  • BottomFeeder can deal with OPML based feedlists as well as OCS based feedlists. Such feedlists need to be in the 1.0 format supported by http://www.syndic8.com
  • Added a set of keyboard shortcuts for common actions. See The Wiki Project Page for details
  • Settings are now displayed in a more pleasing format, using the standard settings tool that ships with VisualWorks
  • Users may change the displayed title of a feed - using the Feed Properties tool, simply change the 'Display Title' property
  • Save files now adapt file paths to the local OS on startup
The Users Guide has been updated by Rich Demers as well - make sure to check it out for all the details on the release. The next release will sport full support for RSS Modules (the namespace specific extensions to RSS 1.0 and RSS 2.0). In the meantime, please let me know about any problems!

 Share Tweet This

general

Windows Heck

May 5, 2003 10:23:44.602

Scott Johnson is not amused by Windows Driver Support:

Well on my Thinkpad I ran SP1 and ***poof***. My CD-RW drive was magically found. On the one hand I'm glad it worked but on the other I'm confused why for something as common as USB support (for a device released before the operating system itself) doesn't work out of the box. And then I was told when I went to install the Adaptec software that "it has a known incompatibility with this version of Windows".

Time to restart Windows, lose my Fireware drive, clear up disc space and then burn cds. I'd rather eat glass.

I know how he feels. I've got a simple LAN. The internet access is managed by a Linksys Router. No problems there - all the devices (3 computers, 2 ReplayTVs) can see the internet just fine. The local LAN is something of a mystery though. My notebook (XP Pro) and the Linux box have no problem seeing each other and sharing printers. My wife's machine, on the other hand (XP Home) is a mystery. It once saw the LAN - and then mysteriously stopped (why???). At this point, her machine cannot even see the other two computers via Windows networking - tcp/ip is fine (FTP, ping, telnet - no problem). My two machines cannot see her box via Windows networking either - although again, tcp/ip stuff is just fine. The Windows file/printer sharing service is installed on each system (the Linux box is using the smb/nmb stuff). It's an utter mystery to me. we didn't change anything, and the box just disappeared as far as Windows networking is concerned.

We are at an utter loss as to what's going on. Any and all suggestions welcome.

 Share Tweet This

general

Am I still in Maryland?

May 5, 2003 9:51:19.313

It's hard to tell, based on the weather. The low last night went just below 40, which is awfully chilly for this state in May! I actually had to turn on the heat this morning - the house had dropped down to 60 degrees, which I just don't find comfortable. Brr.

 Share Tweet This

BottomFeeder

Modules for RSS Namespaces

May 5, 2003 0:07:03.600

It looks like I'm going to support modules in BottomFeeder. The 2.9 release will go out first - but it looks more and more essential to me.

 Share Tweet This

rss

RSS is getting more complicated

May 4, 2003 19:56:24.476

So I'm catching up on my feeds today, when I spot one that seemingly has no content. This is odd, so I go to look at the feed source. There's no <description> tag! Ok, looking at the RSS 2.0 spec, that's technically legal. InadvisableIMHO, but legal. So where's the description? In a <content:encoded> - the namespace is defined, right at the top of the document. Easy enough to deal with - a quick modification to the Constructor code, and BottomFeeder is back in business.

The only thing is, I don't get it. What's the point of moving the description to a namespaced element? The namespace in question is part of the RSS 1.0 (RDF) module system, but - What's the benefit?

 Share Tweet This

cst

Survey still running

May 4, 2003 13:58:02.315

The Cincom Smalltalk Survey isstill running - if you haven't given us feedback yet, please do!

 Share Tweet This

rss

Syndic8 has a blog

May 4, 2003 13:17:23.235

Jeff Barr has a blog set up by Bill Kearney. There's a feed here. This will be useful for those of us tracking the goings on at syndic8!

 Share Tweet This

itNews

What I said!

May 4, 2003 10:56:25.875

I've been speculating on Sun's fate for quite awhile now - and now there are rumors of an acquisition. The names that came up are Dell, IBM, and HP. One things for sure - if this rumor has any weight, it will be fascinating to see what parts of Sun survive a transition. For examples of what could happen, see how many parts of DEC you can still see....

 Share Tweet This

humor

Work Smarter, not Harder

May 4, 2003 9:07:56.978

 Share Tweet This

development

Clueless in Java-Land

May 4, 2003 9:00:43.776

Ted Neward defends his persistence story this morning. I commented on this here. Today, we get a defense based on another post:

In his weblog, Dave Johnson wrote offered some feedback about the four approaches to persistence:

When you get right down to it, they all involve building an encapsulation layer that stores and retrieves objects.

No, Dave, that's precisely my point--we're not persisting objects. That would be the case if we were talking about taking data and putting in into an object database (a true OODBMS, that is), but that's not the case going on here. In 99.5% of all enterprise projects, we're putting data into the database--the fact that you as a Java programmer choose to view the data in the form of an object model is entirely your choice.

Sigh. This is trivially true of course, but then - none of us ever do OO on this basis - after all, it's all just bits at the machine level. Has this guy ever looked up for a few seconds at products like TopLink? Heck, he wouldn't even have to leave the Java world to do that - Oracle ships TopLink/J these days.

 Share Tweet This

development

More on dynamic/static

May 4, 2003 8:52:16.204

I knew someone who knew more about Lisp would post on this - one of the three posts I commented on here. Sure enough, Ted Leung weighs in with information on the abilities of Lisp and Dylan.

 Share Tweet This

development

More stories on Dynamic language pining

May 4, 2003 8:48:21.737

Here's an interesting post

Bob Martin's post on statically typed languages reminds me of both Chris' and my own migration from the C++ view of typing to a less static view of the world.

I agree with Bob that having language support for dynamic typing is a real boon to productivity.

I'm not so sure that test driven development (TDD) is the only tool for making dynamic typing "industrial strength." I think we (the industry that is) can do more if/when enough people wake up from the Java-induced haze.

Maybe Bob should come up to Redmond and help us out!

I had to read that last part twice. Does this indicate some interest in dynamic languages within the language group at MS? It would be good news for all of us if it did.

 Share Tweet This

development

Almost like getting it

May 4, 2003 8:36:18.187

Over on the Manageability blog there's a few comments about static/dynamic typing:

What if you could remove type information from a static typed language?

What if you could annotate a dynamic language with type information?

For the first, developers doitout of necessity all the time - in C, it's the use of void. In Java or C++ (and C), it's casting. That's removing type information; you lying to the compiler because you know thecorrect answer and it doesn't. As to the latter, it happens every time we interface with external systems. Some dynamic languages already allow for his second point

Shouldn't languages have more than one mode?

If static type checking is just one kind of analysis, should we not be able to turn it off and on?

I understand that most modern Lisp systems have something akin to this (I'm no Lisp expert). Strongtalk can figure types out by itself, and allows for type annotations. Many of the functiona languages out there also figure types out, as well as allowing for annotations. In other words, this stuff exists.

If I knew the type of an object is my code, should I have the capability to tell the compiler what type it is?

If tests were so important, shouldn't I be able to ask the compiler to generate some of these tests ?

The right language should not be a choice between static and dynamic checking, it should give you that choice.

Point one - see above. Point two - you want the compiler to generate tests? What you want is AI above and beyond anything that exists now, that's for sure. Sounds almost like laziness to me - tests aren't that hard to write - there are too many XP and agile projects around to claim otherwise. Somehow I suspect that this is a cry to add these features to Java or C# - so that the author won't have to wander all the way over to Google and look about.

But wait, there's more! In another post, we see this old standby What I'm trying to get at is that static type checking is only one kind of checking. It's just one kind of static analysis that you can apply to code, in fact, it's a kind of testing. For static typed systems, it's part of the definition of the language and it's the minimum requirement that needs to be met. For dynamic typed systems, the definition of the language is more liberal, and the minimum requirement is much lower. Of course, it's every organization's responsibility to define what that minimum requirement, good organizations will require comprehensive test suites and bad ones will require passing a syntax check. In short, the more tests the better, by the same reasoning, the more prebuilt static checking, the better?

I'd say he ought to go read Bob Martin on this. "Uncle Bob" was a big, big static typing advocate until he became "test infected". In short:

About two years ago I noticed something. I was depending less and less on the type system for safety. My unit tests were preventing me from making type errors. The more I depended upon the unit tests, the less I depended upon the type safety of Java or C++ (my languages of choice).

I thought an experiment was in order. So I tried writing some applications in Python, and then Ruby (well known dynamically typed languages). I was not entirely surprised when I found that type issues simply never arose. My unit tests kept my code on the straight and narrow. I simply didn't need the static type checking that I had depended upon for so many years.

I also realized that the flexibility of dynamically typed langauges makes writing code significantly easier. Modules are easier to write, and easier to change. There are no build time issues at all. Life in a dynamically typed world is fundamentally simpler

The win for dynamic languages is flexibility - refactoring is easier, initial coding is easier, there's no lying to the compiler. The should be written either way. If you write the tests, the static type checking is just getting in your way.

Finally, we get to this post

The pros I perceive is not what most would argue. It's actually based on my experience using the Visualage and Eclipse environments. The pros are that it's easier to navigate and search the code base. See the absence of type information makes it difficult to find the dependencies between code. Ask any smalltalker their experience of trying to reduce the size of the smalltalk image, it's an extremely painful process. Just because you're liberated today from type information, doesn't mean that it's not going to strike you back tommorrow.

Pain in trying to reduce the size of an image. That's the best he can come up with? First off, if you deliver your application using the tools the vendors provide, stripping is a one time thing (or once per vendor release cycle, when you update to a new release). In the interim, you ship out new packages of Smalltalk code that load into the baseline image (much like DLL's). Second, this is an issue that will be going away - Cincom Smalltalk, at least, will be shipping with an SRE (Smalltalk Runtime Environment) to address this issue. Second, why is he worried about size? No Java app or C# app - dependent on their respective runtimes - is small by any stretch of the imagination. I deliver BottomFeeder as a 5 mb (compressed) download, and it can be updated dynamically over the net. The runtime image was made pretty easily - I wasn't trying for a small image - and won't be updated until VisualWorks 7.2 ships.

The question you've got to ask is, should I sacrifice the code completion, quick-fix, search, etc. for a little fewer keystrokes?

No, the question is, can he build up a strawman to fight against? I think the answer to that is clear....

 Share Tweet This

development

Objects and the Web?

May 3, 2003 23:19:11.284

Or is that Objects vs. the Web? Alan Knight of Cincom and Naci Dai of Eteration have a paper out on OO and web development. The paper discusses how to use the MVC paradigm with web development. This is the same material which has been used for a presentation they have given at various trade shows. Go have a look; it's well worth your time.

Update - thanks to Alan Knight, for pointing out my mistake on Naci's name, and providing an updated link to his website

 Share Tweet This

development

Cool - more RSS feeds

May 3, 2003 14:08:21.239

Infoworld now has a bunch of RSS feeds - the links are right on the front page. Over time, most one-way communications that are now email-lists will likely be replaced with RSS. No possibility of spam, or of the clientaccidentally classifying it as spam...

 Share Tweet This

development

Cringely - clearly not getting it

May 3, 2003 9:53:51.390

Last week I commented on a Cringely piece where I thought he wandered off into tinfoil hat territory. Well, this week he's back, making the other side of his argument about Open Source. This week he takes the tack that Open Source is here to stay. At first, he's making some relatively reasonable points about the sorts of extant OS projects:

But it could be so much better. At the risk of annoying my two remaining technical readers, I believe Open Source suffers from a kind of unspoken caste system, with a few projects getting lots of resources and most other projects getting very little. The result is what I think of as three classes of Open Source software -- professional, semi-pro, and amateur. I'm not saying this is bad, just that it is the case.

Truly professional software development really needs technical writers, user interface designers, and QA people, but most Open Source projects lack those types of helpers, and therefore, often fall short in the long run. Those projects that DO succeed (Apache, the Linux kernel, et cetera) are those that only need that type of diversity to a very small extent because they generally live on the command line. These applications generally target people who can get by without the product having the best documentation or interface -- namely, other developers. I think of these as semi-pro products in that they are robust, but tend to lack external trappings of commercial software

Ok, that's mostly reasonable. I feel very fortunate to have Rich Demers documenting BottomFeeder - he's uncovered numerous problems and inconsistencies in addition to creatinga great set of doc - so I can see Cringely's point about projects that lack that being less useful outside a small circle. However, we soon return to tinfoil hat territory:

Look how many Open Source projects have updated versions and the changes read "cleaned up some code." What that really means is the programmer loves his little project, and a few fans have made him love it more, and he just NEEDS to touch it. He can't keep his hands off the code even when he isn't adding new features.

"Cleaning up code" is a terrible thing. Redesigning WORKING code into different WORKING code (also known as refactoring) is terrible. The reason is that once you touch WORKING code, it becomes NON-WORKING code, and the changes you make (once you get it working again) will never be known. It is basically a programmer's ego trip and nothing else. Cleaning up code, which generally does not occur in nature, is a prime example of amateur Open Source software.

Hmmm. Refactoring is useless? I guess he has this notion that programmers always produce the best possible code the first time out, and that new features never require changes to previously working code? And his statement that this breaks things - here's a phrase he can add to his vocabulary:

Unit Testing

Bah

 Share Tweet This

news

Holy heck!

May 3, 2003 1:19:02.503

Now this story is amazing:

MOAB, Utah (AP) -- A Colorado climber amputated his own arm Thursday, five days after becoming pinned by a boulder, and he was hiking to safety when he was spotted by searchers, authorities said.

Now that took some intestinal fortitude. Wow

 Share Tweet This

movies

X-Men 2 Rocks

May 2, 2003 16:10:20.962

Yes, it was well worth going. I went in with low expectations after the firstmovie - but it was worth it. Recommended!

 Share Tweet This

smalltalk

Smalltalk in Information Week

May 2, 2003 11:21:08.120

Now here's something cool. very nice article on Smalltalk, web services, and ease of development:

There's more talk about Smalltalk these days, as the object-oriented programming language gains something of a developer following for Web applications. The notion of Web services, where one discrete piece of software talks to another without knowing very much about the other system, was a concept that originated in Smalltalk, say implementers of these new apps.

Now there's a nice piece of news - something that will hopefully catch some eyes. There's more:

Some experts point out that Java, C++, and Microsoft's C# are evolving in a direction set over 30 years ago by Smalltalk, yet rarely do proponents of these languages acknowledge their debt. Such oversight only reinforces the undying loyalty that some developers feel toward the language. "I will quit coding in Smalltalk when they pry the keyboard from my cold, dead fingers," says Karen Hope, chief architect of an online Smalltalk insurance-quote application at the St. Paul Companies Inc.

And then this, from Allen Davis:

Smalltalk is "by far the best programming language available for Web and enterprise development," says Allen Davis, the new executive director of the Smalltalk Industry Council and CEO of Smalltalk vendor Knowledge Systems Corp. When it was first conceived by Alan Kay and his team at Xerox Palo Alto Research Center, Smalltalk was regarded as a resource hog. But as systems grew in processing power, Smalltalk began to come into its own. As part of its effort to revitalize the language, the council is organizing its first Smalltalk Solutions Conference, July 14 to 16, in Toronto.

Some other developments are in Smalltalk's favor. IBM includes Smalltalk in its VisualAge integrated development environment. And Cincom Systems Inc., which acquired a Smalltalk toolset from ParcPlace, has lowered prices for getting started from $3,500 to a free download for developer try-out and $500 a year for one developer's deployment of Smalltalk applications to one or two users.

So get the to the download site and have a look!

 Share Tweet This

development

I'm no O/R expert, but....

May 2, 2003 9:56:53.688

Ted Neward has a post on O/R up. I raised this post on the Smalltalk IRC channel to general snickers - I'll probably have a more detailed critique from an O/R expert later. In any case, I'm reading along and come across this:

If none of these approaches seems particularly what you're looking for, particularly because they still seem like too much work and too awkward to work with from within Java, another approach is to make use of the recently-standardized SQLJ, or "embedded SQL for Java", specification recently approved as part of the SQL-99 specification. As with other embedded SQL technologies, SQLJ allows a programmer to write SQL statements directly within the Java code, which is then preprocessed by a SQLJ preprocessor, turned into regular Java code and fed to javac as a normal compilation step. The SQLJ preprocessor takes care of any of the call-level interface logic in your Java code--you just focus on writing the SQL when you want to talk to the database, and on Java when you want to do anything else.

The easiest way to use SQLJ is to use static SQL statements embedded in the code directly, what's known as SQLJ clauses:

Ummm.... you build a data access layer with embedded SQL all through it? One of the first Smalltalk applications I built (way back in the early 90's) did that, because at the time "it seemed simple". Then the schema changed, because the dba's decided it needed changing. Boom crash, broken app, with changes required all over the place. IMHO, embedding the SQL this way is as silly as scattering hardcoded constants all over the place - it doesn't scale.

Then there's this:

One major drawback to SQLJ, however, is its relative lack of support within the J2EE community. Although the J2EE and EJB specifications do mention it by name as a possible data-access technology layer, it receives almost no attention beyond that. Oracle is the only major database vendor to have a SQLJ implementation available as of this writing, and there seems to be little support from the community as a whole, which is a shame, because in many respects this is the epitome of a relational-first persistence approach.

So not only is it a terribly bad idea, it's unsupported for the most part. "Here use this approach that cripples your application maintenance, and obtw, better stick to one DB". Bah. It looks more and more to me like Gemstone is like Da Vinci - brilliantly ahead of it's time, simply outside the grasp of the current crop of developers....

 Share Tweet This

development

Object-Hierarchical Impedance Mismatch?

May 2, 2003 9:13:59.265

Ted Neward wonders when Object-Hierarchical Impedance Mismatch will start getting talked about:

But what happens when objects don't form nice, natural trees?

Hierarchical data models are not new; in fact, the relational data model was an attempt to find something easier to work with than the database systems of the day, which were similar in concept to the hierarchical model we see in XML today. The problem with the hierarchical model at the time was that attempting to find data within it was difficult, since users had to navigate the elements of the tree manually, leaving users to figure out "how", instead of focusing on "what"--that is, how to get to the data, rather than what data they were interested in.

With the emergence of XML (and the growing interest in "XML databases", despite the inherent ambiguity in that term), it would seem that hierarchical data models are becoming popular once again. While a full discussion of the implications of a hierarchical data model are beyond the scope of this book, its important to discuss two important things: when we're likely to use a hierarchical data model in J2EE, and what implications that's going to have for us a Java programmers.

While the industry currently doesn't recognize it, the mapping of objects to XML (the most common hierarchical storage model today) is not a simple thing, leading one to wonder if an object-hierarchical impedance mismatch is just around the corner.

Now there's an interesting question. We spent the 90's focused on the object-relational mismatch - looks like it's back to the future! Thinking about it,. XML storage isn't a lot different than the old hierarchical datamodels that prevailed before the RDBMS revolution. Somewhere, an old Cobol hacker at IBM is laughing his socks off....

 Share Tweet This

smalltalk

ESUG Keynote speakers

May 2, 2003 8:18:52.350

ESUG looks good again this year - the list of keynote speakers is out:

  • Lars Bak
  • John Brant
  • Vassili Bykov
  • Dan Ingalls
  • Joseph Pelrine
That's a powerful lineup. This year's event is being held in Bled, Slovenia, August 23 - August 29. The blurb on this year's meeting:

The entire ESUG Smalltalk Conference Committee is pleased to invite you to contribute to and actively participate in this 11th edition of the main European conference on Smalltalk. Continuing a strong tradition, the attendants will enjoy tutorials, workshops and demonstrations on various Smalltalk related subjects.

Since last years attendees enjoyed having a Camp Smalltalk during the conference, another Camp is planned for this conference edition too. New this year is that the talks are scheduled primarily in the morning and that the afternoon focuses on concrete collaborations between participants and workshops.

This year the conference will be held in Bled - Slovenia from Saturday, August 23 to Friday, August 29, 2003. This is the first time that the conference takes place in a country of Eastern Europe. We're very excited by meeting Smalltalkers in a very beautifull place in mountains.

Looks good, wish I could be there. That's still the week my daughter starts school....

 Share Tweet This

rss

Car wrecks and RSS

May 2, 2003 0:37:13.790

I came across this post about the ongoing arguments over RSS between Bill Kearney and Dave Winer. I watch this sort ofthing with an amused air of detachment; I just work on an aggregator - I don't feel all religious about tag intricacies. Anyway, this is just precious:

Just a little preview of today's episode on the syndication list

Dave: Now I'm filtering his (ed: Bill) email in such a way that it's deleted on the server, I'll never see another message from him, so I won't be able to rebut it. Please assume that I would if I had read it.

Bill: Oh bull****, you've threatened that nonsense before. You're too addicted to all the attention to ever possibly ignore it.

And as with real day time television, you are almost too embarrassed to watch (and you certainly won't admit it), but you cannot get your eyes of it once it is on, just like that car wreck you passed on the highway

The funniest part is the comment thatcame in there:

The first car wreck you pass in a day, sure. The third, maybe. By the twentieth, you just wish the b******* would learn how to drive, so they could stay out of your way and let you get to work.

lol

 Share Tweet This
-->