February 2003 - Posts

IBM Bullseye
28 February 03 01:00 AM | madsn | 1 comment(s)

Just read Business Solution (Norwegian edition) and found a quote of the norwegian IBM CEO.

On the question (all directly translated and quoted (no type-o's) from norwegian):
"What is your latest gadget aquisition?"

Mr. Endre Ragnes replied:

"Oh yeah, this you should really come by and have a look at! It's the new IBM ThinkPad X30.
It's ultraportal, has a wireless antenna, and a built-in bluetooth solution, just to mention some of the features
"

Gee.. ultra-portal.. that's nice. And a wireless antenna aswell. And no external bluetooth in your pda.

Object hierarchies in memory and pattern usage strategies.
27 February 03 07:06 PM | madsn | 2 comment(s)

[this should maybe be a story, and is under construction. I plan to add som models etc. comment if you like! but its more to come... ]

I've been working since mid-jan now with a reengineering of a SQL Server solution. Our task is to port the part of their system containing Contact information to J2EE.

We have structured all information in a sensible UML Domain diagram showing all conceptual classes. Starting the real implementation design we need to make a couple of architectural decisions. The communication between layers need to be done according to the ValueObject pattern. The best strategy for this would probably be a combination between "Updateable VO" and "Multiple VO" as described in Sun's paper.

(For pure .NET folks out there VO's can be compared with strongly typed datasets.)

Because this is a application mainly aimed at webclients we need to make some decisions regarding state preservation in the application layer. This is really also a OR-mapping issue..

J2EE with architectural ornaments - MS Access Style with bloatcode

The obvious simplest solution would be to route requests from the clients directly through stateless session beans (service beans) to the DAO's to get the appropriate VO's. Implementing the "Multiple VO" strategy the client (or the service the client uses to access the app SOA style) will be able to retreive either a "heavy" VO containing aggregated information, or "lightweight" VO's containing only key/value pairs for it's collections.

The lightweight solution would then demand another call on the application to obtain the VO's for the aggregated objects (which really are just structs because they are VO's). These objects can easily be stored in client session.

This whole solution with passing VO's up and down through the layers creates a lot of chatter and traffic. To me this does not feel really OO. It feels like databound MS Access forms with architectural patterns strapped to it to make it run on JBoss. The architecture becomes mere ornaments and you could just as well have executed sql in the presentation layer.

Maintaining complete object hierarchy in-memory

The alternative would be to load all objects into memory at startup or first use. This way, using stateful session beans, each client could make requests on references to real objects directly, with these references placed in their state on the application layer.

The big "how" in this scenario is search. How to do an effective complex search in large object hierarchies? If I have 4000 contacts of different types with sub-contacts and aggregated objects etc. it would probably take ages to do what a simple SQL SELECT could do in seconds. But the select won't work if I have to have _just that_ object.. Not a copy..

You could, of course, maintain partial object hierarchies in stateful beans only. But in this case two sessions would work on separate copies of an object creating a possible lost update.

to be continued..

would all of this go away with JDO (or objectSpaces for .NET)?

 

 

humble suggestions
27 February 03 06:41 PM | madsn | with no comments

To avoid hammering ScottW with mails about every little itsy bitsy detail that I might comment on this really great and promising blog solution I decided to collect it all in this blogentry as my humble suggestions (correct me if I'm wrong!):

Syndirella plugin:
Async, and more regular calls to the blog ws. So that you don't have to restart syndirella when the stuff is altered in your categories.
The editor needs some context menus and possibilities to edit category stuff and stories.

ASP.NET app:
Pingbacks would be nice to see with titles and author instead of url.
The title bar (Yourname weblog - subtitle) sometimes gets my norwegian Ø letter wrong.
the admin pages should have some kind of function that could store subscribed feeds. these could be downloaded to syndirella on request. I blog all over the place on different machines, and have to set everything up in syndirella all the time..

Naming to keep it all unmain
27 February 03 10:22 AM | madsn | 2 comment(s)

I just read ScottW's post on naming gadgets in a certain theme.. This reminded me to post one of the worlds most funny programming site ever written. It also gave me the idea to start my own category for collecting funny unmain practices (to be used when your employer starts to misbehave)

"How to write unmaintainable code" by Roedy Green as kept me and my fellow programmers laughing for lots of tiresome hours when the level of coffee exeeds the level of red stuff in our bloodstream. Especially notice the section on naming. I'll include some of my favorites here:

Be Abstract: In naming functions and variables, make heavy use of abstract words like it, everything, data, handle, stuff, do, routine, perform and the digits e.g. routineX48, PerformDataFunction, DoIt, HandleStuff and do_args_method.

Names From Mathematics: Choose variable names that masquerade as mathematical operators, e.g.: openParen = (slash + asterix) / equals;

Conventions Schmentions: Ignore the Sun Java Coding Conventions, after all, Sun does. Fortunately, the compiler won't tattle when you violate them. The goal is to come up with names that differ subtlely only in case. If you are forced to use the capitalisation conventions, you can still subvert wherever the choice is ambigous, e.g. use both inputFilename and inputfileName. Invent your own hopelessly complex naming conventions, then berate everyone else for not following them.

Blogging commenced
27 February 03 09:38 AM | madsn | with no comments

Welcome!

It's been more than 6 months now.. postponing my blogging initiative. Wondering wheter to make my own personal blogging sw, join radio or just write post-it notes all over my appartement. Finally I got my [something] together and started off with ScottW and dotnetweblogs.com

Takes some time to get used to the blog format. Although I've read blogs for quite a while it's always been in the search for information, not paying too much attention to the format.

Anyways. I will probably write a lot about intricate confusing frustrations related to OO development, patterns usage and methodology in the crosssection between J2EE and .NET. As a soon-to-be-finished bachelor student I still try to keep up on both platforms.

I'll hopefully also contribute to this tool with some ideas and maybe even some code:)  Immediate suggestions:

- Asyncrounus calls to update in the Syndirella plugin editor
- Contextmenus! i'd like "add link"

Since this is sort of an intro to me I'll let you know that I'm graduating in may to be a bachelor of information systems at NITH in Oslo, Norway. At the moment I'm working on our closing bachelor project in a company called SysCon which are delivering Corporate Lending Systems. This is a Software Reengineering project moving to J2EE architecture and technology.

Additionaly me and a couple of guys from school are coding .NET at eFactory.

 

More Posts

This Blog

<a name="MyWork">!My work!</a>

Funstuff

Goodies

MSCRM Blogs

Sharepoint

Useful reading

Weblogs

Syndication