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

Search This Blog

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?

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.