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

Search This Blog

Sunday, December 31, 2006

The Great Beyond

Someone's been to the mountaintop...

Fiji has nothing on Vienna, which is purported to feature a complete overhaul of the OS, including a break in compatibility with "all applications," though hopefully Microsoft will have some Apple-esque transition schemes in place before that time comes. The fresh beginning will give Microsoft more OS-building freedom than it has had in a long time, but right now it sounds like they're a bit too excited about this: Vienna will supposedly do away with the Start Menu, toolbars and menus in favor of some sort of pie-menu interface, WinFS-to-the-core and search, potentially leaving long time users stranded with a brand new interface to learn from the ground up.

The OS will also feature beefy speech support, along with a sandbox mode for running non-managed code without risking your security. Much of this is hearsay so far, and we're really hoping Microsoft doesn't go off the deep end with Vienna, but we're still curious to see what they have up their sleeves after being cooped up so long ironing out Vista bugs.

Remember, when Apple *bought* their "new foundation" code base it was already more than 10 years old and had been in production in such places as Wall Street trading environments. Not to mention that the very core of that new foundation was many years older than that, and had the benefit of so many smart brains in multiple academic and industrial organizations around the world.

So who will Microsoft buy? This is the only viable option, is it not? (Assuming the rumor is true and the goal would be to deliver to production around 2012-2015.)

Update: On a related note, Kurt Cagle's prediction...

I think that Vista will be the denouement of the Gates’ era, and will likely prove the catalyst for some major senior level bloodletting and organizational redefinition. Part of this comes from the question of whether in Microsoft’s efforts to define the next big operating systems they kind of lost sight of the question of whether investing in a new OS was really the best strategy moving forward.

Ford: No, Not *That* Ford

From Market Watch...

Ford and Microsoft will jointly announce the Sync initiative at the Detroit auto show and the Consumer Electronics Show in Las Vegas...

While the Sync system is complex...

Enough said.

Wii-orld of Warcraft

A You Tube of some crazy hacker guy playing World of Warcraft using the Wii remote.

(You realize that WoW is *not* running on a Wii game machine, eh?)

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.

Accountant Wanted

From the San Jose Mercury News (via the Seattle Times)...

In an interview with Microsoft Chief Executive Steve Ballmer a few weeks ago, I asked if he had added up how much money it cost to develop Vista. He laughed, "I can't say I have. It would be impossible to count up. ... I'm sure it's a lot."

If we assume Microsoft's costs per employee are about $200,000 a year, the estimated payroll costs alone for Vista hover around $10 billion.

This is incomprehensible. A CEO has no idea how much his most significant product in six years cost to build.

Then the other incomprehensible "tidbit" is that it cost at least $10 billion USD. And they did not even get a new operating system out of it. The new product is really a face lift and some bug fixes on an aging infrastructure.

In light of this the stock price should be significantly lower. Software companies are difficult to invest in, and MSFT has to be one of the most difficult.

Friday, December 15, 2006

Sign of Success?

Headline: "Nintendo Recalls 3.2 Mil. Wii Wrist Straps"

Well, people are enthusiastic at the least! A sign of success? Mistakes were made, as it were.

We've had no trouble with either of our two controllers. But we will replace them with the stronger straps to be on the safe side.

My kids are going to be thrilled to find the wind storm last night resulted in no school today. Hey, kids: just watch out for those flying controllers on your day off!

Thursday, December 14, 2006

Singly Cellular

Final Update:

This is my final update to this post. I will start a new one on some related topics. This update is just pointing out a new comment below from Brian Oliver of Tangosol.

The comment is fairly lengthy so I will not pull anything out here into a quote. I recommend reading it. There is good technical content I should put into another post.

The one thing I will say here is: my blog will not become a forum for vendors to pick on each other. It's not there yet, although it is walking the line. I simply will not approve your comments if I don't see them contributing to my technical interests.

This is my blog. I have spoken.

:-)

Reading Brian's comment one might get the impression any misunderstandings I have of Tangosol come from a competitor. That is not the case. I have met with Tangosol people in person. Any misunderstandings come from them.

:-)

Just *kidding*!!! Actually I have met with them, and they have a number of questions they're following up on. The misunderstandings are mine alone.

End Final Update

The notion that Jini/Javaspaces and Tangosol Coherence are direct competitors seems to come up fairly often. At least from the Tangosol folks. I think that's because Tangosol and Gigaspaces compete in the scalability market. Gigaspaces sells their non-standard features to the performance-challenged... update-in-place, etc.

But this seems to ignore the Jini part of Jini/Javaspaces as well as most of what a Javaspace would be used for. That gets short-shrift...

If the benefits of an organic model sound familiar, then you're probably already using the world's most innovative distributed system. If you're still struggling with traditional exception-based or recovery-based approaches to distributed systems (e.g. CORBA, JINI, RMI), then you have my deepest sympathy, but it's not too late to switch.
I will ignore the obvious red herrings in CORBA and RMI. But as for Jini...

I would really like to see how Tangosol Coherence lines up against all the things in Jini. Coherence is a distributed/shared data cache. One would have to establish all kinds of conventions to get the cache and its contents to do Jini-like things. Coherence is fairly proprietary as well, but ignore that for now.

Maybe the message is Jini-like things are not necessary. That seems to assume everything you need is in your cluster of Coherence-loaded JVMs. Coherence has some nice features, even for implementing Javaspaces and other standard capabilities above it. But that's not the claim being made over and again. The claim seems to be: you don't need Jini because our clustered cache is better.

Apples and oranges? I'm looking for better answers than that if someone can point me to an in-depth Jini/Javaspaces vs. Coherence comparison.

Update 1: btw there is nothing like getting up in the morning looking forward to working with the people you sit with, and then hearing later in the day how amazed the CIO and all kinds of people are with the team's results. We get to do good stuff that counts, no BS.

Update 2: Dan Creswell comments below, lending to my suspicions...

Right, so if you are under the impression that all you do with Jini/JS is build compute servers/farms, then you might assume this equivalence.

Update 3: Ian Cartwright comments below about conventional and unconventional uses of Jini/Javaspaces. He includes a link to an interesting combination of OSGi and Jini...

Newton makes use of OSGi for wiring up composites within a single JVM and Jini technology for tracking and wiring up dependencies between composites in different JVMs
OSGi is what Eclipse uses to wire independent objects into its JVM. Some folks on the team were looking at that for a related effort.

