d2r wonders when Hollywood decided that physics were just so passé:
I guess what I'm wondering is: when did breaking the laws of physics became fun? The Matrix is one of the earliest of its kind, accounting for the little detail that, you know, it happened in a simulated reality (and they are responsible for bullet-time, at least in live-action, Anime is really were it comes from). Mission: Impossible pushed things a bit, but hey, it's Mission: Impossible. M:I2, though, was way over the top, and then things started to come off their tracks. Why is it that blockbusters seem to be resort to CG when the script ain't working, even if they aren't dealing with aliens or twisters or whatever?
I think you really do have to consider a lot of these flicks to be live action cartoons.
My sister seems to be adamant about getting me back to my older reading habits - first she got me interested in fantasy again by getting me started on the Wheel of Time books by Robert Jordan. Now, she's kick starting my old interest in sci-fi with the Well of Souls series. I haven't read a decent sci-fi yarn in years; I've been on an alternate history kick (and recently, a WWI history kick). The Chalker books remind me of the old (pre-bloat) Heinlein books - fast paced, light, but interesting. The first one is a quick read, and I've just gotten some of the follow ons for Christmas, so it looks like my reading schedule is pretty full. That's not even counting the Stephenson books from last Christmas that I haven't dug into yet, or all the new history books people got me this year. All that and a gamecube...
So if you play your new Gamecube non-stop, this User Friendly cartoon definitely applies. I'm going to acquire either a blister or a callous on my thumb, that's for sure...
It's a bad sign when your dishwasher starts to smoke. We had just finished running through the enormous pile of post-Christmas dishes, and I was out getting carry-out... my wife called to let me know that the dishwasher had taken up a smoking habit. We had noticed a burning plastic smell a couple of days ago, but had not been able to figure out what it was - at the time, we thought maybe we just had too many things plugged into to that circuit. Now it's clear - an expensive appliance was demanding more money. Sigh...
If you want to get some idea of the reaction to that mega quake the other day, then Sriram Krishnan is the guy to read. He's in Chennai, one of India's harder hit cities. This snippet tells you a lot:
If you want a sense of the scale of the disaster, you just have to look at this comment I saw from a BBC reporter this morning from some resort in Thailand - "This region has been relatively fortunate in that it has seen only around a thousand deaths". When people start saying that they're lucky 'coz only a 1000 people died, you know that things are bad.
I'm glad to hear that Sriram's family is ok.
Pick all three - Patrick Logan explains
Our initial intuition is that reliable systems must be specified up front, and since static type information is easy to specify up front, then this must be the foundation of reliable systems. Almost the opposite is the case. We do need up front specifications, but they should be simple expressions of small parts of the ultimate system. Those specifications should be in the form of tests and dynamic (and concurrent) models, and simple solutions that fail fast.
There's been some instability in recent BottomFeeder builds - it looks like most of that has been related to thread safety issues in the LibTidy interface and the SpellChecker interface. The latter wouldn't affect you unless you use TypeLess or the blog tool; the former could burn you, since we interface tp LibTidy on Windows and Linux to clean up inbound HTML for display. Updates are now up on the site, for both dev and non-dev paths - it should help. Tip of the hat to Michael for the fixes. Next up in dev - I'll be taking a look at the RegEx thing that Bob worked on
To wrap up my Christmas, I have some pictures. Here's a digital camera shot of "Christmas Town" - it's something we put up every year:
Then I've got two pictures my daughter did today:
Maybe I don't want a smart phone:
The malware, MetalGear.a, which masquerades as a Symbian version of the Metal Gear Solid game, disables antivirus programs and also installs a version of the Cabir worm identified earlier this year, according to SimWorks International, which issued an alert on Tuesday.
The Cabir worm, in turn, attempts to spread a second Trojan program, called SEXXXY, to nearby phones through the Bluetooth short-range wireless protocol.
Almost makes one pine for the bulky analog models of yore...
"I did not fall off the bridge the third time!" I expect to hear a lot of that with the Donkey Kong trail in the Mario Go Kart game.
In response to an email query, I've added an "Add Feed" button to the toolbar of BottomFeeder. I've also fixed the annoying ampersand in the tooltip help for the "Exit" button. Grab the dev update, restart, and have a Merry Christmas! If I get any spare moments, I'll be trying not to embarrass myself with the new GameCube...
Esmertec is pleased to announce today the release of its OSVM product for evaluation trials
OSVM is a new paradigm for embedded software development that enables increase in developer productivity and reduction in software development and system maintenance costs.
OSVM is real-time secure software platform for extremely memory constrained devices. It allows creating object-oriented applications and enables full serviceability, dynamic updates and maintenance in the field. This platform comes with a comprehensive integrated programming environment which supports efficient incremental development with instant integration of program changes in a dynamic iterative programming workflow.
The automatic memory management and the compactness of OSVM execution platform reduce the hardware costs of the system while increasing the security and reliability of the product. The high level of serviceability enabled by this dynamic and always-on software platform allows analysis, correction and transparent update of the software in the field. This improves field testing and reduces dramatically the maintenance costs of the system.
This release is now available for evaluation. If you are interested in trialing or knowing more about the product, please contact firstname.lastname@example.org.
Thanks and best regards,
CH 8600 Dübendorf
We had to have a mini-crisis for Christmas too. Last Thanksgiving, we had a flood in the basement. That was due to an over-full washing machine and my wife's attempt to get it to fill past where it wanted to - she succeeded too well, and it overflowed onto the floor all night. One shop-vac later, and we had it cleaned up. So this morning I came downstairs for coffee, and found the Christmas tree on it's side. Panic! Fortunately, we only lost one ornament (not one of the sentimental ones either), and somehow found all the ornament hooks. Absolutely amazing - we even managed to get the tree topper into a better location, and the lights look ok. Somehow, it all works out.
Merry Christmas, everyone!
Patrick Logan points to Ted Leung talking about generics in Java:
As I listened to the generics discussion, my mind was thinking something like this:
- Generics extends the amount of static type checking that you can do.
- Static typing checking is good because you make fewer mistakes.
- But wait, now you have to worry about wildcards and type bounds.
It seems that for average programmers this could be more work than writing the code itself. So now you can make a mistake in writing the specification (type) that is supposed to keep you from making a mistake. Doesn't sound like a bargain to me.
All that just to send a message you know is implemented in the set of possible recipients. In Smalltalk, we don't even need specific generic support - because we do that sort of thing naturally. The stiffly typed crowd tie their knots tighter and tighter, don't they.
If you use Smalltalk, you just put a halt right there in the SSP page - into the normal Smalltalk debugger you go. Over in ASP Land, it's a trifle more complicated than that. But hey, rebooting every few minutes probably aids your productivity, right?
Smalltalk, on the page: <% self halt. %>
or, over in ASP-Land:
Here's the drill. What I discovered yesterday while frustrated enough to physically throw my laptop out the nearest window.
- Start debugger.
- Wait until the process load starts, then HANGS.
- Open Task Manager.
- KILL aspnet_wp.exe.
- New aspnet_wp.exe starts.
- Process continues to load in debugger.
ICK! I had this problem while working at Paramount. I never did figure out the real fix for it. This will work for a couple of debugging sessions, then you get to reboot the machine.
And they call this the future... You could also ponder Seaside...
An interesting post appeared on the VSE (Visual Smalltalk Enterprise) mailing list recently; here's the description:
The original Visual Smalltalk dialect by Digitalk has survived ten years of proclaimed discontinuity. Paradoxically, the languishing commercial interest in this legitimate successor of the Smalltalk lore had a positive consequence: it protected the product from sophistication. After stripping out the over dimensioned Envy-like Enterprise development environment, and forgetting the PARTS that nobody seemed to use in real projects, we are left with a simple, powerful, compact and fast Smalltalk implementation. Even though Visual Smalltalk does certainly have a prominent history, it is neither perfect nor finished. As it is usually the case with every corpus of fruitful intellectual work, there are still many interesting details waiting to be completed. To begin with, there is one crucial problem in Visual Smalltalk: it has a bunch of hidden classes and methods that nobody has disclosed so far. This document is an attempt to repair that historical mistake. It explains how to recuperate all hidden classes and how to retrieve all missing Smalltalk source code.
The mail came from Leandro Caniglia; here's a link to the document he posted. It's a Word document, about 86k.
The ArcterJournal lets slip a great rant on the current state of IE, and where that leaves developers:
Lets be honest here. There won't be any new updates to IE for a very long time will there? It's been said so many times, the IE renderer supports a billion languages, versions, and testing it in the wiz-bang microsoft test facility takes years for a single change. Are the changes required to give proper standards support coming anytime soon? I really doubt it, and that makes me sad, because it causes more work for me, the people I work with, and makes our products not nearly as good as they could be. Hell, even saying "support only IE" won't work because writing code for IE 6 (windows) still varies greatly compared to IE 5.X (latest on OS/9 and OS/X). You guys almost did us a favor by not supporting IE on the Mac anymore, which would have meant we could write for IE6/Mozilla, which would have been a bit easier, but later reversed the decision and re-supported IE 5 on the Mac.
So I ask again, how is the IE team working to make sure their browser is the best?
There's also that helpful way they decided to stop supporting the old Netscape plugin API, and instead decided to invent a new Active/X based scheme - breaking a bunch of code and lowering security in one fell swoop. Sigh...
In a post on the value of TDD, Sean McGrath says this about dynamic languages on the stiff VMs:
Jython : Anybody coding in a statically compiled programming language that is not using a dynamically typed programming language for the tests, has missed a golden opportunity for a productivity leap. In the C world, CPython. In the .NET world, IronPython. In the Java world, Jython.
If your productivity goes up that much, why limit those languages to tests? Why not just ditch the stiff language altogether and get a leg up on your competition?
Apparently, you can only give your customers (and prospects) the middle finger for so long - even the really dim management above SCO seems to have started to learn something:
Shares in Utah's SCO Group went into a tailspin late Tuesday as news spread of both deepening losses and an apparent coup at the software company's corporate parent, the Canopy Group.
SCO shares closed at $4.51 in regular trading on the Nasdaq Stock Market, down 33 cents, or 7 percent. Then came SCO's dismal earnings reports for the fourth quarter and fiscal 2004; within minutes shares plunged another 46 cents, or 10 percent, in after-hours trading, to $4.05.
SCO, embroiled in multibillion-dollar federal litigation against IBM and others over its purported rights to the Unix and Linux operating systems, more than quadrupled its fourth-quarter losses. For the quarter ending Oct. 31, SCO's loss sank to $6.5 million, or 37 cents a share; the company had lost $1.6 million, or 12 cents, in the same period last year.
Investors already were absorbing news, leaked out in bits and pieces earlier Tuesday, about an apparent weekend coup that ousted Ralph Yarro, Canopy's longtime president, chairman and chief executive, along with Chief Financial Officer Darcy Mott.
Secretaries at Canopy's Lindon headquarters confirmed that Yarro and Mott were "no longer with the company."
I guess even the really slow learners over there have finally started to recognize where the lawsuit madness has been leading...
Our lead VM Engineer, Eliot Miranda, has pushed out a few details on the 64 bit work the team is doing:
The 64-bit System: Overview
The 64-bit implementation uses full 64-bit addresses for objects, providing the ability to fill the entire available address space with objects. For an idea of the effective limits today consider that current AMD x86-64 chipsets support a 48-bit virtual address and a 40-bit physical address, while average 64-bit object size is around 64 bytes. So the maximum number of objects here-on is theoretically (2 raisedTo: 40) / 64.0, or around 16 Giga objects in a system with a terabyte of memory.
The 64-bit System: Implementation
There are only three tagged types, 61-bit 2's complement SmallIntegers, 61-bit unsigned Characters and a 61-bit SmallDouble, subset of the 64-bit IEEE double-precision format that provides the central 1/8th of the IEEE range at full precision. The immediate floating-point format provides a very usable range (approximately -1.0d77 to 1.0d77) which overflows to full 64-bit boxed Doubles when results don't fit. It provides a faster and much more space-affordable floating-point, being about 2.5 times faster (about 2.5 times slower than SmallInteger arithmetic) and having no space overhead.
The rationale behind using only three of the possible seven immediate tag patterns is two-fold. First, measurements show that not much space is saved by doing things like packing seven byte symbols into immediates because intrinsically these short symbols don't take up much space anyway, and providing access to such packed immediate types slows down the path for normal object access in things like the #at: primitives. Second, by using three tag types we can make the #isImmediate, #isSmallInteger and #isSmallDouble tests faster, since they need test only a single bit, these tests being performance-critical to inlined arithmetic and object access in the various #at: and #at:put: primitives.
The 64-bit object representation is relatively more compact than the 32-bit one, resulting in only a 33% growth in object header size from 12 bytes to 16. In particular object headers no longer reference their class object directly but instead include a 20-bit "class index" that is used in all in-line cache tests and in object instantiation. Classes are held in a sparse table and accessed by dereferencing the 20-bit index. This saves 44 bits while imposing a restriction on total number of classes unlikely to be a problem to contemporary applications. Class objects are accessed quite rarely, for example when a message send fails to find a lookup in the method caches and has to do a full class hierarchy lookup, or when the programmer explicitly accesses the class via the Object>>#class primitive. 64-bit objects have a 20 bit identity hash field (and in fact the class index is the class's identity hash) giving 1 Meg hash values (up from 16383 in the 32-bit system) and a maximum of 1 Meg classes. The header of 64-bit pointer objects also includes the number of fixed fields (number of named instance variables) so that the accessing primitives #at: and #at:put: no longer have to indirect through the class to find how many named instance variables to skip over. Consequently array access performance is much improved.
We have gratefully adopted an idea by Mark Van Gulik to do with tagging objects. Because object headers comprise two 64-bit words they can be placed at an even or an odd modulo 128-bit boundary. In the 64-bit system PermSpace objects are on an odd boundary and OldSpace objects on the even one. This means that the store check is slightly faster, but much more importantly means that PermSpace can be placed anywhere in the address space. All that needs to happen is for a PermSpace segment to have its object table aligned on an odd modulo 128-bit boundary. This means we can implement shared PermSpace easily, allowing the operating system to dictate where to memory map a PermSpace segment. Thus bit 4 is a tag that distinguishes between PermSpace and OldSpace objects, and hence we call it "tagged perm".
In the 32-bit system we require all of PermSpace to be above all of OldSpace or vice verca. When shared perm was first implemented OldSpace growth was not implemented. It was therefore easy to implement shared PermSpace with the OS mapping it above all of OldSpace. But once we provided OldSpace growth and shrinkage by memory-mapping OldSpace segments it became much more difficult to guarantee that PermSpace is mapped above all other heap segments since the upper portion of the address space is typically where shared libraries, the stack segment and memory-mapping all collide in a manner best determined by the OS and not amenable to precise control from an application program. Mapping memory at low addresses is typically difficult because in the lower portion of the address space the C heap and the application's code and data itself collide. Hence we have yet to reimplement shared perm in the 32-bit system.
By using the "tagged perm" scheme we are able to decouple PermSpace from location and can hence easily share PermSpace, and allow PermSpace to grow. This first release preview release does not support shared PermSpace
As implied above, a preview (early beta) of the 64 bit VM is on the latest release CD.
Ambrai Smalltalk has reached another beta milestone - see the Ambrai website for details. Ambrai is a Mac specific Smalltalk implementation.
VW Traits is an implementation of Traits for VisualWorks. However, it is not a strict Traits implementation. Traits programming is a techinque of code composition and code reuse. A Trait is a partial implementation of a class, multiple traits are combined together, along with glue code, to comprise a class (client). You can view the original Trait papers here.
See the Wiki page for more details, or dive right in by loading up VWTraits and VWTraits Base VW Overrides from the public store
Sci Fi Wire reports that the sixth Harry Potter book (not outuntil July 16th) is already a best seller.
Festive cheer and goodwill was in short supply in Newtown when people dressed as Santa were involved in a mass street brawl, say police.
Officers used CS spray and batons to break up trouble amongst up to 30 people, following Newtown's annual charity Santa run.
Can't say that I've ever seen a report that referred to Santa Claus and CS gas simultaneously...
To get a sense of our true taste, unfiltered by the economics of scarcity, look at Rhapsody, a subscription-based streaming music service (owned by RealNetworks) that currently offers more than 735,000 tracks.
Chart Rhapsody's monthly statistics and you get a "power law" demand curve that looks much like any record store's, with huge appeal for the top tracks, tailing off quickly for less popular ones. But a really interesting thing happens once you dig below the top 40,000 tracks, which is about the amount of the fluid inventory (the albums carried that will eventually be sold) of the average real-world record store. Here, the Wal-Marts of the world go to zero - either they don't carry any more CDs, or the few potential local takers for such fringy fare never find it or never even enter the store.
The Rhapsody demand, however, keeps going. Not only is every one of Rhapsody's top 100,000 tracks streamed at least once each month, the same is true for its top 200,000, top 300,000, and top 400,000. As fast as Rhapsody adds tracks to its library, those songs find an audience, even if it's just a few people a month, somewhere in the country.
This is the Long Tail.
This is something that mass retailers are going to have to face. There's still a lot of pleasure to be gained in just browsing at a store - and you'll often find things that you wouldn't have noticed ootherwise that way (I spotted a bunch of history books at Borders yesterday that I'll want to get, for instance). On the other hand, search is pretty darn good at Amazon - and I've found things of interest that way as well - things that I would be unlikely to ever notice at a real store.
There's plenty of room for the big retailers in the mass market end of the business. What's opening up are the niche spaces that hardly anyone bothered servicing before. Your particular taste in music (or books, etc) might be rare enough that Borders would never bother to stock it - but the online retailer who has no actual inventory (beyond bits) can easily do so. As book publishing moves towards on demand binding, you'll see the same kind of disintermediation hit book sales that's been slamming music for the last few years.
I read posts like this one detailing the new generics system in .NET] and it makes the baby Jesus want to cry. Where is the latent typing that made generic programming so powerful? The monstrosity they've cooked up is basically useful for any type of generic programming where you don't actually USE the thing... meaning, containers. *sigh* I think it's time to start coding in IronPython.
Ted Neward hopes that XML will continue to get hammered as the uber answer:
XML will start to lose its luster. People are coming around to hate XSD Schema. Critics are popping up everywhere. Dave Megginson has a new book out, in fact, that basically takes everybody in the WS-* stack to task over creating specs before seeing if they'll actually work. In fact, the only successful application of XML thus far that anybody but a developer feels is weblogs and RSS, which obeys none of the classic rules of an XML spec. (Read his book, by the way--it's an eye-opener, particularly if you're one of the XML faithful, or if you've been thinking that XML will somehow make the computer world a safer, saner place. I'll put the Amazon link in here when I get a chance, but it's his latest from Addison-Wesley; shouldn't be too hard to find.) XML is useful, but we're starting to see the warts, and behave accordingly.
Hmm - where have I seen the spec a week without testing theory before? Yes, with the OMG, back in the 90's, when CORBA was all the rage. The WS* specs are a complete rehash of that entire silly process...
Michael Gartenberg seems to think big things are coming down the pike:
Just wrapped up another fascinating call. I'm still in thinking mode about the implications of what was discussed. The first few weeks in January are going to be very interesting. 2005 is shaping up to be a year of interesting products, relationships and technologies. Some of this stuff (if executed properly from a marketing and messaging perspective) is going to be amazing. You heard it here first :)
So is this another "big" announcement from MS (like Spaces), or something else?
No one is quite sure how this happening, but one of the Mars Rovers (Opportunity) is getting its solar panels cleaned off at night. Did Guiliani send all the squeegee men that far away? :)
An unexplained phenomenon akin to a space-borne car wash has boosted the performance of one of the two U.S. rovers probing the surface of Mars, New Scientist magazine said on Tuesday.
It said something -- or someone -- had regularly cleaned layers of dust from the solar panels of the Mars Opportunity vehicle while it was closed down during the Martian night.
The cleaning had boosted the panels' power output close to their maximum 900 watt-hours per day after at one stage dropping to 500 watt-hours because of the heavy Martian dirt.
"These exciting and unexplained cleaning events have kept Opportunity in really great shape," the magazine quoted NASA rover team leader Jim Erickson as saying.
Sounds like Enterprise is heading back to bogosity to me:
In the episodes, the Enterprise heads back to Earth for the official launch of the Columbia NX-02, Starfleet's second warp ship, commanded by Erika Hernandez. Phlox is abducted by aliens and finds himself in the presence of Klingons who tell him the Empire is facing its gravest threat in centuries. Along the way, as Archer and company investigate and pursue, it's revealed that one of our main characters has a secret past, which comes into play, the site reported.
The addition of Browder should work, so long as they don't let him write. No animated episodes!
I got a chuckle out of this touting of generics support on the CLR - scroll a bit more than halfway down and look at all the rules. Now, contrast that with what it takes to do the same thing in Smalltalk - just implement the darn method in the class you want it in. No fuss, no muss, no nine million rules to follow. I'm sure that the MS team thinks that those rules make things cosmically safer somehow; all they do is add bricks to the mental backload you have to cart around while writing software. Via Julia Lerman.
I can almost see the lines now :) Reuters reports that "Harry Potter and the Half-Blood Prince" will be out July 16. Can my daughter wait that long? Can I?
One of the persistent problems for newbies taking a look at Smalltalk has been the "where's my application?" problem. We haven't got a runtime system defined yet, but there's been progress in the 7.3 release of VisualWorks. New in this release is Subsystems work done by Alan. Here's an excerpt from the documentation:
It is frequently necessary to take special actions when certain system events occur, notably when the system starts up, shuts down, and immediately before and after an image save. The order in which such actions occur, relative to other parts of the system, can be critical. For example, a GUI application probably needs to perform and window startup routines only after the windowing system itself has been initialized.
Traditionally, startup events have been handled by registering dependencies on ObjectMemory. More recently, SystemEventInterest instances have been supported by the system. Both of these mechanisms left it difficult to manage the order in which actions were taken.
Class Subsystem provides VisualWorks a simple way to specify dependencies on system events as well as a modular approach to controling their order of execution. Several subsystems are defined for handling VisualWorks startup procedures.
Two subclasses in particular are of interest to the application developer:
If an application has actions to perform upon one of the four system events, a subclass of UserApplication is a convenient place to specify those actions. ImageConfigurationSystem is useful for applications that process command line options.
Defining System Event Actions
Subsystem defines four system event messages to which subsystems can respond: activate, deactivate, pause, and resume. By default, these general events are invoked as follows:
- activate is invoked by #returnFromSnapshot, which occurs when an image is launched.
- deactive is invoked by #aboutToQuit, which occurs just before the image exits
- pause is invoked by #aboutToSnapshot, which occurs just prior to writing an image file
- resume is invoked by #finishedSnapshot, which occurs just after the image file has been written
Responding to System Events
Some subsystems invoke activate upon #earlySystemInstallation, but these are usually system level subsystems. For applications, #returnFromSnapshot is the appropriate system event. A subsystem does not respond to these system event messages directly. Instead, these messages invoke further messages in which a subsystem configures its response to the system events. The corresponding messages that a subsystem will implement as needed are:
- Defines actions to perform upon the activate event message, and activates the subsystem.
- Defines actions to perform upon the deactivate event message, and deactivates the subsystem.
- Defines actions to perform upon the pause event message.
- Defines actions to perform upon the resume event message.
An application seldom needs to perform actions before or after a snapshot, which is generally a development time activity, so do not generally have to provide implementations for pauseAction or resumeAction. An action does, however, frequently have actions to perform upon launching the image, such as setting up its runtime environment, and these are specified by an implementation of setUp. Less frequently, but not uncommonly, an application will also need to perform actions prior to shutdown, which can be implemented in the tearDown method. The UserApplication subsystem, which is intended to be the superclass for application subsystems, implements one additional stub method:
This method can be implemented by a subsystem to launch the application, as well as to perform other application set up tasks. This method simplifies starting an application upon image launch, eliminating the need to either save the image with the application open, or of using Runtime Packager to specify the application to run, or any of the other methods that have been used. As an example of using setUp and tearDown methods, consider the task of saving a random number seed upon shutdown and then reading that seed to restart a random number generator upon startup.
This is something I'll be migrating BottomFeeder to after the 3.8 release - which means that post 3.8, we'll be moving to a VW 7.3 runtime. I'll be posting comments on how I'm migrating to the new code - it should be useful information in general.
To see the full documentation on this stuff, open the Application Developer's Guide, and look at the Application Frameworks chapter.
Ok, this is interesting. Tim Bray states that they are having some "dynamic infrastructure" built into NetBeans:
So, here's what we're doing: The NetBeans group and the Software CTO Office (where I work) have pulled together a project to fix the problem. We're going to be paying David Strupl, a contractor who really knows NetBeans, to lead a java.net project to build dynamic-language infrastructure into NetBeans. Obviously it'll be Open-Source and everyone who wants to can play.
I have to admit, I have no idea what that means. The problem with dynamic languages on the JVM isn't really one that can be solved easily at the IDE level; it's more of an infrastructure issue down at the VM level. The flaws that I outlined in the CLR also exist in the JVM; it really, really wants a static language running on it. Sure, you can host a dynamic one there... so long as you are willing to accept a slow or compromised language. My question is - what the heck is "dynamic infrastructure" at the NetBeans level? What does that mean?
I think this counts a major oops:
A newly reported security problem in Microsoft's Internet Explorer Web browser allows attackers to create a fake Web site that looks exactly like a genuine site.
The vulnerability lets an attacker display any Web site while the address bar in IE will display a trusted Web address and even show the icon indicating SSL (Secure Socket Layer) security, security researchers warn.
Sheesh. How is an end user supposed to spot that? Time to load up Firefox...
I look at this problem as a software engineer and the word "beta" seems as insignificant and arbitrary as version numbers. There's no universal quality measuring stick you must satisfy to get out of beta, it's just an arbitrary developer-defined state meaning "less than perfect". Well guess what? The final release will be less than perfect too. All beta means is that it's less than less than perfect.
That's the stumbling block that users need to get over when it comes to software. All software is imperfect and there's nothing software developers can do about it. It would be impractical to make software perfect because it would cost far too much and take too long to release. Just ask NASA how much work it takes to get defect-free software. Even after all of the checks and balances NASA has, they still have disasters caused by software. The solution for software companies is to release less than perfect software that does a pretty good job.
That's true enough - I've certainly let revs of BottomFeeder out with issues; half the reason I built the online updating feature was to allow for my own limitations :). Still, it's useful to look at what individual vendors mean by the term beta. In the case of Google, it seems to have no real meaning at all (at least, from the end user's perspective). In the case of NetNewsWire (the source of the problem that generated the original rant), take a look at what they say about their own beta software:
Beta software has bugs! Nasty, vicious bugs with great big, sharp teeth!
Don't use beta software unless you're clear on what "beta" means and you're comfortable running beta software.
Seems to me that the guys responsible for NNW are pretty clear that you are taking risks running beta software. The term may have lost a lot of meaning due to rampant misuse, but not over there - I think they've been very clear. Ultimately, you need to back your data up. I don't do that enough, and I'm sure most people are like me in that regard...