"I have a mind like a steel... uh... thingy." Patrick Logan's weblog.

Search This Blog

Saturday, December 30, 2006

Blitz 2.0

Also from Dan Creswell, a new release of Blitz Javaspaces is nearly available.

If you are not familiar with Javaspaces you will want to understand the programming model. (Among other resources, Dan's.)

Javaspaces is the most dynamic Java programming mechanism I know of. If you have a need to use Java but you like dynamic language things like Smalltalk, and dynamic concurrency and distribution like Erlang, you may like the Javaspaces programming model.

If you like object-oriented databases (for some strange reason), then Javaspaces gives you 80% of those benefits at 20% of the pain, suffering, and risk. No one really needs that other 20% of the OODB benefits anyway. Some kind of a database is typically involved in a complete system using Javaspaces, but it plays much less of a central role in the goings on.

Friday, December 29, 2006

Code Shrink, Programming Models, Patterns Are Dead

I was going to make a fairly short post pointing to Mike's observation of applying different tools and models to a familiar problem. An initial measure of effort and benefit is "code shrink" and that can draw you into the new approach even more.

Then I read Dan Creswell's post also about comparing JMS and Javaspaces...

In general, to measure the true suitability of a technology to a problem one must solve the problem in the appropriate way for each technology we are considering rather than from the single standpoint of a technology we are already familiar with.
This is something our group has been working a lot the last few weeks, i.e. the programming models for the tools we are considering. Some are more familiar than others. Also just determining where to start and how to get into a new tool and its model can be challenging. And then in some cases, rewarding when discoveries and insights are made, and you begin to see where things may lead.

By the way, the thought crossed my mind again recently... has "agile" killed "patterns" or did it die on its own? Are "patterns" the best way to present a new programming model? Does anyone really "do" patterns anymore, the way the original movement intended? Or do we just write some text and draw some pictures and call them patterns? Is there any point to the "patterns" idea anymore? I'm not sure either way.

In any case, Mike's and Dan's posts are worth absorbing... it takes some work to get into a new model, and not just repeat the familiar using a new API.

Thursday, December 28, 2006

I look pretty young, but I'm just back-dated, yeah

Tough questions about Apple's "options mess". (Under-reported financial scandal of the year if not decade spans many companies, many of which have not been discovered yet. Why are share holders not way up in arms? The ultimate white collar crime?)

Elayne Boosler

I really enjoy listening to Elayne Boosler when she fills in on the Stephanie Miller Show. Her wit is wide ranging, quick, and insightful.

Apparently she also is a thoughtful blogger...

Through all the negotiations in writing between the two generals leading up to the meeting of surrender, the points reiterated by both over and over again were the desire to "avoid useless effusion of blood", and to "save thousands of human lives, and hundreds of millions of property not yet destroyed". So while the south was bled, there was still much havoc and destruction to effect barring Lee's decision. I find the most moving phrase of Grant's letters, especially in consideration of the fact that he was winning at the time, to be: "..Seriously hoping that all our difficulties may be settled without the loss of another life.." A lifelong fighter who had seen the loss of millions understood the value of one more life. The terms of surrender and disposition of the men were subjects worked out in advance, and with great civility, befitting two warriors who understood the comportment of battle. While they could have fought to annihilation, as men who had actually served before, they knew the arc of war. They understood it took at least a few people left alive in order to form a more perfect union.

It's almost 2007. ..Seriously hoping that all our difficulties may be settled without the loss of another life...

Sources

  • "John Brown's Raid, 1859"
  • "Surrender at Appomattox, 1865"
  • EyeWitness to History, www.eyewitnesstohistory.com (2004)
Magnificent. Peace be with you in 2007.

A Vista of OSX

Fuzzy: "I love OS X. It is the only thing to have your family on."

Windley: "I love OS X. Simple as that."

Tuesday, December 26, 2006

Fortran 2007 Anyone?

Will 2007 be the year of Dynamic Languages? Or was that 2006?

2008?

From Infoworld's 2007 predictions, Paul Krill writes...

I’m betting that by Christmastime 2007, people will not have noticed much difference at all...

Java in its so-called closed implementation already had spawned open source projects ranging from the Spring Framework to Apache Jakarta and the Eclipse project. Open source Java application server vendor JBoss also built quite a business model without needing an open source Java.

So, in 2007 we might have to look to the Microsoft camp for excitement in the application development space, because Java’s big splash won’t amount to much.

Of course most people even in the Java world will not be immediately or even directly affected by the implementation going open source. It will still be Java 1.6, or whatever version gets the treatment initially.

But neither would I expect the nod therefore to go to dotnet. The culture there waits on Microsoft, and then studies the scripture. They will be busy studying Vista and such. Ho-hum.

Meanwhile the Java world will continue to innovate in the open market as Paul describes. I don't think 2007 will top 2006 in dynamic language ways though. The Python and Ruby implementers made their announcements in 2006, and so will be getting down to business in 2007 with initial deliveries.

I think the 2007 language breakthroughs are still clouded. On the other hand its very post-modern. They won't be neat breakthroughs.

32

From Infoworld's predictions for 2007, Tom Yager writes...

By mid-2007, 64-bit quad-core CPUs will be the de facto standard for x86 desktop and server computers. A sub-$5,000 two-socket workstation or server will sport a mind-boggling eight processor cores. Intel engineered its dual core per socket Woodcrest server/workstation CPU to allow a four core per socket upgrade with nothing but a chip swap. AMD has done the same with Opteron and Athlon 64 FX systems built after Revision F. AMD’s capacity to expand Opteron systems to eight sockets means that in 2007, IT can buy 32-way servers for the price it once paid for four-way servers. Talk about consolidation!

Somewhat Fuzzy -- Anyone Have a Whiteboard?

An interesting thread around distributed data structures and coordination models. I'm not sure where it is going, but I'm interested in the finale.

I could use a whiteboard right about now.

Em, did anyone mention shared memory yet?

Trading... Up?

From playfuls.com comes no surprise to Wii aficionados...

The folks from GigaGamez ran this story a few days ago, after several searches on Craiglist revealed quite a few PS3 owners willing to depart with their hard-earned console, in exchange for a Wii and, generally, some extra cash...

And it's not just a couple of people, but a whole lot of them; and by the looks of it, more and more are joining this "trend" by the day...

You could say that Sony got off to a bad start, but then you'd be over-estimating them.

I saw a PS3 at a store a few days ago. Someone was playing a basketball game. The graphics were really good. The hardwood floor basketball court was shining a little glare in just the right places as the camera moved around. The figures were better than I've seen in a game, but not spectacular. Their movements and the crowd's had more of the look of a televised game than I've seen in other games.

However the player was still using pretty much the standard controller of the last several years. I hear it has some gyro capabilities, at the sacrifice of a rumble. There was nothing in the players expression that conveyed the fun and "magic" of a Wii controller, nothing by a long shot. As James Robertson has commented several times over the last year, if I were in a store with maybe $600 to spend, but more likely less, even after seeing the PS3 in action, I would have to think quite a lot about where else I could put that $600.

An easier decision would be to but half of it in a Wii with the Sports game plus one more, totalling about $300. That would still leave a plentiful $300 for more games, an ipod, or many other things... including letting it sit in the bank knowing I got the most magical game experience for much less.

Ajax'd to a Standstill

My "go-to" web page for TV listings for years had been Yahoo's. I could get to where I wanted to be in two clicks. Now they've gone all Ajaxy on me. I've tried several times over the last month or so to just bear with it.

I thought perhaps I just have to find the right links, or perhaps they'll improve the page. Maybe I should have sent them my opinions. But don't they have some evaluation process? Do these evaluators just get along with this new thing better than I do?

Maps are in a similar place for me. Both Google's and Yahoo's map services are not nearly as functional for me as the previous, non-Ajax, Yahoo map.

I used to go to maps.yahoo.com and tv.yahoo.com with ease and comfort, knowing I'll get what I want quickly. But no longer.

I am on the lookout for a simple TV listing and a simple map, no Ajax required, or frankly, not even desired.

Zap2It may meet my needs for TV listings.

Sunday, December 24, 2006

Wii / Not Wee

This is something to try... a Wii Sports session at a movie theater (YouTube).

Anyone Seen Ray?

From Microsoft Watch, watching for signs of Ray Ozzie...

So, where is Ray Ozzie? ...

If you've seen him, please tell us where, and, Mr. Ozzie, if you're reading this, please do send us an e-mail or instant message. If you prefer, we could rendezvous in one of those Groove work spaces. We would even be content to see you blogging again.

Point and Click Opera

I've not been able to get control of the Wii long enough to try the Opera browser yet. My kids been browsing with it. The test I'll use is Bloglines. I can browse Bloglines on my Blackberry pretty easily with one hand, while standing up on the train. If I can browse as easily with the Wii Remote from the couch, happy, lazy me.

Eventually Nintendo will have to come out with a wireless keyboard for anything more than casual browsing. And why shouldn't they?

Friday, December 22, 2006

Intelligent Design?

Jerzy points in a comment to an earlier post an Economist article on why Windows, and particularly Vista, is continuing to win the OS war. An excerpt from the Economist...

But unlike Windows, downloading applications to run on Linux and ensuring all the necessary “libraries” are in place is most certainly not for novices.

But the real difference between Unix-like operating systems and Windows is their design philosophies. Windows may squander computing power through its clumsy architecture. But by favouring simplicity of use over simplicity of design, Microsoft has been able to leverage cheap but powerful commodity hardware, to provide cost-effective software solutions.

On the first point about dependencies, I have found recent releases of Suse and Ubuntu, particularly the later, to handle this well, including updates to previously installed software. I have certainly encountered at least my share of problems with Windows components, but so have I used Windows for a wider variety of purposes, e.g. I have not yet used desktop Linux with cameras, digital audio devices, etc. What little experience I have with Macs and these purposes (external DVD recorder, digital camera, and printers) tells me that it works a good bit better than Windows.

The second point that troubles me in this quote is that Microsoft's operating system as a whole is more efficient and cost-effective from a hardware-cost perspective. I can offer strong evidence against that regarding Windows XP and Windows Vista. I have hardware that is long paid off that continues to run every version of Linux I throw at it. However on the Windows partition it cannot run anything more recent than Windows 2000, i.e. XP (through experience) and Vista (I am told) will not even install, let alone run as efficiently as the newest Linux distributions.

I will also touch on their notion that Microsoft has given Windows "simplicity of use" at the cost of design complexity. "That's funny ha-ha!" is the only reaction that comes to me. By what measure is Windows easier to use than MacOSX or Ubuntu Linux?

Update: (via James Robertson, "Load the Stupidity Module") an analysis of the cost of Vista's "content protection" mechanisms. If so, then Vista will raise everyone's hardware costs, not just Vista users. Sheesh. Thanks.

As a user, there is simply no escape. Whether you use Windows Vista, Windows XP, Windows 95, Linux, FreeBSD, OS X, Solaris (on x86), or almost any other OS, Windows content protection will make your hardware more expensive, less reliable, more difficult to program for, more difficult to support, more vulnerable to hostile code, and with more compatibility problems.
Miguel de Icaza's take on this ("Content, Restriction, Annulment and Protection (CRAP)") is classic...
Microsoft: Shooting itself in the foot. One toe at a time.

Inversion of Containment

Update: Guy Nirpaz addresses the issue further. I'm in the middle of the USC/Michigan game and can't concentrate yet.

End

Guy Nirpaz talks about all the containers available for Java applications. Some are heavier than others. Some provide more lifecycle control than others. Co-workers have looked for several reasons at OSGi and JBoss' use of JMX/MBeans.

My Jini Goggles are on right now for related reasons. While Jini per se is not a "container" there are mechanism built in and on Jini that provide some lifecycle support. In-the-large: e.g. Rio. In-the-small: Leases. And the Jini mobile object mechanism is a kind of runtime "injection" mechanism with security.

What is a "container" and are there pieces of Jini that provide an "inversion of containment" to meet similar objectives? I'm just thinking. Do you need something like Spring to abstract Jini, when Jini itself is an abstraction of lookup, injection, etc.?

The Movement You Need

Interesting movements in the Jini/Javaspaces world. Looks like Apache will likely accept it as a full-fledged project and there is a newly published book from Apress.

A prediction or at least a suggestion for 2007... the various Apache and other open source ESB's should look at Jini/Javaspaces to either/both (1) consider it for under-the-hood capabilities, or (2) exposing it's legitimate capabilities alongside the ESB's.

Gigaspaces has taken a step in this direction with Mule. The open source combination of ESB and J/JS would have many of the same advantages, in a completely Apache/OSS fashion.

Kudos

Although I rag on MSFT 99% of the time (and think they deserve it, but more on that later :-)...

I was just thinking they do deserve one big nod for seeking out people to help get them into the new world, like Ozzie, Cunningham, and Udell. Hopefully the organization will pay attention.

Wednesday, December 20, 2006

Update In Place vs. Coordination Space

Data caches are good. Even distributed, shared, clustered data caches are good. There are many applications where this is the right thing to use.

Comparing them to Javaspaces is kind of nagging at me. In some cases one product can serve both purposes. E.g. in Gigaspaces, the developer can choose the Javaspace API or the Map/Cache API. They can also do funky update-in-place things within a space kind of too, but that is explicitly not in the Javaspaces API per se.

In any case I think it is imperative that a developer chooses what kind of mechanism they need for specific situations. And I think there are critical differences between the Javaspace mechanism and a data cache mechanism.

In particular, certain data caches run *in* the address space of the client JVMs, while a Javaspace is *never* in the address space of the client JVMs. (There are caches that run outside the address space, e.g. memcache, and that's another angle on the topic.) When these caches use the java.util.Map API there are potentially funky goblins at play. A regular java Map has certain expectations.

Consider an object V1 with a direct object reference to object O1. Now consider another object K1. Put V1 in a shared, clustered cache using K1 as the key. Update object O1 in that JVM. In another JVM in the cluster (JVM'), do cache.get(K1') to get a copy of V1' referencing a copy of O1'.

In this second JVM', update that O1'. Then from there do cache.put(K1', V1'). Note: a cache is *not* a transparent transactional memory OODB like Gemstone/S or Gemstone/J. Not that you'd want one of those anymore, but they do go to pains to maintain referential integrity, which is the cliff this example is heading off of. So the put in JVM' will soon update the first JVM so that the key K1' leads to the value V1' with a reference to the object O1'.

Meanwhile in the first JVM there is still, outside the cache, the objects K1, V1, and O1, with V1 referencing O1. When this JVM does cache.get(K1) it gets back V1' with a reference to O1'.

Question: In the first JVM what are the identities of the objects K1, K1', V1, V1', O1, and O1'?

Answer: I believe the answer is dependent on the cache implementation. I am not sure what the JCache spec says. Either there is leeway or not all caches do the same thing, and none of these things may be what the developer expects based on experience using the out of the box java.util.Map classes in single or concurrent threads.

In JBoss Cache the developer has the choice of a "tree cache" or a "pojo cache" (maybe others). The behavior will be different based on this choice. A pojo map will patch up object references *within* the stream used to cluster the distributed caches. The tree cache does not. And I think this behavior can vary based on the use of their AOP mechanism.

Even the pojo cache though does not patch up references as far as I can tell, ever, among cached objects and their former references in a JVM outside the cache per se. I.e. the deserializer does not do a sweep of the entire JVM address space to fix identity problems.

This is not necessarily a bad thing when the cache is used as a read-mostly, shared data cache backing some external data with a well-controlled update convention.

A Javaspace does not have this problem because of a simplifying specification -- Javaspaces do not deal with object identity in JVMs. You always get a new object. If you want to deal with identity then code it yourself in the Entry objects. But really don't do that very much!

That is different, and maybe not what you'd want at first. But that may indicate your not using the best mechanism for your problem or you're not thinking about the mechanism the best way yet. This is one of those "architectural constraints" that seem to get in your way, but actually can simplify the solution to a problem for certain classes of problems. E.g. when the problem is "coordination" of processing rather than "clustering" of read-mostly data.

Yes?

Tuesday, December 19, 2006

Deliberately Misguiding Windows Me

From Information Week. I have a computer at home my wife uses. She needs Windows, the PC is fine, and won't even run XP. So it runs Windows 2000. (And every version of Linux up to the most recent Ubuntu and Suse! But she needs to boot into Windows.) We all know its "VersionNT" under the hood. Not that I am looking to run MSFT Defender, but this is just silly. $10 billion USD at a minimum spent on Vista! Unlikely I'll ever have it in the house. At some point I'll move her Windows 2000 and some other XP systems my kids run to virtual images on Linux and/or MacOSX, where they will remain in their formaldehyde virtually forever.

As other new products emerge from Microsoft in 2007 and beyond, more and more of them are likely to leave Windows 2000 out of the party. Which of these installation restrictions are caused by a real lack of capabilities in Windows 2000, however? Are any of them merely a "squeeze play" by Microsoft to convince buyers that it's necessary to immediately upgrade all PCs to Vista and all servers to Server 2003 or the forthcoming Longhorn Server?

One example of this conundrum is Microsoft's Windows Defender program. This antispyware program can be downloaded for free, but it will only install on Windows XP, Server 2003, and higher. The application won't install on Windows 2000, according to Microsoft's own product documentation.

Users have reported, however, that this is simply an artificial rule built into the Installshield package that copies Defender files to disk.

The installer contains a condition defined as VersionNT > 500. (Windows 2000 is technically considered version 5.0 of Windows NT.) Admins who've removed this condition using Orca, an Installshield editor, say Defender then installs and runs fine on Windows 2000.

Saturday, December 16, 2006

Em

Alright I've been tagged by Dan Creswell. I just came across this tag thing a few days ago. What to say... I'll be borrowing some ideas from others, so you may recognize the patterns but hopefully not the specific content.

  1. I was a Frank Lloyd Wright fanatic in high school. I was in the school of architecture at The Ohio State University (that's the proper name folks) for a couple of years. This was 1979-1981, on the heels of the energy crisis of the time, and I wanted to build solar houses. The problem was I didn't really know how to think yet and decided to explore other things.
  2. Although I played Oregon Trail on a teletype and pong on a TV, I didn't even know what a computer was until I left the school of architecture in '81. I was searching for something and two friends were CS students and worked at this small company in a house near campus. They worked odd hours and the atmosphere was relaxed, so I thought something must be up.
  3. I attended a very small high school in Ohio in the 1970's. This allowed me to get three varsity letters: football, track, and tennis. My best memory of that time though is writing a report on "The Arms of Krupp" about the international arms trade through the centuries. That kind of took my teachers by surprise.
  4. I was a roadie for a band for a couple of years and ended up meeting and marrying one of the singers. I went on two east coast tours with them. The most interesting place we played was the mall in the Pentagon.
  5. I lean towards "decentralized, worker-owned, market-socialism".
Please to be tagging Ian Cartwright, Mike Herrick, James Robertson, Mark Watson, and Steve Dekorte.

Blog Archive

About Me

Portland, Oregon, United States
I'm usually writing from my favorite location on the planet, the pacific northwest of the u.s. I write for myself only and unless otherwise specified my posts here should not be taken as representing an official position of my employer. Contact me at my gee mail account, username patrickdlogan.