Update 4: Nati Shalom of Gigaspaces confirms the emerging consensus that Jini and caches complement each other, and a Javaspace can be used as a kind of cache, although for other uses as well. As Dan Creswell wrote somewhere, caches tend to have more reads than writes, while javaspaces (when used for coordination rather than as a cache) tend to have more takes and writes, fewer reads. A quote from Nati's comment...

If you’re building an SOA application, you'll need more then a cache. In fact, a cache gives you almost nothing on that regard. You will need a Service framework, which is what Jini provides. A service framework deals with how you discover, find services, invoke them, make them secure, manage their life cycle, etc.
Another part of his comment refers to the Rio extension to Jini/Javaspaces, an interesting service management framework. All open source under Apache as well. Some of those ESB folks should look at it.

Tuesday, December 12, 2006

XSD -- XML Schema Deterioration

Catching up: Ian Cartwright goes into some concrete examples about XSDs, why they are undesirable, and how to cope with them. He also addresses related serialization problems.

It hardly seems like a year ago, but it is close, when Ian was over here from the UK with Paul Hammant working with a group of us down in sunny California on fun stuff like this.

Fixed That One

Randall Scarberry displays the joys of shared memory concurrency in this article on Java...

At some point while reading this, you've probably wondered about what synchronization issues might be encountered in SMT adaptation. I encountered two with ConcurrentKMeans, both in the nested class ProtoCluster, which is a class K-means uses to track intermediate clustering results. It was clear to me that something was wrong, because ConcurrentKMeans gave results different from BasicKMeans even though it was using the same N, K, and random seed. I ran it several times, occasionally getting an ArrayIndexOutOfBoundsException originating from the ProtoCluster method add(int ndx). Then the obvious dawned on me: multiple threads were calling an unsynchronized method. (Doh!) The exception happened because one worker thread attempted to add a coordinate, while another thread was expanding the array holding the coordinate indices. Simply adding the synchronized modifier to the add(int ndx) method definition fixed the problem.
OK, fixed *that* one. Any confidence that was the last one?

Not that concurrency is easy, but almost all programming languages exacerbate this with extremely outdated memory and concurrency models.

Don't you just love exacerbation?

Eventually we'll all move to shared-nothing languages of one stripe or another to implement concurrency, Erlang being one. Along the way we'll move to better shared nothing mechanisms for our current languages rather than threads, monitors, and such, spaces being one.

Wow! I mean WOW!

An interview with Pete Lacey...

Wow! I mean, WOW!

As I see it the [WS-*] is so large and complex, and the participants so tightly coupled, that scaling to even enterprise levels is out of the question.... you will not be able to use this technology to build a fully distributed enterprise architecture.

I am shocked. I mean there is so much evidence to the contrary. Er, isn't there?

Prediction for 2007: the rush away from WS-* will look like the recent US election aftermath of Republicans running from Bush's Iraq War.

Friday, December 08, 2006

Good Luck Jon

Jon Udell decides to steer a big ship...

Bottom line: This isn't your father's -- or maybe your older brother's or sister's -- Microsoft.
Good luck Jon. Please don't join the list of the disappeared.

Where is Ozzie? Box? Cunningham was out of sight during his tenure.

How many good people does it take to create this new Microsoft? The world may never find out.

Tuesday, December 05, 2006

Hey Kids Rock On

James Robertson relays a presentation by Niall Ross...

The demo Niall is showing is pretty cool - using rewrite rules and a port of Store for Glorp to VW 3, he's replicating code from VW 3 into a Store repository, and then reconciling it in VW 7.x. Another cool thing - Niall and a few other people have extended the rewrite engine piece of the RB with menus, in order to make it easier to use.
Another reason why Smalltalk especially, and dynamic languages generally, win. Not likely in Java, eh? No wonder they want duck typing.

Not Necessarily The Good News

On the use of XSDs, Bob DuCharme writes...

If the bad news is that the majority of XML developers have picked an ugly, convoluted syntax that is difficult to maintain when they store metadata about their types, the good news is that at least they're storing metadata about their types in parsable XML.
That's not necessarily good news if the unwanted side effects of using XSDs gunk up your systems. The one cannot necessarily make up for the other. It is not just about "ugly syntax", nor is it even about ugly syntax at all.

The problems lie in the lack of expressiveness (semantics more than syntax) and the unnecessary dependencies XSDs can ripple through one's systems if one is not exceedingly careful. Such care is not often promoted by tools based on XSDs, yet in this realm people tend to rely on tools much more than wisdom.

Kill Java

Some people apparently want to kill Java. Hey, I am not entirely against that idea, but it should be deliberate.

In this case, some people want to continue adding to Java until it becomes nothing by trying to be everything. Java is essentially what it will be. Yeah, generics, closures, etc. are arguably helping or hurting depending on the situation... that's not what I am talking about. Read on from Paul Browne...

Now that you have Java in your open source toy bag, can I have Duck Typing please?
Yeah, right. Do you understand either Java or duck typing?
P.S. I still want to keep compile time type checking to make sure I don’t make any mistakes.
OK. Apparently not.

Here you go: if you want Java and duck typing, use Jython or JRuby or Rhino/Javascript or...

Do not add duck typing to Java. Ever. Period. End of sentence.

Thursday, November 30, 2006

Today's Englebartian Shake Up

This proclamation from bit-tech.net...

DirectX 10 is probably the most important revolution in games development, at least since the introduction of the programmable shader in DirectX 8.0. Because of the way that Microsoft has designed the new driver model, DirectX 10 will only be available for Windows Vista users and there will not be a version released for Windows XP. Along with DirectX 10, Windows Vista will come with DirectX 9.0Ex – this is because pre-DirectX 10 hardware will not work under the new API due to the complete overhaul.
Of course Wii disagree. Everyone expects graphics to get better on all systems, this is not just a Vista thing.

The *true* Revolution is how the Wii's remote controller changes forever the human-machine experience at $250 USD complete. You may not like gaming, you may like Sony more than Nintendo. Nevertheless, Nintendo has taken human-machine interaction in general to an entirely new *practical* level for everyone.

This is an Englebartian shake-up.

Sorry. That's just the way it is. Period. End of sentence.

Friday, November 24, 2006

Nothing Is All Or Nothing

(via Stefan Tilkov)

A sorry commentary on the state of the software industry from Steve Jones...

SAP, Oracle, IBM and Microsoft... These are the companies who your CIO goes to visit and sits through dinners and presentations on their product strategy, and what they are pushing is WS-* in all its ugly glory. This means that in 3 years time you 100% will have WS-* in your company, in a company you work with, or in a company you want to work with.
Don't worry about WS-Dominance. It will never arrive. But beware of WS-Stupidity.

