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

Search This Blog

Sunday, January 28, 2007

That Sinking Feeling

Bill de hÓra writes about the umpteen billion dollars sunk into Vista...

more backseat driving - does anyone outside MSFT understand what it takes to get the OS done at all?
I don't think it is a matter of comprehending how difficult the work is. It is a matter of comprehending the value of doing that work. They are on the wrong track. There is little value in what they've done. The real losers will be those who will have no choice but to fork over big bucks to MSFT.

Far and away MSFT will recover its costs through "update-by-force" rather than "update-by-choice".

I would hate to have *that* as my customer base.

(Update: fixed broken link to Bill's post. Thanks James.)

None Too Soon

Don Box closely reflects my stance on JSON, Lisp, and XML...

JSON has actually eclipsed S-expressions for me as the most obvious way to structure data. JSON effectively gives into the lure of alists and commits to them in a pretty obvious way.

Also, in both JSON and S expressions, the concrete syntax is so trivial (and orthogonal to the model) that it doesn't really get in my way.

I can't say the same for XML.

Although he thinks more favorably about XML than I do. XML could not go away soon enough for me.

Surprisingly I do prefer JSON as an exchange format that Lisp (sexprs). For the reason Don gives above... it is very easy to see the alists and the arrays (true lists) in JSON than it is in Lisp.

So while I would dearly prefer to program in Lisp (Scheme) than any other language, I would want to exchange data via JSON.

Not a problem... in Common Lisp, Gambit Scheme, and several others, the neat thing to do is create the read-table syntax for JSON.

Late To The Table Again

Update:

The evidence this time has caused Microsoft to withdraw the patent over the last few days. The BlueJ Java people, who already credited Smalltalk, had been in recent contact with Microsoft prior to the application and were very upset about the patent application. Bad press was visibly having a negative affect.

Would that it were this way with the less direct instances of prior art. No kudos to Microsoft here -- this is a case of one's back to the wall and the spotlight shining down from the police helicopter -- you're about to be on a reality show.

End

James Robertson writes about another Microsoft patent application in the 21st century that consists of prior art from the 1990s if not earlier.

Here are some other candidates for prior art from what I can tell. (I can only read so much about Visual Studio and then I begin to lose my lunch.)

Maybe someone more at peace with Visual Studio can say whether these diagrams resemble what has been patented. (I am sure the newer tools have much more suckage.)

Diagramming Debugger

Object Explorer

Semantic Agnostics?

There's a comment over on James' blog stating a key part of the Microsoft patent may be it's "language semantics agnostic". Get over it. All the languages that can participate in this diagrammer have to share the dotnet object model and enough of the dotnet runtime to get the bits to the display. If that's not "semantics" then what is it? Well, it's actually pretty *bad* semantics to make all these languages use the same (pretty awful) object model.

Fighting The Good Fight

Fuzzy has a good idea: a site for bad software patents with the details, prior art, etc.

Monday, January 22, 2007

Cadence and Smalltalk, Sun and Cincom

So, what the heck is going on over at Cadence? They've hired the Smalltalk/StrongTalk/Java-HotSpot wizard from Sun (Gilad Bracha) and a couple of key Smalltalk folks from Cincom. One of whom (Eliot Miranda, at least) is like Bracha, a very knowledgeable person at the compiler/hotspot optimization level.

Visual Works has a pretty mature compiler/runtime, but that has to be a loss.

Sun is just getting started with dynamic languages on the JVM... that seems like more of a loss.

And Cadence is hiring more Smalltalkers.

Interesting. Cadence has been one of the leaders in computer-aided electronics design for 15+ years. Way back when they were one of the first to incorporate a dialect of Scheme into their design tools. That led to or was closely associated with EDIF, the Electronic Design Interchange Format, based on Scheme/Lisp syntax. (Way better than today's XML, but... another day.)

Sunday, January 21, 2007

Monothickic

The Pragmatic Dan Creswell (Dictator?) writes...

Java is getting heavyweight...

Java is designed to be dynamically extensible not monolithic and static as is the prevailing pattern pursued by Sun’s JDK development team and the world of J2EE. Remember, Java in it’s early days was all about code-downloading and dynamic extension...

To Schwarz, Sun and the Java masses, stop leading Java down the path of static, ever-larger, monolithic bloatware.

It's Mainframey!

Sunday, January 14, 2007

Jobs Is Gravity

I wish the iPhone had a different name and was a more open software environment right from the top. I think it will get there eventually. Michael Lucas-Smith hopes for the same, but then writes...

Screw you Jobs, you're an idiot. Stop taking credit for the brilliant work your engineers do to make Macs so great. Hey, have we all forgotten how jobs wanted to limit Mac memory and while he was out of town his engineers pumped the Mac memory up to 2mb? Let us not forget how he managed to split the Apple company in two with his Apple vs Mac wars. What a moron. Get a life.
This is going *way* overboard.

From what I understand, Jobs has been responsible for a number of bad ideas, some of which made it into product and some didn't. But Apple is a unique company. There are several reasons for that, and they all revolve around Steve Jobs in various orbits.

Woz designed the Apple I and II which were far beyond everything else and set the course for Apple's uniqueness. But Woz was content building neat things for his friends to admire while working at HP forever, HP ignoring his genius forever. Jobs went out and made the sales that launched Apple.

From that point on there appears to have been two Apples. One of the Apples was continually pulled into the gravity that weighs down every sizable organization.

The other Apple was continually pulled into the gravity of Steve Jobs. (That gravity left Apple and became NeXT for quite a while, but even then some of the planets were still at Apple.)

Without Steve Jobs then:

  • The Apple II probably would not have become a business success, funding everything to come.
  • Even if it had, the Macintosh probably would not have existed.
  • Even if it had, it probably would not have been delivered in its pleasing vertical case.
  • Even if it had, it probably would not have emphasized rounded rectangles in its user interface.
  • Even if it had, it probably would not have been supplanted by the NeXT OS and NeXTStep to rescue it from oblivion.
Jobs did not create all these things himself, but he pushed for them and demanded them, and they made all the difference. Without Jobs the result is something much more like Windows, and that would suck.

I am pretty sure Jobs is the force that moved all these things together in the right direction. He demanded more than what any of the contributors would have done on their own. Bill Atkinson was pleased with his algorithm for drawing ovals. Jobs pointed out that rounded rectangles are everywhere. Atkinson initially objected, but quickly figured out how to draw them efficiently.

We would be in a world that is much more square without Steve Jobs.

Even the Windows API has a RoundRect procedure.

Coincidentally the Toronto Globe and Mail refers to Jobs like this...

"Microsoft has a certain cult of personality. Gates is thought of as a special guru, and people sit at his feet trying to understand what he's thinking," says Roger Kay, president of Endpoint Technologies Associates Inc., a research firm in Wayland, Mass. "That's totally different from Steve Jobs. He's an autocrat. He's a sun king. He's very capricious, autocratic, and creative and charismatic. He's all kinds of good things, mixed with some pretty strange things. It's a totally unique formula."

The personalities of both men have been imprinted on their companies for years.

He's a sun king. I love it.

Saturday, January 13, 2007

Killing the Buddha

I am getting nostalgic for programming in the supermini era. We *really* had "no rules" then. I was writing "CAD tools" for designing electronics. We had a home-grown programming language called "MPL" (by another group in Boston, most likely just "some guy", for some reason the name John Barstow sounds familiar). I recall it officially stood for "Macro Programming Language" because it was a Modula/Pascal-like pre-compiler for PL/1. (Data General's flavor of PL/1 was its systems programming language. There was no "C" compiler for DG for a number of years yet.)

Our unofficial name for MPL was "Mud PuddLe". In fact we had no other name for it. I take that back, now I am recalling a more offical name was "MaPLe". I think only the CAD tools group called it Mud Puddle. Now I think either Harry Newell or I invented the name Mud Puddle, but I could be way wrong on that.

Our graphics/UI system (I don't think we had the term "framework" then) was called "Reddog". This was a 2D, retained graphics system and it was also home grown (by a DG group in Austin, again just "some guys", I think Kerry Kimbrough was one. There were just a few women programmers that I knew of at DG. My manager's wife was in the OS group. Three(?) women were in the CAD tools group.) The Macintosh would come out a year or so later. I had seen the Lisa at school, and did some programming on Lisp machines. At that time DG had no official "window system" and no document for "user interface guidelines".

(I thought it was cool later when I got my Mac512k, the Manx C compiler, and the "phone book" edition of the Mac API guide. I think that was the first time you didn't need a $10,000 Lisa to program a Mac128k.)

We stored our "domain" data in files. The schematic editor for example just used the Reddog graphics file itself to store all its electronics data. Heck, it was a tree and had lookups. Otherwise we'd just have to write our own indexing, etc.

Not too long after I got to DG another group there told us about this thing they developed, a "relational database". (Apparently Oracle was a fairly new vendor of these things for the VAX or something but none of us in CAD tools knew about them.) We looked at how to use it for electronics data. There was no such thing as a "DBA" to tell us what we could or could not do. SQL seemed pretty cool, these "queries" for getting data out of the database.

The bottom line is we had an operating system and a compiler. There were no rules.

"If you meet the buddha on the road, kill him."

Superminicomputers

I got out of school at the apex of the "superminicomputer". Minicomputers had been 16-bits for a number of years, going back to the Data General Nova and DEC's counter with the PDP-11. (Interestingly DEC had 12-bit and 24-bit systems before the PDP-11.) I went to work for Data General as their new 32-bit system rolled out in competition with the DEC VAX. These were called "superminicomputers".

If the J2EE server is the modern mainframe, what is the modern minicomputer? (Please don't say it is the Enterprise Service Bus! 8^)

The PDP-11 is probably my favorite computer to program of all time, even though all I ever used was the assembler. Maybe time makes the heart grow fonder. We had a network of six or so all in a room at school. As I recall the boxes were just a bit larger than a dorm room refrigerator. The instruction set was simple, and we just had fun running and enhancing a very simple custom OS with networking.

DEC PDP-11/23 16-bit Minicomputer

Data General 32-bit Eclipse "Eagle" Superminicomputer

The Modern Mainframe

I forget where I saw someone refer to J2EE servers as "mainframes". The brief mention struck me with some humor and some accuracy. I've not thought about it since, and one could argue I'm not thinking at this moment.

Still needing an update on what these things do, and reading through a few topics in some detail, that analogy came back in a flash. There is a deeper truth, while there has been great progress: they support one or more "modern" languages, they include garbage collection, they run on really inexpensive hardware (often clustered rather than a single ginormous piece of iron on a raise floor -- but the power issue is back with a vengance for some), and take a good bit less configuration.

On the other hand, their configuration (typically in XML) is not unlike JCL, they load a lot of various pieces into conceptually a monolith, include various "isolation" mechanisms alongside various clustering/sharing mechanisms. I don't want to take this analogy too far -- it just struck me recently -- and systems like JBoss have interesting designs with its JMX/MBean microkernel.

Not that all of these are necessarily "bad" things. But I do get the sense of a monolith that doesn't necessarily fit the idea of "small pieces loosely joined" even when the ugliest parts (e.g. EJB) are ignored and the better parts (e.g. JMS) are emphasized. Today I would think an organizations evolutionary intentions should be to move away from mainframes.

Should the same be said for J2EE *today*? If not today, then *eventually*? If so then, toward what? I have a lot of ideas about the "eventually* part, and a few about the "today" part.

No Rules

"Hell, there are no rules here - we're trying to accomplish something."
— Thomas Alva Edison

Thursday, January 11, 2007

Class Loading Issues in Java™ RMI and Jini™ Network Technology

This really belongs in the details of the Jini documentation. I found it very helpful. Confused why this is a Sun *research* paper rather than just good exposition for understanding the mechanics (and touching on what should be in the "design rules") of Jini.

Class Loading Issues in Java™ RMI and Jini™ Network Technology

On the one hand it makes a dynamic language programmer suggest this is more evidence against compile-time type checking, and it makes a Smalltalk programmer suggest this is more evidence against not treating classes as truly first class objects, and it makes a Scheme programmer suggest this is more evidence against treating objects as anything more than closures...

On the other hand it does give one hope that Java can be used effectively in a distributed environment.

Wrong Answer

From MacRumors.com...

A New York Times article reveals some information about Apple's iPhone and the possibility of 3rd party applications.

The article quotes Steve Jobs about why Apple does not want to allow any 3rd party developer make applications for the iPhone:

“We define everything that is on the phone. You don’t want your phone to be like a PC. The last thing you want is to have loaded three apps on your phone and then you go to make a call and it doesn’t work anymore. These are more like iPods than they are like computers.”
Well, the iPhone (and why doesn't Apple Incorporated take this opportunity to move *away* from the now-worn-out iThingy naming convention?)... restart... well, the iPhone, believe it or not, *is* a computereven though the corporation took "computer" out of its name. What an opportunity to provide a reliable runtime environment, where applications are sufficiently isolated to avoid each other and robust enough to recover, etc.

When our computers all move out of their general-purpose boxes and into special-purpose embedded environments, we'll still want open access to them without signing up as a priveleged software vendor. That's where most of the new ideas will come from.

Monday, January 08, 2007

A Bigger Dork Than Me?

Update:

Uh, yeah. So I did read the press release. Maybe I missed something but it does appear to require Vista and it does not appear to support anyone else's system (MacOSX, Linux, etc.) So if you *like* the bundled mess that is the Microsoft product line, and your OS is running in the future (the same future that will run this server), then this product *might* be for you. If your hardware is old and your OS is older than the future, or from a non-Microsoft OS vendor, then you appear to be out of luck. Unless you wish to upgrade every thing you own. Then by all means.

So here is what you do... go down to Best Buy. Tell them you want a network storage device and a print server, all in one. Tell them you want a redundant disk. They probably have several brands. If you have another reasonably good electronics store in town, they probably have another one or two brands to choose from. Buy one today, and it will continue to work with everything you have today. Just don't upgrade to Microsoft's Digital Decade OS of the Future. That one will almost *certainly* not work with anything else you already have in your house.

Bill sucks. Microsoft has no clue. This "Digital Decade" (how catchy!) we are in happens to run on the *internets*. They are a series of *tubes*. They are *independent* of your specific operating system. Especially if they are of the future of which Microsoft wishes to bind you to.

End Update

And that's saying something. A part of Bill Gates' so called "Digital Decade" is to someday release a "Windows Home Server" for "less than $500"...

If you have multiple PCs, then you want files that are available all the time no matter which PCs are turned on or off, and you'd also like to have a server that, when you just add storage, it automatically takes advantage of that. You don't have to think about drive names or moving files around.

In fact, you get redundancy, so even if you have physical failures you have recoverability... We think it is a real leadership product. Homes with multiple PCs will find it very attractive.

Guess what, Bill? You need to get out more, even if it is just down to the local Best Buy store.

For some time now I have had a network storage "server" running at home. It plugs into the network and just works. You can add as much storage as you want as larger disks become cheaper.

I plugged another USB drive into one of its USB slots. The box knew by default to use this drive as redundant storage. We use the network drive for common storage (across Windows 2000, Windows XP, Linux, and MacOSX) as well as for backup storage for each of those other machines. The USB drive backs up the common storage and backs up the backups.

Did I mention this "home server" also has a network print server? Yes, just plug in a printer's USB cable to another of the server's USB slots. I hope Bill's print server is as easy to setup (for MacOSX and Linux as well as all the Windows) whenever it arrives in Best Buy.

This setup came in many months ago at less than half the $500 target of Bill's. OK, I had a USB drive anyway I could use as the redundant storage. So purchasing that brings the sum into Bill's neighborhood *today*.

Will Bill's system work as well across all these other systems? Will it even work with Bill's own obsolete Windows 2000?

One more thing... this server of mine happens to run Linux and Samba (I know that because I am a geek and a dork, but no one needs to know that.)

Well, people with these servers may eventually find out once they bring Vista into their homes and Vista refuses (apparently?) to work with the Samba software. One more reason Vista will never see the inside of my house.

One more quote, but from Microsoft Watch...

The product will open up new sales and services opportunities for the channel. Many consumers can't properly configure a Wi-Fi router now. It's unrealistic that many could set up a server without some assistance.
http://en.wikipedia.org/wiki/Zeroconf?

Saturday, January 06, 2007

Dynamic Panic

Mike ("Fuzzy" to you) and Dan Creswell are working on the Jini comfort level. I think the answer is to make the Jini starter kit more comfortable. If we stay with Jini then I hope we'll be making some contributions along those lines.

Currently Jini examples are kind of scattered in terms of where they can be found, whether they run with 2.1, what spectrum of Jini/Javaspaces they cover, and whether they reflect one person's style or some community-level "best practice".

I like examples that are small, build on each other, and "just work" with some clear code. That can be a challenge with a dynamic, distributed system like Jini/Javaspaces. There is a way to go with this in general, but some candidates can be found, and we're doing some ourselves.

Back to the question though, about having a Javaspaces without Jini. Because of Java's instance/class/class-loader/serializer design, Javaspaces would not be better without Jini. How many Java systems have (or suffer from the lack of) a decent dynamic loading capability? Jini *is* such a thing that could be used in many situations.

Even a Javaspace that is used merely to pass "data-only" entries around require dynamic class loading unless you desire explicitly managing the classpaths of all the JVMs participating. Putting methods on those entries or the objects they contain just make the need for dynamic class loading more obvious.

Not to mention that Javaspaces themselve are turned into dynamically available Jini services, available through smart proxies, distinguishable by entry values, and so on.

I suppose I am more comfortable with the idea of dynamic loading right off the bat. I have written a lot of Lisp and Smalltalk code that's gone into production, and kept running right through dynamic loading of fixes and enhancements. Gemstone Smalltalk even supports bulk or incremental migration of Smalltalk instances from one class version to another while the system continues running.

Jini and Javaspaces seem to be the Java mechanism most aimed at this level of dynamicism. Are there others?

Monday, January 01, 2007

Damn Readable Information Exchange

Planet Intertwingly’s memes.json (Sam Ruby).

Hella more readbable than XML-IMHO.

A Little Is Enough

Reflecting on the man's hanging, and the current mess the U.S. and Iraq are in, I'm recalling Philip Greenspun's controversial blog post from 2003...

By the standards of wealthy Western countries Saddam’s regime was harsh. They tortured and/or killed political opponents. They controlled the press, the mosques, and the schools. If a town were restive they might kill its entire population or at least many hundreds of people from that town. This would seem like gratuitous cruelty if done by the governments of Vermont, Dijon, or Bavaria. But in the Arab world more or less every government employs the same tactics as Saddam’s Iraq.

In fairness to the defeated dare we ask whether Saddam’s regime wasn’t employing the minimum amount of violence necessary to maintain public order in Iraq? It seems quite possible that Saddam did not enjoy terrorizing his subjects but did it because he understood the divisions within his arbitrarily drawn borders and thought keeping his subjects in fear was necessary...

We haven’t figured out what level of governmental coercion will result in an Iraqi society that is both orderly and submissive to a U.S. occupation or whatever American-friendly government follows. Saddam may yet go down in history as the kindest and gentlest 21st century leader of a unified and stable Iraq.

Resilience and the Javaspaces Model

One of the good high-level programming model introductions to Javaspaces is available behind a registration wall. I was handed the PDF but since it is copyrighted yet free, I'm uncomfortable posting it for you. I'd recommend you register and get it if you are curious about a simple model meeting a common need where Javaspaces provides much less effort than, say, JMS.

I'll call it "Resilience and the Error Hospital" while the actual title has more buzz words (e.g. SOA) and no direct URL.

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?)

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.