Suzanne took some more shots while visiting customers - these are all of Frankfurt and the surrounding area, where Suzanne was visiting customers
Cincom and our partner Georg Heeg had a booth at OOP 2006 this year - Suzanne Fortman, our marketing manager, was there with her camera. Here's the booth, showing Andreas Hiltner and Helge Nowak (on the left) from our German office, and Georg on the right:
And here's another shot of the booth, showing the Cincom Smalltalk logo:
Next, a shot of Suzanne and Georg at the show:
And finally, a shot that includes a section of the booth touting AMD's use of Cincom Smalltalk in their wafer fabs, during the Cincom Smalltalk evening event:
Here's an interesting theory on what's going on in "Lost" - and it seems to have internal consistency on its side. I'll have to ponder this one.
With Smalltalk Solutions 2006 being hosted by LinuxWorld/NetworkWorld, hotel space is being taken up faster than you might expect - the main conference hotel, the Renaissance, is already sold out. Point your browsers here to register at one of the other conference hotels.
The book "Designated Targets" - a fascinating time travel/alternative history yarn - posited a ship defense system called "Metal Storm" - a system that would fill the air with enough shrapnel to stop any incoming attack.
Well, it seems that the author wasn't talking out of his hat - have a look here. The description certainly sounds like the one from the book:
The U.S. Army plans to test next month a SUPER GUN from a company appropriately called Metal Storm that can shoot 240,000 bullets per minute. The gun has no moving parts. Among its many tricks, the gun can actually shoot down enemy mortar fire. I want one.
Note: I'm not at all sure that the story and the picture line up. The linked image looks like one of the bots that are reportedly being used in Iraq and Afghanistan now.
"24" is a show I enjoy watching, even when the plotlines get astoundingly stupid - it's fast paced, and a fun show regardless. So, I set up my cable box DVR to record the show, so that I could see it in HD. Well. The box ran out of space, and I didn't get any warning on that - until I sat down to watch the show, and bam - nowhere in sight.
Ok - I can take some of the blame for not noticing that, but I would kind of like to catch up on the show. Fox isn't offering it on iTunes (or any competing service either), so there are no legal options available. In hunting around, I found this clueful statement from Fox:
"There are so many different cable outlets, a really fertile Internet, the ability to get information on wireless," Liguori said. "'24' is a great show for all those various options, but again, my job is to protect '24,' not to worry about what at this point is really a pretty meager audience" for video on demand or video iPods.
Asked whether he thought Disney jumped the gun on its deal with Apple's iTunes, Liguori said he was "neutral on what they've done."
"I think it was a very sexy announcement. But is it necessarily helping the show at this point? I don't know. None of us know at this stage. None of us know what those numbers are," he said.
What a complete chowderhead. "24" is a show that you want to watch each episode - otherwise, you just can't figure out what's happened with the plot twists. Is Fox giving me any way to do that? Nope. Re-run the last episode on F/X? Nope. Offer a download? Nope.
What's the most likely outcome? Well, having missed an episode (I also missed the first 2), I might not bother at all. There are plenty of other things stacked up on my DVRs, and - if I miss one of them (Lost, Desperate Housewives, for instance) - I can pick them up off iTunes. But hey - trust clue boy over there at Fox - that's meaningless. Maybe he can explain to the advertisers how that helps draw me to future shows.
I just tossed the high level datasheets for ObjectStudio and VisualWorks up as posts, and I'm going to add links for them over on the sidebar - that way they'll be available at a glance. As well, I can remember to keep them updated that way :)
Cincom includes ObjectStudio as part of the Cincom Smalltalk. For customers needing to build applications that cleanly fold into a Microsoft®-centric infrastructure, ObjectStudio is an excellent choice. ObjectStudio is a Windows-specific platform that is oriented toward building client applications that need good connectivity to databases.
For any questions about this document or about Cincom Smalltalk, please contact the Cincom Smalltalk Product Manager, James Robertson .
Based on the powerful Smalltalk language, ObjectStudio provides a robust development environment necessary to create innovative applications that capture complex business models and processes.
ObjectStudio is a complete, object-oriented rapid application development suite of tools for designing and assembling customized applications. ObjectStudio promotes a highly productive, interactive development style backed with a powerful architecture and comprehensive toolsets.
ObjectStudio provides graphical round-trip object modeling, graphical object persistency tools, and tight platform integration with Windows. Legacy connectivity within a single development environment enables your enterprise to respond faster to market opportunities.
ObjectStudio simplifies the development process by leveraging the power of component-based technology, enabling developers to:
- Model business objects
- Map business objects to data stores
- Manage objects with a team approach
- Develop with a powerful Windows integrated development environment
- Integrate with the powerful VisualWorks cross platform suite, enabling WS* and server connectivity
- Integrate databases and legacy applications
Powerful Object Modeling
The ObjectStudio modeling tool integrates the design of complex business objects generation, presenting a high-level, businesslike interface that delivers user-friendly tools for working with objects. The object-modeling tool supports case analysis, event diagramming, CRC cards and notations, including UML and Coad/Yourdon.
Automated Code Generation
Using ObjectStudio, an application moves from the design stage to completion much faster than with traditional tools. The ObjectStudio modeling tool can modify and maintain applications more quickly and easily because class hierarchies and object relationships can be arranged graphically, without coding. Simply make changes to the model and then let the modeling tool generate the code – automatically.
Once an application is rolled-out, it is difficult for new users to understand the complex functionality. With ObjectStudio, any changes to the model are automatically reflected in the code. This means that you always have access to a current business model of the application. Using a current visual, and easy-to¬understand model, your business analysts, training and support team, and IT staff can better understand your complex enterprise applications and be productive in less time.
Robust Object Mapping
The ObjectStudio mapping tool provides visual, drag-and-drop tools for linking objects to databases. The Object Relational Mapper uses the resulting object mapping definitions to make application connections to an object database, without requiring any SQL code written into the application. This allows the developer to concentrate on objects without worrying about the details of the database implementation. This is done automatically.
Strong Database and Legacy Applications
ObjectStudio supports the native API of the major industry-standard databases. This means you can use the latest features of your database. With faster performance throughput and less coding, your development team does not have to be familiar with the complicated database API. ObjectStudio automatically integrates into the database for you. This means less training and better application performance over generic gateways like ODBC.
In addition, ObjectStudio is open to many communication standards and its multiple access and interface capabilities make integration easier between new application-developed legacy applications and desktop environments.
Hardware and Software Environments:
- Microsoft Windows 98 through XP
- Microsoft Windows NT® 4.0 and higher
- ActiveX and OCX
- Microsoft SQL Server
- Sybase SQL Server
- UniSQL Server
- SUPRA® SQL Server
Unparalleled productivity, the best tools for supporting emergent methodologies like XP, and worldwide support from Cincom – you simply can’t go wrong by choosing Cincom Smalltalk. Still not sure? Visit our download site and see for yourself!
Cincom includes VisualWorks as part of the Cincom Smalltalk. VisualWorks is instantly portable across a wide range of platforms: Windows (ME/2000/XP/2003/CE), Mac OS 9, Mac OS X, Linux (x86/SPARC/PPC), HPUX, AIX, SGI Irix, Solaris (SPARC/x86). VisualWorks includes components for any type of work your team might contemplate: Web Applications, WS* (Web Services), SNMP Connectivity, and superior development tools. VisualWorks now includes best of breed tools like the Refactoring Browser and the Professional Debugger Package, fully integrated with the product.
For any questions about this document or about Cincom Smalltalk, please contact the Cincom Smalltalk Product Manager, James Robertson.
VW 7 represented a dramatic new direction for Smalltalk. VisualWorks is ready for integration with other leading applications and services, with support for Web Services, CORBA, COM, and common internet protocols.
VisualWorks now has support for all major internet protocols including SOAP, WSDL, and UDDI. Additionally, VisualWorks now supports interoperability standards such as SNMP and MQS, allowing Smalltalk applications to seamlessly plug into an enterprise infrastructure – an important feature for IS shops that need to integrate multiple applications from multiple sources.
This generation of Smalltalk also stands as the best way to interoperate with the existing and competing standards of .NET and J2EE. With CORBA support for J2EE, Web Services support for .NET and COM support for legacy applications, VisualWorks is uniquely suited as an integration platform.
Web Services offers a clean way to interoperate transparently with remote services, or to transparently make Smalltalk services available to others. This release has full support for UDDI, SOAP and WSDL. This allows for full interoperability with .NET-based services and J2EE web services. Wizards make it easy to either expose existing interfaces as a web service, or to create client Smalltalk interfaces to existing services.
The Web Toolkit takes advantage of and leverages the expertise of web developers and designers who do not know Smalltalk. Websites powered by the Web Toolkit can be built in the latest and greatest web development tools used by web developers today.
Smalltalk Server Page Support. Cincom added major functionality to VisualWave in order to support ASP- and JSP-style Smalltalk Server pages, as well as Smalltalk Servlets and Custom Tags in the 5i.4 release. With this release, we have enhanced the server management facilities and server-side performance. We support all the major web server interfaces including Apache and IIS.
SNMP Server Framework
SNMP server support allows developers to insert management hooks into their applications, enabling management by standard network console tools. Instead of handing the IT group a special, non-conforming management interface, this release allows Smalltalk developers to have their apps fit in better with IT expectations. Export of image-level configuration information for adjustment through standard network console tools, allows developers to support common standards for deployment.
Refactoring Browser. The browser for VisualWorks is now the Refactoring Browser. This ensures VisualWorks’ place as the premier eXtreme Programming toolset on the market.
Professional Debug Package.
The debugger for VisualWorks is now the PDP from Crafted Smalltalk. This feature greatly improves the productivity of Smalltalk developers.
The VW settings framework has been upgraded, and made more pluggable. Developers can easily reuse the settings framework for their own applications.
The UI painting tools show continued improvement. Hotkey support has been added for all UI components, definable from the painting tools. The event system has been updated, and support for the wheel mouse has been added. There is now base-level support for XBM, JPG, PNG and GIF image formats, and new support for window opening and positioning. The user interface now operates with multiple processes instead of a single “distinguished” process. This enables more responsive applications. The Tree and dataset widgets have been enhanced as well, with additional keyboard navigation features.
VisualWorks now has an extensive library of internet connectivity tools. This support has been growing since VW 5i.3. We now support FTP, HTTP and HTTPS, SMTP, IMAP and POP3 (including MIME encoded attachments), XML, XSL, XSchema and XPath.
Security - SSL
We now support ARC4, RSA, DES and DSA. VisualWorks has full support for fully secure communications using SSL – and that support is integrated with our WS* stack.
Store is the version control system of choice for VisualWorks. It has been improved in many ways since the 7.0 release including:
- Cleaner, clearer support for multiple repositories
- A tool interface for defining and changing package/bundle properties, including prerequisites
- Much improved database access speed
- Improved tool-level reporting to the developer of repository connections
- Enhanced usability when extending/overriding classes from other packages
- Ability to manipulate bundles within the repository without loading them
- Increased usability and robustness
- Ability to save ancillary files with a Smalltalk package in the repository
- Faster load times
Distributed Smalltalk has been updated to allow for clean interoperation with the latest Iona and Visigenic Orb products.
Opentalk is the new distribution framework that allows rapid implementation of distributed protocols such as Smalltalk to Smalltalk. Opentalk is the basis of our WS* and Web Toolkit implementations. In this release, the Opentalk core (the base distribution tools) has moved into product status. The Opentalk tools (browsers, etc.) are expected to be shipped in the next several releases.
Object Engine/Virtual Machine
Immutability allows persistence and distribution frameworks to capture changes to application objects automatically. For instance, GemStone, a third-party object database vendor that supports Cincom Smalltalk, uses this feature to provide persistence, transactions and sharing of application objects between multiple Smalltalk images transparently. 64 bit engine support is now being delivered in preview.
Unparalleled productivity, the best tools for supporting emergent methodologies like XP, and worldwide support from Cincom – you simply can’t go wrong by choosing Cincom Smalltalk. Still not sure? Visit our download site and see for yourself!
Copying content is just bad - so say the RIAA and the MPAA, so it must be true. Unless, of course, it's the MPAA which does the copying. Then, it's not piracy. Nope, no siree.
The MPAA admitted Monday that it had duplicated "This Film Is Not Yet Rated" without the filmmaker's permission after director Kirby Dick submitted his movie in November for an MPAA rating. The Hollywood trade organization said that it did not break copyright law, insisting that the dispute is part of a Dick-orchestrated "publicity stunt" to boost the film's profile.
Wow, that sounds a lot like Marion Barry's excuse, years ago when he was caught red handed with cocaine: "The b**** set me up!".
David Kline explains why corporate blogging - outside of a few technology companies - is still rare:
That's because, first of all, there really are dangers involved in tearing down the traditional barriers to direct customer interaction with the firm. There are a lot of angry consumers out there -- their anger fed by decades of having to deal with shoddy products, indifferent service, and the lack of corporate transparency and accountability -- and now, thanks to blogging, for the first time in history they can finally hit back. Just ask Dell, Sony, Kryptonite, Circuit City, and others whose brands, if not also their revenues, have taken a beating from the blog-fueled revolts of angry customers.
But just as important, blogging will ultimately force companies to abandon many of the traditional ways they have always managed not only their public affairs but their marketing and product development functions as well -- not least by giving customers a far more powerful and direct voice in enterprise decision-making than has ever been the case before.
In short, blogging requires firms to turn many of their operations inside out -- or, more accurately, to reverse the polarity of corporate thinking and practice from inside out to outside in.
I think he's right about the control issues. Even companies that aren't actually top down often have management that believe that they are running things top down. Whether real or imagined, full control is important - and having "loose cannons" on the decks dealing directly with customers and prospects is just scary. After all, that's what sales and marketing are for - to insulate the rough insides of the company from those people.
It's going to take awhile for marketing to realize that an awful lot of what they do is being disintermediated - and they aren't going to like it any better than media outlets or the RIAA.
Beau Bridges, who stars as Gen. Hank Landry in the SCI FI original series Stargate SG-1, told SCI FI Wire that he is getting ready to go back to Vancouver, Canada, to begin work in the show's upcoming 10th season.
Looks like NASA is looking for Squeakers:
A team at NASA Ames Research Center is looking for a system architect to help us design, develop, and deploy a component-based framework for building NASA mission control systems. This project is at a point where they need someone with serious chops to help translate the preliminary design and prototypes into a state-of-the-art yet practical and deployable system. The architect would be joining an up- and-running, 10+person team of engineers and designers. The design includes elements of user-level composition, model-driven user interfaces, dynamic assembly of components according to ontology- specified roles, distributed components, etc. etc. We are currently building a pilot in Java / Eclipse RCP, and a parallel testbed for user-experience exploration in Squeak (Smalltalk) (really). The resulting framework will be used by the various NASA centers (e.g. Ames, JPL, Johnson Space Center, Kennedy Space Center, etc) to build distributed, multi-mission systems for planning and executing a variety of NASA missions, including robotic (e.g. Mars rovers & deep- space probes) and manned (e.g. the new Moon/Mars exploration effort, including the Crew Exploration Vehicle currently being designed).
So I was trying to print something for my daughter on the color printer attached to my wife's machine - and Windows has decided that said machine - which has been on continuously, is connected by wire to the router, and is definitely in the same workgroup - doesn't exist. It was there a week ago, but now Windows assures me that it's not there.
So I glance over at the Mac, which is also on the network, and have a look, just to see what it thinks - and sure enough, it sees all the same printers (and shared drives, etc) that it's always seen. So why is it that Windows - which is presumably interoperable with itself - seems to forget which devices are on my LAN, while the Mac cheerfully sees the lot of them? Or for that matter, the ancient (RedHat 7, for gosh sakes) Linux box? It sees everything as well.
I love it when a simple print job takes 15 extra minutes of my time because the OS had a senior moment.
Via Doc Searls, we find out that the "tiered service" outbursts from BellSouth and Verizon are even stupider than they sounded at first: Neither of them are tier one backbone providers. Which means that they aren't so much asking to provide better QOS for some providers who pay extra - they would actually be engaged in degrading the service of everyone who didn't. I kind of thought that such "offers" usually came from gun toting gang members. Doc quotes Hamish MacEwan:
Of course, as everyone not a Telco knows, things are not delivered to Internet customers, they are *requested* by the customer who pays for that service from BellSouth (substitute your Telco of choice, we have a microcosm of this debacle in NZ at present). Google, or any other website, server, etc. is irrelevant, they make their own arrangements independent of other users of the Internet.
It is this decoupling, and the autonomous networks structure of the Internet that is one of its critical advantages. If the customer wants better performance, they pay for it.
How was BellSouth proposing to impair the performance of Yahoo! vs Google anyway? Kneecapping packets as they entered Bellsouth's portion of the Internet?
The "Improved Quality" these guys plan to offer sounds an awful like the "Improved Quality" that Microsoft intends to give me with PVP-OPM. Thanks, but no thanks.
So, first they start off suing their customers, and now they are maliciously making it hard for their customers to even listen to music, and they will cripple your music and media player to boot. These guys deserve to go out of business, they obviously don't love music, and they don't understand their own customers.
One of the most crucial things to remember in communications is the importance of tone. That might sound odd coming from me; after all, I take a fairly snarky tone on this blog. That's reflected right there in the title though - note the term "Rants" right there at the top, in the title. Which gets to part of what's important in tone management - truth in advertising. Anyone who reads this blog on a regular basis understands that I like to let loose with rants, and expects it - it's part of what I do here.
Where people get in trouble is when they use inappropriate tone based on the expectations of the audience. For instance - what works for me here wouldn't work well in a press release. The audience for a press release isn't expecting the kind of advocacy I do here.
There's another thing that an awful lot of people forget though, and it's far more widespread on controversial (especially political) topics than it tends to be in the tech sphere. It happens here though; read through any long conversation about Atom and RSS, and you're sure to find some vitriol (proving that any topic, no matter how small the niche, attracts partisans). What am I talking about? Language use. To put it most simply, the first person who pulls out the curse words loses. You can see that playing out in the ongoing reaction to the Washington Post's blog comments thing - a lot of the cries of censorship that came up included an astounding amount of cursing. What the advocates forget is that - as soon as the curse words come out, most people stop listening. More than that, they tend to discount future statements from that source as well.
This is something I had to learn the hard way - my father always swore quite a bit, and of course, I picked the habit up. What I figured out over time should be blindingly obvious, but any use of cursing in the course of an argument/discussion makes it less and less likely that you'll convince the people you are talking to. In general, the person who doesn't lose his temper and remains calm tends to be the most convincing - almost without regard to what his position is.
Joi Ito reminds us of something very important when doing business overseas - there are a lot of differences in business culture, and not all of the rule differences are formal - some of them are, and some of them aren't. This bit about transaction guaranties looks fairly formal:
I spent part of the day today in court. I was defending myself against the landlord of a friend of mine who has been unable to pay rent. I am the guarantor on the lease and the landlord has decided to come after me for the money. This is probably the fifth time that I've had debt collectors of various sorts come after me because of guarantees that I've made. I'm sure people wonder why the hell I keep guaranteeing things. The odd thing is that it is so common in Japan. It is as good as required for any significant transaction such as renting an apartment or borrowing money from a bank. Even government affiliated loans require personal guarantees by people other than the principles.
While this seems like an informal rule:
One of my portfolio companies failed several years ago. As the lead investor, I went around to the other investors and explained the situation. Two of the other investors asked me to PERSONALLY cover their loss. Both of these companies were public Japanese companies. I didn't pay of course, but they seemed to think that it would have been nifty if I had. I've never heard of such a thing happening in the US.
I'm not passing judgment (of any kind) on these practices - merely pointing out that they are an example of something that all international businesses need to be aware of. "Standard practice" may not be standard everywhere.
I've been having fun with Vorlath's notions of language design, but I haven't picked apart a specific example. Well, here goes - in his latest post, he calls exception handling broken, and explains by way of an example:
I suppose a simple example would not hurt. Take for example opening a file. Currently, we usually check the error code or trap an exception. If the exception isn't caught then it backtracks along the execution chain. Now consider if the open file command passed the error automatically to its parent super cluster along with the filename and other associated information. The super cluster can now pass this information to the GUI sub cluster to display an error message and some kind of option like choosing an alternate file for example. Then the super cluster can replace the filename and retry the open file command. The key here is that there is a centralized location for resource management and handling of subcomponents. So you can have standard recovery practices for the same types of errors. It should also be noted that you can fine tune the error recovery. If you wanted the leaf object itself to try and correct this error, you can do that too. Sometimes, the fact that the file doesn't exist is perfectly OK. But if you run out of memory or hard drive space for example, it can be automatically recover by notifying the user without putting this directly into the main flow of your source code.
I think he's got the handling mechanism of Java/C# in mind here. In those systems, when you get to the handler, the stack has been unwound, so you're stuck wherever you are. Not so in Smalltalk - you can restart the execution chain pretty much anywhere along the chain you want, and you have full context information. I use that in BottomFeeder to deal with problems as they arise in grabbing a feed - the handling is quite different depending on whether the problem arose in the HTTP part of the equation, the XML parsing part of the equation, or the decomposition of XML (RSS/Atom) into domain objects part of it.
In fact, I managed the parsing issues by subclassing (cue the scary music) the XML Parser and tossing in my own, more fault tolerant one. Bottom line - the kind of exception handling he wants already exists - but since it's in Smalltalk, it's "old" technology, and he'll have to go ahead and recreate it from scratch. Just like GC, I suppose.
Another thing - about that centralized error recovery thing - Smalltalk has had a default handler (which you can replace with your own) forever. Unless I'm greatly mistaken, the newest Java SDK from Sun includes that kind of functionality as well (without actually having access to the whole stack, but still).
Best I can tell, Vorlath wants Self - but since it's 20 year old technology, he's going to go ahead and reinvent it with garbage collection that isn't garbage collection, and objects that aren't objects. Here's a sample of his thinking on memory management - make sure to put your sanity defenses on full:
This system also clearly defines who owns what. Your so-called GC will work quite differently under the hood than what you're used to. Passing objects around will become very controlled and the need for a GC will not be as great. But if you wish to use one, it will be local to the cluster. The super cluster can of course monitor its activities. The GC will not be a GC in the normal sense. There'll be a memory manager for each cluster. When you allocate memory, you specify whether you want the memory manager to deallocate it automatically, to use the stack or scope for deallocation, or manual deallocation. Most people will use only use one form, but all allocation methods will be compatible with each other. Even if you allocate something that you want garbage collected, you can still manually deallocate it, and vice-versa. You can of course tell the memory manager to only accept certain kinds of allocations and notify you of any inconsistencies. This is mostly to enforce your organization's guidelines. Notice too that you can automatically ignore manual deletions if you tell the memory manager to garbage collect everything no matter what. In this way, you control how things are done and the since the super cluster can invade its containing clusters to change the way certain parts work, you can fine-tune your application without any need to change a single line of your original code... even for how memory is handled. And since clusters are independent, this makes garbage collection much easier. Heck, I don't even see the reason for a GC if your clusters or modules are well written. This is why I'm against GC's. If your data is well organized, there's no need for it. And with clear boundaries and ownership, much of the code to handle memory management can be automatically generated without a GC. So yes, there are alternatives to GC. Dare to see in color and not in B&W.
If that makes sense to you, I'm afraid. The rest of the post is like that, so don't say I didn't warn you :)
Looks like Disney wasn't nuts when they killed the deal with Pixar - they just agreed to buy Pixar, getting themselves a complete CGI animation setup without the pain of building it from scratch. Interesting side effect: Jobs is now the single largest shareholder in Disney.
Stop paying attention to Dave for even a nano-second, and see what happens.
Update: As noted by a commenter, it's all about Dave until it's inconvenient. At which point, he deletes the text down the memory hole. Via the wonders of aggregator caching, here's the text he doesn't want us to see anymore:
Now, let's talk about Microsoft. They're having their third Search Champs meeting this week in Seattle. At the first one, I urged them to support RSS. They did. As a result, their Live interface can plug components together in a very beautiful way. This is something I'm proud of, because it took quite a bit of struggling to get them to do it, and they didn't see the beauty of it until well after they did the work. The struggle, apparently left them angry with me, and they haven't invited me back. This time they've included many of the members of the Web 2.0 Workgroup, which I am a founding member of, but I'm not welcome, apparently. I've sent an email to Robert Scoble, Amar Gandhi, Dean Hachamovitch and Ray Ozzie explaining my embarassment, and also advising them that I will not be available for free consulting in the future. They can pay for it, and get in line. My time is in demand, and I have no time for companies that go out of their way to embarass me. I feel I must disclose this here, because the warm feeling I used to feel for Microsoft in re RSS has turned bitter. This is why.
Scoble tries to explain (via this blog) why Vista instead of XP. He lists a bunch of mostly - to be brutal - dull reasons. Kernel changes, new fonts, better UI.... yada yada yada. There's really nothing compelling there. Yes, my objection to PVP-OPM is not going to sweep the world anytime soon, but there's certainly nothing in that list that's going to convince me to ignore that and move ahead, either.
In day to day terms, working with Windows, what will Vista do for me that XP won't? As part of that explanation, I'd really like to hear "won't prevent you from watching content you own legally on your existing hardware". Oh, and this little escapade with Verizon didn't fill me with confidence either, btw...
Now we get to the real culprit. Method invocation. Allowing methods to be invoked at any time on any object is our generation's goto. This is also related to coupling, but even if you use interfaces, the problem is the same. There are no boundaries. Any object anywhere can basically create any object it wishes and start calling methods on it. I don't know about you, but most code I've seen consists of initialisation, method calls and control statements. Tracking all these method calls is what maintainers have to find out about. What do they do? Where are they? Is the source available? Can I change it if it fails? This has to be done everywhere. This is also where I see a lot of code duplication. One person does it one way. Then someone else comes along and finds an easier way to do things, but missed a few places where this same thing or something close to it is being done. Now your maintenance problem just went up exponentially. Maintainers usually know to try a compile by undefining some of the old methods, but this gets more difficult if there are other parts of your software that still need those calls or if your "easier way" uses those calls itself.
I'll agree with his assertion (not quoted above) that inheritance is overrated and over-used. However, the stuff above? How exactly do objects make this problem worse? The "initialize before use" issue does not disappear further down the food chain - I'd argue that it's easier to walk out into the weeds in C or assembly than it is in Smalltalk, for instance. I have no idea where he's going with this stuff, but so far, it's not making any sense at all.
Registration for StS 2006 at LWNW is now live. Get thee there and register now!
Update: Note that the registration fee is in CDN (Canadian) dollars.
I took a look at the logs, seeing as how the HP downloads have looked fishy for awhile now. It turns out that there's a reason for that; I had a minimal search string for HP downloads that was over-reporting. So adjusting for that, it turns out that HP downloads are in the same neighborhood as Solaris downloads (which makes sense).
So, that means that this last week, the daily download rate was around 216, not 344. Kind of a largish error on my part. Anyhow, that means that the reported rates over the last few months need to be adjusted down the same way. I should have looked at those weird results sooner :)
I just finished the History of Spices book I'd been reading - it was pretty good. Not a linear history; it jumped around quite a bit. For anyone interested in the Western obsession with spices, it's a great read. So now, I'm involved in two more historical tomes:
I've been meaning to dig into the Crusades for quite awhile; I've only just started that book. With Grant's Memoir, it's something I've been intending to get to for years, and my wife bought it as a gift for me. I've read a lot about the US Civil War, and it's an absolutely fascinating period. As with any crisis, the people who rose to prominence seem bigger than life - and Grant was one of those.
There's also a huge backlog of fiction reading stacked up, but I'm just not in the mood for that right now; my reading preferences seem to run like moods.
Everyone understands subscribing. You’ve got your email newsletter subscriptions, your premium cable channel subscriptions, your magazine subscriptions (call now and subscribe to 52 weeks of…remember that?)
No one knows what “syndication” means, unless you’re talking about I Love Lucy reruns. Syndication is a publisher-centric, geek-centric term. For most people, it’s Really Simple Huh? Most people don’t even know that syndicate can be used as a verb!
Then Paul adds a few comments that likely apply widely:
Too little consistency. There is no uniformity about titles, titles plus summaries, or full-text feeds. I won't re-hash the debate on this subject, but let me just say if your feed isn't full-text it won't likely last long in my aggregator.
Too many posts. To be blunt: Faced with feeds regularly containing more than six or seven unread articles I, with rare friend-driven exceptions, usually nuke the whole list.
These are a good takedown for those of us that forget how little most people care about various and sundry things that we obsess about...
It's time for my weekly look at the log files; this week, BottomFeeder downloads held steady at 344 per day - here's the detail:
Who knew there were that many HP users out there? On to to the HTML pages access:
|Tool||Percentage of Accesses|
I swear, someone is just using a yo-yo to decide which browser to use week by week :) Anyway, off to the RSS results:
|Tool||Percentage of Accesses|
|Net News Wire||9.2%|
Tool Distribution looks about the same as usual. Back again next week.
If the MSM was left to their own accord there would never be feeds. There would be forced registration, robots.txt which blocks everything, horrible invalid HTML, and content without any links. It's their version of DRM...
It's all about disintermediation. Before talk radio, all you got was the bland opinions of the "my word" (with a required countervailing piece) on the 11 pm news. They didn't like seeing talk radio explode the old set piece environment. Then the cable explosion happened, and instead of 3-10 channels, there were 30. Then 80. Finally, 500. Instead of limited bandwidth - which made some level of regulation easy to push - we now have more channels than we know what to do with. Where there's room for the "Golf Channel" and the "Food Network", there's certainly room for non-bland opinions. They really didn't like that.
Then, to cap things, the internet stumbled by. That's ended up being a live hand grenade inside the media monopoly. Even with lots of channels, you still need real money to broadcast. With the internet, all you need is a broadband connection and a free (or very cheap) hosting solution. Suddenly, everyone's opinion is available free of charge, with no means to regulate it.
They really, really don't like that. It means that the MSM has been disintermediated. We no longer have to visit the font of all wisdom at (insert major network here) to find out what to think - we can hook our browser or aggregator up to a nearly infinite number of news sources and do our own thinking. Our opinions can't be reliably handed to us anymore; the talking heads have to actually work up an argument.
The music and tv/movie business are going through the same thing. Sure, they whine about piracy, and they do worry about that. I don't think it's their biggest worry though. Consider the iTunes music store, for instance. Like Amazon before it, it's pushed the content producers aside as the biggest source of "what's cool" information. A very simple feature - the "people who bought X have also bought Y" thing - has the ability to sweep marketing campaigns aside. Instead of the content producers relying on their ownership of a pliant set of artists under nasty contracts (along with a few mega-stars who've moved past the control, and up to their own positions of influence), we have a system of user ratings.
That's a massive piece of disintermediation, and the powers that be really, really hate it. It's what Joel was on about in his piece on variable pricing in music and movies. None of this is really new. As technology moves forward, it empowers some existing players at the expense of others. The rise of air travel did in passenger rail; there's still a large body of rail regulation in place here in the US which is a vestige of the preceding power position. I think Kevin is spot on with this observation about how it's going to play out, too:
We're seeing now with MSM what's being mirrored in the Entertainment industry. They're being dragged onto the Internet kicking and screaming and they don't like it. Things are going to have to get worse before they get better.
It's like watching an exhausted toddler who's just been told it's bedtime.
The main Cincom Smalltalk site has been looking a little worn around the edges lately - and it's running on an old box. So, it looks like I've got the ability to move the service and upgrade it while I'm at it - which is what I've been up to all day. The upshot is, when I get done with this (and get it deployed), the site will have an RSS feed - which will bring it up to date.
Here's a perfect example of how comment systems don't "scale" (in the social sense) - any site that covers controversial topics (especially political ones) will end up getting overwhelmed by commenters picking fights. Here's what the Washington Post had to do:
At its inception, the purpose of this blog was to open a dialogue about this site, the events of the day, the journalism of The Washington Post Company and other related issues.
But there are things that we said we would not allow, including personal attacks, the use of profanity and hate speech. Because a significant number of folks who have posted in this blog have refused to follow any of those relatively simple rules, we've decided not to allow comments for the time being. It's a shame that it's come to this. Transparency and reasoned debate are crucial parts of the Web culture, and it's a disappointment to us that we have not been able to maintain a civil conversation, especially about issues that people feel strongly (and differently) about.
This happens on any highly trafficked system - popular usenet groups became useless piles of dreck years ago, and blogs and forum sites are merely following that trend. Look at slashdot or digg, for instance - for every useful comment in a thread, there are dozens (sometimes hundreds) of comments that - boiled down - say "you're a moron" (only in less polite terms).
Any site that gets popular is going to end up going where a lot of the popular political blogs went a long while back - comments off. The only trouble with that is that tracking referers is hard, due to the absolutely enormous volume of referral spam.
Dave Winer is hardly the only one who seems to think that services should be free:
I talked with Matt and Scott Beale about how happy I am that Flickr is still free, and I was very pleased with how generous Yahoo was to let us use it without ads. They looked at me strangely and asked if I had a Pro account, and I said I did, it was a gift from Stewart. Then they told me that's why I didn't see any ads. Ahhhh. I guess when I point to something on Flickr y'all see ads? Uh huh. Oh. Kay. Now I'm slightly less pleased than before.
Well, if they aren't going to show ads, they'll have to fund the site somehow. What would you suggest? Subscription fees by members, such that the members don't see ads? Wait.... that's what they do now! So what does he want? Apparently, he wants them to host pictures freely for all comers, and just make money magically somehow, in a way that he never has to see.
This reminds me of the argument that tools like Cincom Smalltalk should be free, and that we could make plenty of money simply by charging for support. Umm, sure. That works if the free tools are loss leaders (like Eclipse, say) - it works less well in cases where you are actually trying to make money - JBoss comes to mind.
Under the old developer license for $X, and then $Y for maintenance and support model, ParcPlace (and its descendants) went under. Sure, there were plenty of other missteps along the way - but that model simply doesn't work. Unless you can guarantee a large (and always growing) number of new seats sold each year. The reality is, optional support licenses don't sell that well - prospects tend to see that as a place to save money, and then only buy them when they really need them (consider: how often do you spring for the extended warranty on things you buy personally?). If you give the tools away up front, you get even less money.
Ultimately, you have to pay the developers. Show me a model that works for that - either for tools, or for websites. In Flickr's case, I fail to see how ads are that irksome, when the end user (i.e., the one incrementally adding load to the site) gets to use the site without charge.
The "atom:updated" element is a Date construct indicating the most recent instant in time when an entry or feed was modified in a way the publisher considers significant. Therefore, not all modifications necessarily result in a changed atom:updated value.
There are two problems with this theory. One, as Dare notes, is that there are no mainstream tools in existence that allow a poster to mark an item as updated (such that the Atom flag would get ticked). Second, "updated" is fuzzy. Fixing a typo happens a lot - do users really want to be flagged every time that happens? I've learned from feedback that the answer is no. On the other hand, an actual update with actual new information would be nice to flag. Sadly, as dare notes, it's not easy to do that with existing tools.
Theory and practice often collide, and that messy collision area is where developers live.
Professor Peabody has been busy - I note that the RIAA thinks it's 1970, and taping music from the radio will kill - kill, I tell you - the business:
As satellite and digital radio offers a very wide range of music to choose from, the music industry is eager to control what consumers can do with radio broadcasts. According to the music industry, if consumers are given the opportunity to record music from digital radio, they will likely start recording songs instead of purchasing them. Last year, the RIAA began proposing a broadcast flag type system and now they are in negotiations with satellite radio companies, such as XM about controlling what their listeners can do.
Yeah, all those mix tapes I made back in college prevented me from buying the truckload of CD's sitting in front of me. Want a sure way to kill XM? Make it so that I can't do anything with it.
I'll have to add this to my set of release to-dos - the information pages here are out of date, and I know that this misled a few people into thinking that the winter release had slipped. In fact, it shipped in late December, and engineering is about to get the build cycle for the next release (summer 2006) under way.
I've put in a request to get the relevant pages on the server updated; sorry for the confusion.
Over the last couple of weeks, I've started seeing something new - a bunch of the mailing lists I'm on are getting spam. I guess the barrier to entry to most list managers is low enough to be scripted. Sigh
A group of companies is attempting to extend SOA specifications to include a language-neutral object model, over objections that the effort is redundant to work already being done in the Java Community Process.
It's so heartening to see the OMG rebuilt from the ground up, but on port 80 with text...
It's been possible to make use of standard out on Linux/Unix for a long time with VW, but it's always taken a bit of work. Over the last two releases, a few things have been done with command line argument processing and sub-system support that make things easier - even on Windows. For instance - try this using a Windows command shell, in the VW 7.4 image directory:
..\bin\win\vwntconsole.exe visual.im -nogui -doit "3 zork"
As you might expect, the #zork message is going to raise an MNU - notice how the stack is reported to standard out? The -gui argument is also useful (-headless does the same thing), and it's been in the system for a couple of releases now. You can start an image with the GUI inactivated without having to do anything special now.
Our engineering group recently got a message that Microsoft is sending out about SQL Server support for the (now ancient) DB-Lib libraries:
"Although the SQL Server 2005 Database Engine still supports connections from existing applications using the DB-Library and Embedded SQL APIs, it does not include the files or documentation needed to do programming work on applications that use these APIs. A future version of the SQL Server Database Engine will drop support for connections from DB-Library or Embedded SQL applications. Do not use DB-Library or Embedded SQL to develop new applications. Remove any dependencies on either DB-Library or Embedded SQL when modifying existing applications. Instead of these APIs, use the SQLClient namespace or an API such as OLE DB or ODBC. SQL Server 2005 does not include the DB-Library DLL required to run these applications. To run DB-Library or Embedded SQL applications you must have available the DB-Library DLL from SQL Server version 6.5, SQL Server 7.0, or SQL Server 2000."
What does this mean for ObjectStudio developers using SQL Server? You would be better off using the ODBC DB wrapper that comes with ObjectStudio than with the SQL Server wrapper (which, at present, still uses DB-Lib).
There's a long post (and a lot of good comments) over on Sam Ruby's blog about the various problems with Apple's new PhotoCast RSS Module. I find that I'm having a very hard time getting worked up about this. Sure, Apple could have done things better on this module. Tim Bray and Mark Pilgrim have been two of the more vocal on this; witness Mark's comments:
To sum up, the “photocasting” feature centers around a single undocumented extension element in a namespace that doesn’t need to be declared. iPhoto 6 doesn’t understand the first thing about HTTP, the first thing about XML, or the first thing about RSS. It ignores features of HTTP that Netscape 4 supported in 1996, and mis-implements features of XML that Microsoft got right in 1997. It ignores 95% of RSS and Atom and gets most of the remaining 5% wrong.
I don't know. I understand the desire for cleaner XML; heck, I reversed my longstanding ambivalence toward Atom awhile back after Dave Winer decided announced that he was pushing work on the abomination that is OPML. It's hard to come up with something less well specified than MetaWebLog API, but Winer's just the guy to manage that feat.
Having said all that, at the end of the day, end users of aggregators don't really give a damn about how XML, or RSS, or OPML (et. al.) ought to be. They see nifty features (or hear about them), and want results. Which means that developers have to just suck it up and slog through the crap. It's not as if we always get things right either; I joined a long list of aggregator developers in not dealing properly with namespaces. Incidentally, I just uploaded a fix for that issue - if you care (in the wild, the kind of bug that post raised is unlikely to come up), you can grab the update.
I've also been following the OPML reading list threads, and - as much as I dislike OPML - the idea has merit. BottomFeeder already reads OPML and OCS, either for importing lists of feeds, or for addition to what's become an afterthought - feedlist support. As it happens, it won't take much work to change the current feedlist support into reading list support. At present, feedlist feeds only update when you select them, and the feedlist itself is never re-read. Changing that will be pretty easy, and will be something that hits the next release.
So at the end of the day, I just can't get that worked up over the various things that disturb the XML geeks a lot (and I don't use that phrase disrespectfully; I'm a Smalltalk geek, and care deeply about a number of things that many developers can't get worked up about). In my dealings with XML, I'm a developer, and I mostly have to make sure that my code works for my users.
Eitan Suez sees the productivity behind tools that skip the "rinse/repeat" steps:
How many times have you heard or read of a selling point for a software framework or product or solution being "and you can make changes to the system without having to recompile the code." I must admit I'm sure I used that line more than once before (in my early days programming :-)).
So here's what I find interesting: instead of coming up with all kinds of schemes to get around the problem, why don't we just deal with the root cause? I think it's staring at us in the face: why don't we simply program in an interpreted environment?
We've had that over here for a long time Eitan - come on in, the water's fine. The only thing you have to lose is your lower level of productivity :)
TV Week reports that iTunes downloads are boosting ratings:
"TV Week reports on NBC's claims that iTunes downloads are boosting ratings for their primetime shows. Citing one example 'NBC's "The Office" delivered a 5.1-its highest ratings ever-last Thursday among adults 18 to 49, a bump the network credits in large part to the show's popularity as an iPod download.
What, you mean pirates aren't running off with all the eyeballs? Quick, someone send a few dozen cluesticks to the RIAA and the MPAA!
The Register reports that the Revolution will hit the 2006 holiday season:
"As for North America, we need to release it by Thanksgiving, or otherwise we won't receive support from the retail industry. So the Revolution will be released prior to that period."
More importantly, they recognize that there's an important price barrier:
Iwata wouldn't be drawn on the console's price, but he did claim it will be "affordable".
"The amount of money that people are willing to spend on video games is getting less every year," he said. "Even if it's a superb machine, it's not going to sell if it's ¥50,000 (£246/$433). We plan to make [Revolution] an affordable price."
I think he's right about the price - Nintendo has managed to hit the impulse buying range with the GameCube - under $100. The Revolution will be higher than that, but it sounds like they know that there's an upper end to the impulse range.
Imagine a world where you could use Java if you wanted to, but it would compile to native code and be usable with many other languages. Where you could save your Java source and later load it as C++ or even Perl code. Where specialisation and use of specific hardware features would be possible such as writing codecs and using vector operations, but in a portable way. Where you would control the dynamic aspects of your software rather than the other way around.
Pay no attention to the semantic differences behind the curtain.
I spent the day in Dallas, visiting a division of Northrop Grumman - their IT solutions group. These guys have a very cool Cincom Smalltalk (VisualWorks) manufacturing support application they call MES (Manufacturing Execution System).
It does a ton of stuff to manage the quality and execution of jobs in what they call "slow manufacturing". In this case, that means aerospace and ship-building (as opposed to assembly line car production, where things move very quickly. Cars roll off the line fast - a modern naval ship can take years to build. Airplanes, helicoptors (etc.) take less time, but are still much bigger (and slower) jobs.
They started building this application a long while back, in VW 3.0. They are just now getting it migrated to the latest (7.4) release - and they are very pleased with it. They gave me a tour of the application, and peppered me with questions about our roadmap - I didn't have time for the plant tour (our marketing person, Suzanne, got one - I'm jealous!). It would have been very cool to see BlackHawks getting put together, with all the shop floor PC's running their Cincom Smalltalk application.
Funny thing is, they told me there's quite a market for this kind of thing - an awful lot of shops are still heavily paper and spreadsheet bound (shades of what other customers have told me about financial services applications). They are also investigating some nifty handhelds - Rudy Morales, the project manager, showed me one of the military grade ones - by throwing it onto a table! Very cool device, that one.
Fun day, even if it started off way too early. next time, I'm making time for the plant tour :)
I posted on live updating the other day, and had a commenter tell me that you could get to much the same thing in Java. Specifically, he said:
Most shops are using Tomcat for J2EE development, which has had code reloading for quite some time now (the other commercial ones like Orion have been doing this too). When I write my code I save, then reload the browser. Same as you. Please educate yourself before spreading FUD.
The problem is mostly one of understanding fully what I meant. I meant live updating of both a development time server (i.e., a test system) and live updating of a runtime server - with no downtime.
Here's what I do. I fire up the development environment for my server on my Linux box. Which, by the way, is an ancient PII 400 Mhz system. Try running any set of Java tools on that - Smalltalk, which people inaccurately call "bloated", runs just fine there. Anyway - I make my changes on that box, and test them - breakpoints in the server code, hit a service from the browser. Write code in the debugger and browsing tools, keep testing... until I get the change I need done. At that point, I take the following steps:
- Selecting the package (or packages) that I made changes to, I use the code browser option to file-out changes.
- Version the changes into my Store repository
- Save the new version(s) of the changed package(s) to disk as one or more parcels
- Upload the file from step (1), and the file(s) from step (3) to the server
- Drop the change file(s) into a patch directory, and the parcel(s) into the application startup directory
- Using a web interface, instruct the server to load the change file(s)
I upload the new parcels so that the next time I start the application server, the correct version of the code will load in. I start the system from a clean image that loads the entire application server codebase and configures itself. However, I don't need to restart the running server for updates - In step (6), I loaded the changes into it as it was running. Those changes might well include shape changes to classes, including classes for which there are serialized objects on disk (posts are saved as serialized objects in this server).
This gets to the real power of a Smalltalk system - the image updates every instance of the changed classes in memory. So if I have a class Post, and that class had 4 instance variables - and I just added a fifth - every single instantiated instance now has that fifth instance variable. That fact explains why I normally code my accessing methods as follows:
authorName ^authorName isNil ifTrue: [authorName := ''] ifFalse: [authorName].
That code makes sure that the new instance variable, when accessed, has a reasonable default. For more complex cases, I'll write a script (which I load the same way I loaded the patch) which makes sure that all the new instance variables have the right sort of values.
Notice what didn't happen here - downtime. The server was running while I did all that, quite possibly answering requests. If I needed to have it not answer requests during the update, that would be easily accomplished as well - I just add more code to my patch script.
This makes Smalltalk a perfect choice for systems that need to run all the time - but also need periodic updates. The server running this blog almost never goes down - I've been updating it using the procedure I just outlined since 2002. Some of the changes have been fairly major, including changes to the way posts are saved, and changes to the HTML output from domain objects. I've also made live changes in various other things, like the way that referers are found and saved. The bottom line is - I'm able to upgrade the server in place, with no downtime. Not just the test server, during development - the production server, as it's running.