Having some large software vendor or partner inject SOAP into your data center is no reason to allow it to infect all of *your* work. Push WS-Complexity out to just those edges whose outside forces require it. Stop the enemy at the gates. Make the rest as simple as possible. Always assert your control over your own architecture or you will be a loser.

That's what we're doing anyway. We have a CIO that believes in smart people, incremental development, and lasting systems.

Thursday, November 23, 2006

Yow. More Wii Fun

Maybe you're tired of my just blathering about the Wii. My son's been bogarting that Wii, but I reached another milestone with it last night. We played doubles in Wii sports. That another level of gaming fun that I don't believe can be matched with any other system.

Sorry Microsoft. Sorry Sony. The Nintendo Wii is the best thing in gaming in the last 20 years, and you have a ton of work to do to catch up.

Last night my son and I bowled, played tennis, golfed, etc. And not with some artificial hand held, buttony, doo-dah thing.

We were actually swinging rackets, clubs, putting spin on a bowling ball with our wrists, and playing *together*.

Yow. The experience playing with others is even so remarkably more amazing than playing solo.

Wednesday, November 22, 2006

Just In Time For Christmas

Everyone needs this combination under the tree... sexbuntu and christianbuntu!

If only Rev. Ted Haggard had known about these.

Monday, November 20, 2006

Design and Execution

I'd like to see Nintendo and Apple compare notes. Two brilliant design and execution companies that would appear to complement each other well.

Meanwhile the XBox 360 is ho-hum, Microsoft blows Vista, blows "Zune" (ugh - even the name), and blows yet again their understanding of open source. Ballmer, with little to do apparently in actually *leading* a company, can only resort to threatening Linux.

My prediction -- Novel is not the next SCO. *Microsoft* is the next SCO. Albeit with billions more in the bank -- they are a company desperate for what they've never been:

-- a design and execution company.

Sunday, November 19, 2006

Wii in the House

The Wii is in the house. Game Crazy had a midnight event just for the people who pre-ordered. So we got there way early, played the demo Wii, and hung out with a small number of excited employees and customers.

We got the Wii, an extra wiimote controller, a classic controller, four additional games (plus the sports game that comes with the box), some online points for classic games, etc. for a good $50+ USD under the base price of the PS3.

And on top of that we have an amazing game playing experience. Using the wiimote controller is like no other human-machine interaction I've experienced. Feel the gentle "bump" as you traverse from option to option in a dialog, e.g. while building your online characters in the "Me Channel".

Something I learned now that I've played a good bit more since my first experience a few weeks ago: driving with the controller is something like the steering wheel, but the more I "drive" with it, the more I find myself balancing the controller in my hands and tilting the weight of it one way or another to keep the truck on course. This is not really a steering wheel, but close -- it is more of a natural analog for the truck's movement on the screen. More natural than a joy stick -- there is a "feel" for the movement, gently letting the fairly lightweight controller tilt around.

Easy. Smooth. Awe inspiring... you may be a fan of the multiple processors displaying all the PS3 graphics (although I have yet to hear of a purchaser who did not sell their purchase on ebay), but I have trouble imagining someone not coming away from a session with the Wii not thinking this is a big step toward a new style of machine interaction.

Nintendo knocked this one *way* out of the park. The feel is generations ahead of the 360 and I imagine the PS3. Whatever the Wii lacks in graphics processing will surely catch up over time with hardware and software improvements. At $250 per box, I can easily buy another box next Christmas with more graphics and still be on par with the initial cost of the competitors. Nintendo made the right investments.

Monday, November 06, 2006

Diesels

Ralph Johnson writes...

...the Lisp people have been making DSLs for 20 years. I learned about them about 20 years ago, and the Lisp people had been doing it for 20 years before that, so I think they have been doing it for 40 years. Neverthless, DSLs are only starting to become a hot topic.
He also recommends Martin Fowler as a source (written and seen/spoken) for more information and suggests...
These are ideas that need to become ubiquitous.

Visualizing Grammars

Nick Sieger created graphs of the grammars for Ruby, Java 1.5, and Javascript. The Ruby grammar was created from parse.y from the original C implementation. I'm not sure what he used for the other two, i.e. whether they are from "real" grammars.

Nick notices the primary node as the center of complexity for the Ruby grammar. I wonder how a more incrementally derived, top-down parser might distribute that complexity, e.g. one built for a "packrat parser".

Saturday, November 04, 2006

Multitasking Meetings

Apparently McGovern's enterprisey approach to enterprises is everybit the equal of his enterprisey approach to software. There is at least one large semicondictor company that has yet to learn Jame Robertson's counter-lesson...

If you spend time multitasking in meetings, then the correct answer is that you don't need to be in those meetings. Full stop, period.
Thing is, it used to be that company's culture to eschew this symptom. Every employee was trained in a *required* "Effective Meetings" course to question their role in each meeting they're invited to. Years have passed since I saw that practiced at all widely.

Naming Conventions

According to this, my stripper name is:

Dinger Cherrywood

...and my Star Wars name is

Patlo Baday

Thursday, November 02, 2006

Some Other Wii Pictures

Some more pictures from playing the Wii last Monday...

The Wii is Alive -- My Hands On

A sighting (via James Robertson).

But hey, I got my hands on one last Monday. I played WarioWare. My son and a friend played that, plus whatever that off-roading game is, the sports that come with the Wii, and, after the two of them gathered signatures of others in the room(!) they petitioned the Nintendo guy to go to his car and get Zelda / Twighlight Princess. And they were rewarded (see my somewhat fuzzy image).

All I can say is, well, the kids took to the Wiimote controller like they'd been playing for years. I took a little more effort because I don't really play many games even with today's controllers. But the Wiimote controller really is going to make me want to play more games.

The Wii is definitely going to be the system to have this holiday season.

Friday, October 27, 2006

Game Changer

David Berlind on "Why IBM’s patent suit against Amazon could be bad news for the entire Web"...

IBM's patent infringement suit against Amazon is the equivalent of Big Blue saying "Excuse me everyone, we've got something very important to say." Very important indeed if you own or operate a Web site with advertisements on it.
One way or another this deal seems destined to change the game. Which game?

It could change the Internet or at least "internet commerce".

Or it could change the patent game by realizing programmers do nothing *but* innovate and we are bound to invent very similar, very basic mechanisms for a world which has never been inhabited.

Could a patent have ever been granted for "the wheel"? Under current law, apparently. But isn't "the wheel" considered a fundamental concept, almost a law of nature in the physical world?

Shouldn't "online advertisements" be considered a fundamental concept, almost a law of nature of life online?

Computer Science Doldrums

Andres Valloud writes...

Roger teaches Smalltalk at SDSU (as you can see from his link). Here are some interesting things I did not know...

Enrollment is way down, there are 4,000 students for about 10,000 places. Computer science, in particular, is down 40% since the dot com bubble bust. This figure is consistent with other campuses.

I can back this up with a recent visit my son and I made to another university's CS department. At least in some cases, CS appears to be in the doldrums. At this point my son is considering a CS minor, probably not a major.

For someone considering "applied computer science", i.e. programming, I think a minor is probably a good choice. Way back when I was in school programming had yet to make a wide and visible impact in most other disciplines. Programming has always embraced people from other backgrounds. I think the minor approach is an extension of that, and an acknowledgement that application in some domain is at least as dependent on domain knowledge as on programming knowledge.

Thursday, October 26, 2006

Comment Moderation

I just noticed a backlog of comments to moderate going back to early October. I thought I'd checked since then. Anyway, I've been through the list. I apologize to folks who left comments several weeks ago, only to have them stall in my queue.

Wednesday, October 25, 2006

Ruby Might Be Sucking Less?

Update:

Ruby's primary new implementation may simply(?) have continuations temporarily out of order. I'm not sure that's a good sign, but OK.

Better to build continuation support in from the beginning, I'd think. There are more than 25 years of good papers discussing various strategies, and plenty of good implementations to borrow from.

End Update

I've heard some horrendous things about the current implementation of Ruby. But there is a new implementation more or less underway. But, yeah, let's don't do continuations. They're hard. And besides those VMs for real languages like Java's and C#'s don't do them. (Nothing to see here!)

And then Matz and Koichi dropped the bomb: Ruby 2.0 would support neither continuations nor green threads.
Besides what are continuations good for? Piffle.

And green threads? That just sounds sick. Who could imagine anything running well using non-native threads?

Seriously, Ruby is in dire need of a decent implementation. The JVM and the CLR are fine for what they are, old legacy. But Ruby needs its own *modern* implementation.

Tuesday, October 24, 2006

Lisp on the DS

A really interesting thread on the Gambit Scheme mailing list. Andrew Lentvorski is porting Gambit to the Nintendo DS handheld. He has a way to go, working on interrupts and threading. But the signs of life so far are really surprising to me at least.

Gambit ports fairly easily to Unix-like systems. The Nintendo DS does not strike me as a Unix-like system. Actually it turns out Marc Feeley has abstracted more than Unix out of the runtime system. He's had bare metal somewhat in mind but not much actual porting before this.

Something like Squeak Smalltalk ports to bare metal fairly deliberately. The core of Squeak is written in a subset of Squeak and implements a VM. Gambit on the other hand is a fairly aggressive optimizing compiler (and interpreter) written in C and Gambit Scheme and generates C.

The excercise is sure to enable other bare metal or nearly so ports of Gambit down the road. Which paves the way for anything riding on top of Scheme as well. As Andrew points out that includes Termite, but could go far beyond that over time.

Andrew has designs on using the Nintendo DS wifi capability. Gambit serializes continuations for the network. The possibilities multiply.

Friday, October 20, 2006

Emacs

Phil Windley knows...

If your editor isn't programmable, you're missing out!

Monday, October 16, 2006

Of Course

Nat Torkington in the O'Relly Radar gets the future about right...

Oh no, banks are still writing Java code—and their new programmers only want to use Smalltalk...

And there'll still be 5% of the marketplace saying of whatever new language is being created, "of course, this was first done more elegantly in Lisp."

Saturday, October 14, 2006

Messaging the Way God Intended

I like this characterization from James Robertson. It really does go back to before Alan Kay conceived of Smalltalk, Kay observed several distinct things behaving similarly, like the Burroughs B5000 and biological cells. And now HTTP is just like that. HTTP is a basic message passing mechanism that can be used in all kinds of situations. It's not ideal but then what is? HTTP is wide spread and we're seeing it spread even further than current conceptions. Languages are becoming more dynamic, and so is messaging on all kinds of networks. Spinning up a new process for passing messages via HTTP and XMPP has to become easier still.

Smalltalk arrived on the message passing frontier a long, long time ago. In a lot of ways, HTTP messaging resembles what happens in Smalltalk - you send the server a message, and if it doesn't understand, it sends you back an appropriate HTTP error message (kind of like a DNU in Smalltalk). The server doesn't crash, it doesn't throw up its hands and stop; rather, it awaits the next message.

This kind of architecture has to be flexible, and growable at runtime. Smalltalk has been that way since the beginning, and HTTP servers operate in much the same way - you can add messages that they'll understand in well understood, dynamic ways. It's kind of nice to see people understanding this strength :)

Thursday, October 12, 2006

APEX?

APEX == A Programming language EXclusively for who?

I must be missing something. Why on earth would anyone invest their information systems in a proprietary hosted language?

Please clue me in. And why is this guy doing the seig heil? 8^)

From zdnet...

Mark Gorenberg... hailed Apex as the most significant announcement since Sybase announced stored procedures.
Really. I am flabbergasted.

Sunday, October 08, 2006

(Harumph)

Blaine Buxton bellows...

I feel like we get lumped in with the grumpy Lispers.
(Harumph)

Saturday, October 07, 2006

All My Languages Use an Image File

Blaine points out a fantastic feature Smalltalk has had (yes, since the 1970s), that more language systems should emulate.

My favorite part of the night though was the reaction I got when I shut down the image, restarted it, and was at the exact point that I left it instantly. The power of image-based development compels thee!
But the thing is *all* my languages are now image based. Ever since I started using VMWare, my entire machine's state is saved and restored, rolled forward with snapshots, linked and branched, etc.

It's not all the way there as with Smalltalk, e.g. no browsing and selecting from "change sets", etc. But it is pretty useful.

I bet other people using virtual machines like VMWare had no idea their languages were "image based"! What a weird thing. Who'd want that? 8^)

Wednesday, October 04, 2006

Building Any System

From Curtis Poe, "Building Large Systems"...

Here’s a little secret that many “test-infected” developers know: testing makes you a better programmer. It’s not just that your code works. It’s that if you find something is hard to test, that’s a code smell. Maybe your superWunderFunction() which takes 13 arguments isn’t designed terribly well. That’s not saying that all hard-to-test code has a design flaw... but as you test more, you start writing code that’s easier to test...

When you start writing code that is easier to test, do you know what you’re doing? You’re eating your own dog food. You’re using your code and you start writing code which is easier to use. It starts becoming better-designed code. As an added benefit, if programmers are unsure how to use your code, they can always read the tests. Tests are not a substitute for documentation, but they are an excellent supplement to it.

Matt Drudge - Pedophile? LOL

Well, that might be going overboard. He only supports pedophiles with their habit when they are Republican congressmen.

There's a difference, right?

On the October 2 edition of his nationally syndicated radio program, Internet gossip Matt Drudge stated that Foley's sexually explicit alleged communication with a minor through an instant-messenger program "wasn't coerced." Drudge went on to say that "the kid was having fun with this" because the alleged conversation included "[t]hese LOLs throughout the entire conversation, these 'laugh out louds.' " Drudge even went so far as to accuse the underage former pages -- whom he twice referred to as "beasts" -- of "egging the Congressman on" during their alleged conversations, claiming that "[t]hese kids were playing Foley for everything he was worth," as Media Matters for America noted.
But this coverup is across the board with Republican politicians (Gingrich, et al.), spokespeople (Snow, et al.), and media celebreties (Limbaugh, et al.).

I would hang my head and stay inside for a week if I were a self-respecting Republican right now. This is a disgrace so far beyond that previous Clinton disgrace. Where is the outrage at the acts? Where is the outrage at the cover-up? Where is the outrage at the cover-up of the cover-up? We're talking about *children*.

Vote the other ticket in the election. Then they get to investigate everyone for the next couple of years to find out what's really been going on in congress and the administration.

And how about that congressman (Reynolds?) who brought some "kids from his community" to his press conference so the media could not ask detailed questions about sex?

LOL indeed.

Tuesday, October 03, 2006

When All Else Fails

There is a lot of fear about dynamic languages in the comments at James Robertson's blog (and at Tim Bray's).

I recommend these handy little things called "tests". When all else fails, do the right thing.

The devil is out to steer you onto the wrong path.

I'm convinced that they are not suited for large-scale software development...
I guess if I listened to the devil, he'd have me recall all those large-scale applications I've written over the last 25 years that have designed electronics, moved things through factories, dispatched equipment in hurricanes, and so on because they're not written in a suitable language.

Beware the devil. Over on the devil's own blog...

I think there [a solution]: dynamic languages that allow you to type your variables if you feel like it, and the only language that I can think of that does that at the moment is Groovy.
Well, let's see. Common Lisp had that about 22 years ago. Maybe there's something to learn from a couple decades of real experience? Conclusion? Feh.

This is the devil that used to want you to program in C, not Smalltalk. Then C++, not Smalltalk. Then Java, not Smalltalk. Now he's willing to give you Smalltalk if you type your objects once in a while.

Don't listen to the devil. Write tests in simple, dynamic languages. Do good work. Keep the devil at bay.

Sunday, October 01, 2006

Shades of Kelsey

Also from the recent Scheme Workshop... "An Incremental Approach to Compiler Construction"...

Real-life compilers are too complex to serve as an educational tool. And the gap between real-life compilers and the educational toy compilers is too wide. The novice compiler writer stands puzzled facing an impenetrable barrier, “better write an interpreter instead.”

The goal of this paper is to break that barrier. We show that building a compiler can be as easy as building an interpreter.

Termite Part Deux

From the recent Scheme Workshop, here is the follow-up for Termite, Concurrency Oriented Programming in Termite Scheme (pdf).

Our system is well suited for building custom protocols and abstractions for distributed computation. Its open network model allows for the building of non-centralized distributed applications. The possibility of failure is reflected in the model, and ways to handle failure are available in the language. We exploit the existence of first class continuations in order to allow the expression of high-level concepts such as process migration.

Are You Not Entertained?

From the Republican House's torture bill (again via Steve D.)...

"No court, justice, or judge shall have jurisdiction to hear or consider any claim or cause of action whatsoever, including any action pending on or filed after the date of the enactment of the Military Commissions Act of 2006, relating to the prosecution, trial, or judgment of a military commission under this chapter, including challenges to the lawfulness of procedures of military commissions under this chapter."
Let's remember back a few years...
If this were a dictatorship, it'd be a heck of a lot easier, just so long as I'm the dictator. -George W. Bush
The next couple of years will make the highlight reels of American politics. Someone's going down, but it is not yet clear who. So far it looks like Lady Liberty is heading for the floor.

Saturday, September 30, 2006

Ho Hum? Think Again

Steve Dekorte draws the line...

If there were ever a question of which party is more evil (certainly a question on which reasonable people could, in the past, disagree), I think it's been put to rest today.
Our representatives swear an oath to protect and defend the constution, not to pass legislation to keep their party's president out of jail.

Friday, September 29, 2006

I'm An Isolationist - You Probably Are Too

I rec'd an email about my recent thing to do with the "shared nothing" vs. "shared memory" models, JRuby, et al. being crammed into the JVM, CLR, Parrot, and so on.

The point of the email is well taken. Essentially JRuby is a good thing because the JVM is widely adopted and accepted in enterprises. This is the vehicle that will allow JRuby to be widely adopted. I agree with that approach, and do think JRuby, Jython, IronPython, and related languages are all very good things to have.

I'd rather have a widely adopted shared-nothing environment. That is the model of the future. The shared-memory model *is* the current model but there is plenty of evidence we've been done with it for some time. Another five years or so will be necessary for this to really sink in.

But we have JRuby now. Yeah, I'll program in JRuby today. At the same time I will push for something better, and expect to get it about 2010 or so.

Let's be clear that the JVM has been lurching toward a shared-nothing model already for well over five years.

The servlet model, the EJB model, the Jini model... these are all in various ways attempting to provide semi-shared-nothing models so we can each contribute our own isolated parts to the whole. Unfortunately they're each anachronistic, one-off, partial solutions. JSR 121 is attempting to make this even more general for all kinds of pojo scenarios.

Given the isolation model that just comes for free with Erlang, the vast majority of the complexity and variation of these lurches toward isolation for Java would just go away. (Erlang itself has a *little* cruft but that's nitpicking.)

I've been through the garbage collection wars, the dynamic typing wars. I think we'll get better isolation more easily but so far it remains a subtle point in the community at large.

Iceman: "You like to work alone. I've heard that about you."

Update: A Fellow traveller writes...

Yes, you can layer a shared nothing architecture on top of a language that does not hand-hold you towards a shared nothing design, but the scope for error is huge. Remember the days of malloc anyone? Same idea.
I don't think it is quite that drastic. Yes, I lean toward semi-functional languages like Scheme and Erlang, mostly Scheme because you can more easily write all kinds of languages in Scheme. Gambit Scheme is a good candidate platform for building mult-language shared-nothing runtimes.

But even "heavily-imperative" languages like Smalltalk, Ruby, and Python can take much better advantage of a shared-nothing runtime model. These implementations just need to be able to run more than one environment within an OS process. Kind of like doing a "fork" that forks an isolated process within the current OS process. Now you have two or more Smalltalks, Rubies, Pythons, Javas, etc. running in that one OS process, isolated one from another.

When these are truly isolated and efficient then nothing should prevent an OS process from mixing these languages "sub-processes" within the same OS process. These are not new ideas, but have never really been fully explored. Most of the bits and pieces are in place. It's just around the corner.

Thursday, September 28, 2006

The Wiki Way and Other Ways

OK -- two more things about work. First, this... the past is the future, and/or vice versa...

And the wiki... I have used several wikis in various settings in the past, but this team is using its wiki really well so far, with no sign of letting up.

We'll have to get Mr. Panic From Fuzzy to explain "Page Slap" sometime.

Less Bigness

Dan Cresswell wonders...

I just wonder if our systems would be less big and less complex if we admitted we don't understand all things and stopped making so many incorrect assumptions about how things should be done?

Monday, September 25, 2006

The New(?) Architecture of Redisplay

I came across recently an email message on Tweak (a GUI for Squeak Smalltalk) and display refreshes in the presence of asynchronous processes...

So why not use processes?! Looking back at some older conversation about using multiple processes it appears to me that we've been holding back on it because of synchronization issues. While this is certainly understandable (we all know how hard process synchronization can be) I think that we can solve this problem in a very simple way that gives us the best of all worlds.

Here it is:

The basic problem that we have when using multiple processes is that we can't always say for sure when they are run. Because of this, the system may activate some process while we're in the midst of redrawing the screen, handling events, executing some (interfering) other process etc.

Yes, to multiple processes.

I developed some CAD tools a couple different times way back when, that had to deal with distributed processes and asynchronous messages. More recently, but still seven years ago (dear lord, really!) I developed an example graphics editor in Erlang and Tk. Today I would approach an intraprocess design the same as the distributed. First and foremost -- get rid of shared memory and the synchronization issues go way down. Synchronization becomes a design tool rather than an accident waiting to be found, or a burden of self-over-protection.

Here's the real news... there is a *lot* to learn from understanding how Emacs works.

Emacs got the architecture of asynchronous redisplay right 25-30 years ago when it was dealing with the asynchronous nature of text redisplay in the presence of asynchronous keyboard interrupts. The "command pattern" and graphics, etc. are just elaborations on the theme.

Another thing Emacs got right is keyboard maps from keys to functions. A "mode" is a more or less different map from keys to functions. A "modal dialog" is just pushing a new mode map into the keyboard process for some period of time. Emacs embodies a pretty good "model-view-controller" separation.

Processes and display refresh -- expand the Emacs way into true multi-processing. One process owns a display device. Other processes, local or otherwise, may be able to send it display update events. Those messages may have priorities, or rather the display process may understand which collaborators have priorities.

The display process will always try to process the most important update message next. Display update may be postponed until some or all update messages have been processed. If there is a hope of getting through the message queue in time, then the display process will postpone a refresh until the queue is empty, otherwise some logic of when to stop postponing the refresh has to be coded.

Sunday, September 24, 2006

Virtual Fun

I'm really enjoying my new job. The team is a lot more fun than those I've been part of over the last few years. Partly because those teams in the recent past have been almost 100% "virtual" i.e. distributed. No matter how much good work you can get done "virtually" it is difficult to maintain a healthy "virtual" sense of humor, you can't walk to the coffee shop, or talk in the hallway. Distributed bases can work, but each base has to have a small set of people who see each other at least several times a week. The people, the atmosphere, and the work all make a difference too.

My current team is co-located *and* they have a sense of humor (senses of humor?). And they are very smart, and stuff. And they've watched Team America: World Police several more times than I have. (Me: Once, but I laughed my ass off enough for three viewings. Although now I *have* to get the unrated DVD version.)

This week as my manager reports we found a kindred spirit visiting from several thousand miles away in Belfast, over beers. They've done good stuff with virtualization, open source, etc. So we're looking forward to this Portland base working with the Belfast base on some common interests.

And I am looking forward to having a lot more fun, and working on interesting things with smart people. What a difference a few weeks make.

The Middle of the Road

Oh dear. Can we not leave well enough alone?

Getting It Through Not Understanding

Tim Bray on Ruby...

I’m already using method_missing, any language that doesn’t have that just seems crippled.
Welcome. We've been waiting for you. A helluva long time.

Thursday, September 21, 2006

iZunes

Apparently Microsoft is still adept at copying Apple's look and feel.

Friday, September 15, 2006

Jini Meeting

The jini meeting is being webcast and recorded. I've not seen it yet but the program has a number of interesting sessions.

Eight Ways

Ted...

Their benchmarks also show that many applications are not able to exploit 4 cores very well, never mind 8. Now, where did I leave that Erlang disk image....
We're busy cramming everything into a common language runtime. Shared memory, critical sections, locks, common object models... it's the wave of the future?

Well, it's a tsunami that is catching up with us while we're busy cramming everything into a common language runtime.

Update: Steve Dekorte writes that no language will save these high core count MISD systems from the Von Nuemann bottleneck.

But the advantage of a shared-nothing programming model like Erlang's is that systems can more easily accomodate multiple shared-memory cores as well as multiple shared-nothing nodes. The languages that assume there is no shared memory are better positioned to get around the Von Nuemann bottleneck.

Common language runtimes that assume shared-memory are a diversion at this point. But I think it will be another five years or so before the JVM and CLR leaders start to think about this. Ideas just take a long time to catch on. With JRuby and such now, we're seeing the beginning of the fruition of an idea that has been around as long as the JVM. The JVM itself was the fruition of UCSD Pascal byte code from the early 1980's.

From what I have seen the hardware manufacturers have a difficult time getting their heads around this direction too. They understand that a single, faster CPU is not going to sell. And so they understand the reason for putting multiple CPUs on a core. I am not sure they know what to do with them in software... Maybe web services?

Tuesday, September 12, 2006

Ruby and Strongtalk

Avi Bryant makes the connection between JRuby, Ruby performance generally, and how fast dynamic languages can really be, e.g. the Strongtalk implementation.

As it happens, the Strongtalk VM would make an excellent basis for the next generation Ruby VM. Given that Sun still employs some of the original Strongtalk engineers, and has just hired the JRuby guys, maybe they can make that happen?
It gets even better... Strongtalk was the precursor to the Java Hotspot runtime. Java is essentially already running a pretty good dynamic runtime under the hood. The language-specificness of the JVM just has to be peeled back a notch and Ruby (and Smalltalk, and Lisp) would be good to go. Or at least much better off than they are now.

Maybe a bit more than a notch. Please start peeling.

Then someone over at James Robertson's blog asks about the performance of a good dynamic dispatch mechanism relative to C++.

In general, Smalltalk can do message dispatch faster than C++.
Is that one of those in theory things?
The line was crossed some time ago when the nature of most C++ applications on the hardware at the time was better suited to dynamic dispatch. When you talk about "C++" once again you have to talk about which implementation. Some C++ implementations have been able to do a more dynamic dispatch (i.e. again implement a significant dynamic language mechanism) in order to get better performance than the more traditional vector-based fixed offset indexing.

Dynamic *will* continue to win more and more for most applications.

Quick Coffee Note

Yes, I am as excited about the recent JRuby and IronPython news as anyone. But...

If "shared nothing" is the right model, then why are we so happy about JRuby and IronPython?

Sunday, September 10, 2006

You Eye

James Robertson on something I've found true as well...

I rent [cars] on travel a fair bit. A decade ago, it took me less time to get out of the rental lot. Now, I always make sure to spend a few minutes locating things like the seat adjustment, the radio controls, the wipers, defroster... you get the picture.
I remember the first time I found myself driving with a "sports" transmission without purposely shifting into it, I was on the road and the damned thing wouldn't get out of first. So off to the side of the road where I spent a few minutes figuring out how the supposedly "automatic" transmission worked.

Saturday, September 09, 2006

I'm Sorry

Gregor confesses...

At a session about stealth I asked Jay Adelson, Digg.com's CEO) which company he is with. Oops. On the bright side he told me that once he arrived for a talk, entering as Larry Page was leaving the stage. Jay went on to introduce himself and finished with "and you work for…" Doesn't misery love company!
I'm sorry. Are we supposed to know who the hell is the CEO of digg?

Likewise I could not pick Larry Page out of a lineup, nor tell you the name of his partner.

Yes, they've done good stuff, way more than I ever hope to. Or if I do, I couldn't care one iota if you ever recognize me. Sorry.

Storm on the Horizon

Confession time...

I love You Tube, I guess of course. My oldest kid was showing me the series on how various movies *should* have ended.

I watch very little TV and never "reality" shows. But since I really like Storm Large from right here in Portland, I've been watching her You Tube clips from the rock star reality show this summer. (She is *way* beyond what little I could stand to see of her competitors, and I suspect at least as far beyond whatever talent the judges themselves have.)

In any case, this week one her songs was her original Storm and the Balls song, Ladylike. This song is at the top of any list of pop songs about womens liberation. I'd say there is "Respect" the way Aretha Franklin recorded it, combining "R-E-S-P-E-C-T" and "sock it to me" in the same lyrics. And then there is "Ladylike".

In the original R-rated lyrics, which would have cost a *lot* in fines to perform on American broadcast TV, she sings, "What the fuck is ladylike when ladies like to do what the fuck they like just like you?" A *little* bit more direct than Aretha Franklin was, but this is the 21st century vs. the 1960's. The verses of Ladylike go well beyond "Respect".

Nothing else by Helen Reddy or anyone comes to mind as really pushing the point as well as those two songs.

See the abbreviated You Tube PG video version or hear the Balls full PG and R recordings. The Balls versions are supposed to be on iTunes before too long.

Bond

I am with Graham on this Bond thing. I've not seen a new Bond film in over 20 years. Roger Moore was fun in the 70's but that stopped working before he did. Sean will always be the real Bond, but those films are so very dated and I can no longer stand to watch them.

Every glimpse I've seen of the new Bond has led me to believe the role could be recreated as something almost completely new. My hopes are way up for Casino Royale.

Thursday, September 07, 2006

On

Jon Udell on...

Way back in 2002, I thought Web services would be the vector for Internet-scale grid computing. It looks like I got that wrong. A Web service is a fairly general construct, but an entire virtual machine is far more general. And since Linux is the OS of choice for cloud-based virtual machines, last week’s suggestion that Microsoft get cracking on portable Avalon and open XAML makes even more sense this week.

And so

And so...

Make no mistake about it; if you do not find it now, you will repeat the same routines for myriad eons, a thousand times over again, following and picking up on objects that attract you.

Lin Chi (d 867)

And so

Sigh

A sigh for Jim (via Jon Udell)...

I wrote the first three versions of the IronPython compiler in Python, but today it's written in C#. Part of the reason is that now I understand it, so the values of prototyping, and the looser thinking that really helped a lot in the early days, don't really help as much any more. Also there are now more people working on the compiler, and there are some real benefits to the static typing, and the support you can get from Visual Studio.
Sigh.

Tuesday, August 29, 2006

Liberty

This is my first week at a new job with Liberty Mutual Insurance, Agency Markets.

I am very much going to be getting back to speed as a full-time developer for the first time in five-plus years. In recent years as an architect, instructor, and coach I've always found ways to remain hands-on and not too enterprisey for stretches at a time. It's not the same thing as working with a small group with a singular purpose.

That's something I've missed greatly... and so I've joined Mike Herrick's team here in Portland. They're just getting started on some extremely interesting open source ideas and new relationships in the open source community. You should read his blog, Panic From Fuzzy, as these things develop. I imagine I'll write here about OSS generally as I dive in, but much less so about the specifics of this new project unless I explicitly state so.

Portland is a hotbed for open source, and this group is going to be carrying it even further into the business world and specifically the very interesting world of insurance.

A Fine Artist

My uncle, Robert Bard, lives in Jamestown, Ohio with a group of friends who are all practicing independent living in spite of various disabilities. Their organization is Toward Independence, Inc. (My dad is on the board of directors.)

T.I. operates an art gallery, The Inner I, in Xenia, Ohio, if you are in the area. Now they have a gallery on-line and are putting together an on-line store as well.

My uncle started painting a number of years ago and has since received a lot of notice and has been in many exhibits around the state and reprinted on clothing, stationary, etc.

You can read more about my uncle and see some of his work in the on-line gallery.

Friday, August 18, 2006

Great Software

Phil Windley makes his own amendments to a list of great software.

As Phil believes, I also have to include Smalltalk on the list. I don't agree with the original author's rationale re: Java and some others on that list.

Other systems I'd consider for my top ten...

  • Lisp (esp. Lisp 1.5, Common Lisp, and Scheme)
  • Smalltalk
  • Erlang
  • Hypercard
  • Emacs (in various incarnations)
  • The Xerox Alto (incl. BitBlt, Ethernet, laser printing, WYSIWYG, etc.)
  • Englebart's Augment, nee NLS
  • Unix
  • The Web
  • The Orbit compiler for Scheme

Live Motion 3D Video Camera

Via O'Reilly Radar, Live Motion 3D Video Camera

Wednesday, August 16, 2006

pdx.st -- Portland Smalltalk September Meeting

Dane Jensen, et al. have scheduled the second monthly Portland Smalltalk meeting...

The next meeting's lined up, it will be at 7PM on September 12th (second tuesday of the month) at the McMenamins on NE Broadway (1504 NE Broadway, http://www.mcmenamins.com/index.php?loc=32)
The email list is at http://lists.pdx.st/listinfo.cgi/general-pdx.st

Dane also says about an IRC...

I'm setting up #pdx.st on irc.freenode.net for us now, but there's certainly no reason to wait until it's official.

The Twenty

Today is the 20th wedding anniversary for my wife and myself.

I'm just sayin'...

I love my wife very much. And my two boys.

I think that's worth a blog entry, at the very least.

Large Scale Change

Ward Cunningham in a recent interview...

I do have something new that is bugging me. Tom Love told me last week that he has found a free hand in staff change to be a necessity when doing large scale and fast paced agile conversions. This doesn't surprise me even though I remain committed to helping people adapt. The scary part Tom told me though was that the person most likely to go was often the person the team felt was most indispensable. I feigned a knowing smile as I agreed that I understood how that happens. But now I am not at all sure I know how experts fall into this trap of obstructionism. I want to figure it out though. There could be some small changes we could make that would make life much better for experts and the people around them.

Sunday, August 13, 2006

org.tiling.s3map.S3Map implements java.util.Map

Tom White does some tinkering...

It struck me that you could treat S3 as a big hashtable, so I tried writing an implementation of java.util.Map (built on the Amazon S3 Library for REST in Java) that uses S3 as its backing store...

So, what is it useful for? Well, I haven't actually had a use for it yet, but S3Map is really a non-transactional persistent datastore, so it could be used in many scenarios...

Ordinary Teachers

From dailyzen...


It is most urgent that you seek real, true perception,
So you can be free in the world
And not confused by ordinary teachers.

- Linji (d. 867)

JFK

JFK was a troubled man from a shady and troubled family. He had enough strength though to do some good work when it was needed.

Let us never negotiate out of fear. But let us never fear to negotiate.
His nephew, Robert Jr., is doing many good things.

I started an interesting book on vacation this week, "Ultimate Sacrifice: John and Robert Kennedy, the Plan for a Coup in Cuba, and the Murder of JFK". I've not previously read anything about the JFK assassination. This is a recent book that appears to have a great deal of credibility from "insiders", popular (4.5 stars from 95 reviewers on Amazon), and uncovers relatively newly released information on a coup planned for Cuba subsequent to the Bay of Pigs, and which ultimately led to the assassination (by the Mafia) and cover-up.

Moral Clarity Or What?

Harry Shearer observes that the recent arrests in Britain do not jive with the Bush Administration's policies on "enemy combatants" in a "time of war"...

This is a group of people who allegedly conspired, according to British officials like Home Secretary John Reid, to commit acts of mass murder that would have dwarfed 911. If we were at war with them, according to the Administration's own well-documented legal arguments, we would have killed them or detained them and thrown them in Gitmo. Instead, where did we--or our allies in the "war", the Brits--put them? Right where we're told by those same arguments we cannot put enemy combatants--in the criminal justice system.

Saturday, August 12, 2006

Which Quagmire Again?

George Will on ABC TV's "This Week" becomes confused about which quagmire we're currently bogged down in...

Lieberman's model on Vietnam -- I'm sorry, on Iraq, is to some extent...
Could we keep our quagmires straight please?

Java Varargs Puzzle

Richard Bair puzzles over a scenario using Java 5 varargs...

The problem is that (Object)null tells the compiler to include a one element Object array where the first element is null. Instead, what we wanted to do was this (Object[])null! This is why we get the compiler warning, the compiler doesn't know if we want null to be an element in the vararg array or whether we want it to be the vararg array itself.
I would have expected that passing null to be interpreted as passing one Object, which is null. Strange that null has to be cast to Object though.

But then passing an Object array that is null means "don't pass anything"? This is just puzzling. It should be wrong... an artifact of a not-quite-object-oriented language with too much "magic".

To express "don't pass anything" I would expect to invoke the method like this...

elementCount()
...i.e. don't pass anything.

I would expect a null cast as an Object array to mean the same thing as a null cast to an Object. An Object array should be an Object, in an object-oriented language. No matter how you cast a null argument, it should be interpreted as one argument passed to the method. Instead the meaning changes on how the null is cast, or whether it is cast at all.

Unfortunately as well, invoking the method with no args means an implicit new of an empty Object array, as opposed to a null cast as an Object array. I guess I need to fire up the computer that has Java 5 on it and see it for myself.

Confusing. These idiosyncracies will cause someone, somewhere, a sleepless night every now and then.

People Who Don't Matter, Who Actually Might Matter

CNN has a list of 10 tech people who don't matter. I don't even know most of the people on the list.

I wonder about two people on the list though. One is Linus Torvalds. The CNN argument is that most Linux innovations come from large organizations rather than Linus. Maybe one could argue that CNN doesn't understand the way open source works, or the place of Torvalds and Linux within OSS. Unix was without a center for decades. Torvalds still appears to be the center of Linux. Without him I wonder if those contributing large organizations and individuals would go spinning off, out of the coherent Linux system, the way it used to be.

The other questionable choice for me would be Sun's Jonathan Schwartz. The point James Robertson continues to make is Schwartz' contribution to the enterprise blogging and transparency movement. As a software developer, the future of Java and the JVM matters to me, and Sun's attitude toward OSS. Also Sun appears to be innovating in the H/W market again, e.g. Thumper.

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.