After reading this piece in InformationWeek, I'm pretty sure that most corporate networks are a lot less secure than we'd like to think. Read it and ponder.
The real story in the BlackBerry lawsuit isn't even being looked at - the utter absurdity of the patent at issue. Here's the story from the point of view of the outfit that went after RIM:
He caught his breath when he saw the RIM story. For a decade, Mr. Stout and his long-time client, Chicago inventor Thomas Campana Jr., had been patiently sitting on a batch of patents for a system to send text messages from computers to wireless devices.
Knockoffs. Amateurs. Who was RIM kidding? That's our technology, Mr. Stout thought. He picked up the phone, setting off an improbable chain of events that has ignited one of the most celebrated intellectual property showdowns in U.S. history. The fateful call put two proud inventors -- one Canadian and one American -- on a collision course that goes to the essence of what it means to develop something new, claim it as yours and then make it wildly popular, even indispensable.
So Campana claimed it's some kind of innovation that he figured out - apparently all by himself - that if a wireless device is on a network - then gosh! You can use SMTP to direct email messages to an address, and the client device can use POP (or IMAP) to yank them down. Wow - I'm so glad he came up with that, and even happier that some uninformed yutz at the PTO handed him a "poach on the industry for free" card. RIM is no better here; they wanted to be the same kind of gatekeeper, and just ended up on the short end of the stick.
Is minimal technical literacy too hard to ask for at the PTO? I guess so.
Blaine talked a little bit about his upcoming talk at Smalltalk Solutions, so I figured I'd mention mine. I'm talking from 2:00 - 2:50 on Tuesday the 25th of April - it's an experience report on various issues I've had with the blog server over the last few years and how I've addressed them.
I started out with a very simple server in 2002, and it really hasn't gotten very complex over the last 3+ years - but I have had to deal with a few things from time to time. I'll be talking about those problems, and about my live patching scheme.
Scoble takes off with Dave Winer's piece on a different sort of VS funding - and I must say, after saying that the idea is to disintermediate, he immediately proposes a new middleman - but that's not what I wanted to comment on. Scoble's take is that venture funding isn't as critical now as it once was:
What are the “ventures” the entrepreneurs actually need?
See, in the 1980s, they needed money. Why? Cause the growth was in computers and other electronics goods. I worked on an assembly line at Hewlett Packard one summer in the early 1980s. Why did these (and smaller startups like Apple or Atari back in the early 80s) need money? Cause building physical machines costs money. Assembly lines. People. Materials. There was a high marginal cost of goods.
But today’s world isn’t money constrained. You don’t need much money to build software or services.
Oh really? I don't need money to pay my mortgage? I don't need money for anyone else who plans to come along and help me? I don't need money for the monthly hosting bills (assuming that I'm building a hosted solution)? If my solution gets big, I don't need more money to pay for all the bandwidth I'm using?
Even if I manage to get hosting paid for somehow, there's the simple matter of paying the day to day bills each month. Most people don't have 1 - 3 years of living money stored up, so they can't just jump off and try to be the next big thing without help. Which means one of two things - venture funding or a bank loan (in the simplest case, maxing out a set of credit cards).
There are different risks attached to each route, obviously, and different levels of control as well. But to state that money doesn't constrain creativity anymore? Lots of luck with that one. Try explaining that to your mortgage company, and the local supermarket.
Maybe Vorlath just needs to sit down with a Smalltalk system for a few minutes instead of just throwing uninformed rocks. In his latest post, he's decided to explain (again) what's wrong with objects, and he's using Dan Ingall's 1989 talk as the starting point. His target this time is polymorphism:
If you have a queue and can put any kind of type in it. When you get to processing them, you would have to check the type of each kind. There's more on this at around 9:22 of the video. His solution and what OO is about is that instead of checking each type before doing an operation, you would just ask the object in the queue to do this action. In C++, this is somewhat like virtual functions. In SmallTalk, it's a little simpler than that in that you only have to send a message. Ok, fine. If these are actions that these objects are supposed to do, then I'm all for it. However, many operations such as inserting itself into the queue is not the job of the object. It's the job of the higher-level running program. There needs to be something that controls the interaction between the objects and the queue as well as the sending of the object to another location after it has been removed from this queue. There's a bigger problem here. Are all these objects independant? No! He's talking about a common Display operation. Well, you can't display anything without a screen. So these objects have a common incoming interface in that they all implement the Display command. But where is the outgoing interface? What commands do these objects require? What resources do they need? There is no mention of this. In fact, I've yet to see a language that has this. If I want to replace the display, it's impossible because the object is coupled to it. Not only that, but this coupling would happen with any external function call. This is what is wrong with objects and I've mentioned in previous entries.
VisualWorks (and Squeak, for that matter) is a direct descendent of the system Ingalls was discussing. The "display" operation being discussed is #displayOn: - which is implemented by any object that knows how to display itself out on the screen (or whatever device you are displaying on. Ingalls is making the common case against the switch statement. Basically, instead of this:
Display(x) Case type(x) of Doctor ["do doctor display"] Nurse ["do nurse display"] Window ["do window display"] ...
The OO complaint against this kind of code is simple - that sort of case statement tends to litter a codebase, and every time you add a new kind of thing to be displayed, you have to modify every one of those case statements. Whereas, if you use polymorphism:
displayOn: someDevice "insert code here for the object to display itself"
Note that the device is sent in as an argument; that way you can get more specific if you need to. That kind of code actually tends to be specific to widgets; the more common case in application code is a method like #displayString - i.e., a common method sent by a widget whenever it needs a way to display some object inside itself. For instance, a Listbox that holds a disparate set of objects. Instead of the case statement, which switches amongst the types, the system sends #displayString and we simply implement it ourselves. For instance, say I have a user in a system whose roles I'm modifying; I might have a simple listbox that displays their name, with a collection of other widgets that, upon selection, displays their access rights. The #displayString method might look like this:
displayString ^self lastName, ', ', self firstName
That way, if the system has different employee types classified (Manager, LineWorker, etc), then I merely need to implement a different #displayString appropriate for each one. I don't need some grand switch statement outside - that code simply does something like this - here's the code that assigns a new text to a label in class Label:
text: aValue "Set the value for text. If you subsequently modify aValue, you will need to invoke this method again in order to register the change with the receiver." text := aValue. text := text displayString. width := nil. self updateNeedsScan
Notice how it doesn't care what kind of text is being handed to it? It simply tells it to display itself, and lets that object handle the details (i.e., it reduces coupling). That's the part Vorlath misses; he wants the #displayString code to be all bunched up with the specifics of what kind of device is attached. Those are details that are irrelevant at this level.
Well, then he decides to come out strongly (again) against GC:
Then around 23:00, he starts talking about automatic memory management. While I agree that some automatic memory management is good if it's clear and concise such as the stack, Dan Ingalls offers no reasons other than it's easy to get it wrong and it doesn't say anything about the problem being solved. I can't believe a programmer would ever say such a thing. Perhaps he believes 640K will be enough for everyone too? Programming in general is easy to get wrong. By that notion, we should just give up entirely until we can get robots to do the programming for us. So the getting things wrong argument is bunk. The next thing he says is that it doesn't say anything about the problem being solved. Well, last I checked, memory is a resource. I can't think of anything MORE important than correct management of this resource. I've yet to see a GC that operates correctly. And if your data is so unmanagable that you can't keep track of it, you're doing something wrong. Sorry to all you out there that disagree, but if you can't keep track of your data, why should I expect you to do anything useful with it? So far, I haven't heard ONE good reason that would explain why automatic memory management is a requirement. This is just shameful all around.
There's no one memory management policy that is appropriate for all client and server systems. This fact drives Vorlath to state that the entire pursuit is meaningless. I might as well come out strongly against speed limits, since no one policy is useful for both city streets and the freeway. What you want is a system that will allocate more memory as you need it, and get rid of it f when you don't - within a set of guidelines that are appropriate to your deployment situation. Smalltalk systems allow for that level of control. In VW, we have a set of tuning parameters in two places:
- ObjectMemory, where we can set (amongst other things) the starting sizes of the various memory zones used by the VM
- MemoryPolicy, where we can change the policy used by the VM to allocate/collect
At the simplest level, you can do things like decide that your application should stay within a given range of memory usage, and set the policy appropriately. BottomFeeder does that (thanks to some nice policy code created by Terry Raymond). The developer may need to tweak those parameters specifically for a given application.
The point being, we don't need to throw our hands up in despair and go back to sharp rocks and pointed sticks. His point about being able to specify the outgoing interface makes no real sense to me; the developer presumably knows what set of objects he's dealing with, and designs accordingly.
Interested in showing off your Smalltalk skills or application at this year's Smalltalk Solutions, but don't have the cash for a standalone booth? Turns out you don't need to - We are setting up the Smalltalk Experience Pavilion (PDF):
- Cost: $1200 USD
- You get floor space with a booth display unit - 1 meter display, set up/tear down done for you
- Specific signage
There are 12 spaces available in the pavilion - check out the linked PDF for details. If you would like to have your own booth space, the document has details on that as well. See you there!
If you're a fan of the Potter series, then run - don't walk - over here, so see what looks like a reasonable argument for Dumbledore not being dead. We won't know for sure until book 7, of course - but the clues seem to be worth thinking about...
As I noted last week, the BottomFeeder access numbers have been off for awhile - the HP numbers have been in line with Solaris (duh), rather than the high numbers my script was producing. Note to self - always look at anomalous results before reporting them :) Anyway - the numbers for the last week:
Which translates into 272 per day, which is an accurate number - and based on the downward adjustments for the bad script, a pretty good one. On to the HTML page accesses:
|Tool||Percentage of Accesses|
Those numbers look normal. On to the RSS tool accesses:
|Tool||Percentage of Accesses|
|Net News Wire||9.4%|
And that looks like the normal RSS access list as well.
The traditional approach to corporate communications envisages a controlled process of scripted messages delivered by the chief executive, first to investors, then to other opinion-formers, and only later to the mass audiences of employees and consumers. In the past five years, this pyramid-of influence model has been gradually supplanted by a peer-to-peer, horizontal discussion among multiple stakeholders. The employee is the new credible source for information about a company, giving insight from the front lines. The consumer has become a co-creator, demanding transparency on decisions from sourcing to new-product positioning.
The interesting thing is how he explains the rising problems with the traditional model - it has to do with the ongoing loss of faith by the public in elites (whether they be political, business, or otherwise). That's a process that really got started in the West in the aftermath of WWI, but the history isn't relevant here - merely the fact that it's been going on, and is accelerating:
The most profound finding of the 2006 Edelman Trust Barometer is that in six of the 11 countries surveyed, the "person like yourself or your peer" is seen as the most credible spokesperson about a company and among the top three spokespeople in every country surveyed. This has advanced steadily over the past three years.
In the US, for example, the "person like yourself or your peer" was only trusted by 22% of respondents as recently as 2003, while in this year's study, 68% of respondents said they trusted a peer. Contrast that to the CEO, who ranks in the bottom half of credible sources in all countries, at 28% trust in the US, near the level of lawyers and legislators. In China, the "person like yourself or your peer" is trusted by 54% of respondents, compared to the next highest spokesperson, a doctor, at 43%.
The fact that it's a trans-national phenomenon means that you can't isolate it to some specific political or business event - it's bigger than that. For the purposes of PR, you don't even need to worry about how or why though - you simply need to think about how to best get your message across. If only 28% of Americans consider a CEO to be a credible source, then PR that focuses on the CEO almost certainly isn't doing the job.
Consider MS, for instance. Bill Gates speaks frequently, but he's always done that. There's been an uptick of trust in MS over the last few years amongst developers, and I think I'd have to point at their bloggers for that. Those people - Scoble in particular - added an authentic voice to the company from someone who isn't living the rarified life that Gates does. It's made the company a lot more transparent and - IMHO - trustworthy. Which is what Edelman is after here:
How can companies embrace this future of empowered stakeholders? Speak from the inside out, telling your employees and customers what is happening so they can spread the word for you. Be transparent, revealing what you know when you know it while committing to updating as you learn more. Be willing to yield control of the message in favor of a rich dialogue, in which you learn by listening. Recognize the importance of repetition of the story in multiple venues, because nobody believes something he or she hears or sees for the first time. Embrace new technologies, from employee blogs to podcasts, because audiences are becoming ever more segmented. Co-create a brand by taking on an issue that makes sense for your business, such as GE's Ecomagination campaign where green is truly green.
If you want to get the message out, pushing it from the top down simply isn't the most effective way to do it anymore. Maybe with the President of a major PR firm saying it, more marketing departments will pay heed.
Scoble reports on a dinner he set up with a diverse set of bloggers and Jim Allchin, senior exec (Windows) at Microsoft. Give MS credit for listening to outside voices - this is better than just talking to the tech press or giving speeches. I'd have loved to be in on the DRM conversation though :)
I came across an interesting language comparison today - a Red-Black tree implementation in Java, Python, C++, and Java. One of the things that jumped at me was stylistic - in all the implementations, the insert() method was very, very long. Why did that strike me? Well, I've been doing Smalltalk so long that anything over 7-10 lines starts to grate on me. So I took a look at it; here's how I would refactor that method in Smalltalk:
rbInsert: aVal and: sw ((left notNil and: [left color = self red]) and: [right notNil and: [right color = self red]]) ifTrue: [color := self red. left color: self black. right color: self black]. aVal < val ifTrue: [self rotateOnLesserVal: sw] ifFalse: [self rotateOnGreaterVal: sw]
Which, at least for me, makes it far, far easier to follow. This has a lot to do with tool use, I think. In Smalltalk, we edit method at a time using a code browser; most people edit other languages in a text editor (sometimes embedded in an environment, such as Eclipse - but it's still text editing). The Smalltalk tools really push you toward small methods - partly just so that it all fits in the visible part of the pane. Which isn't that different, I guess - the old policy I had in C was that a method should be no longer than a page - i.e., the visible portion of the text editor without scrolling.
Most of the conclusions made in the post seem ok to me - I definitely value dynamic typing more highly, but that's probably because my longer use of it has convinced me that the kinds of errors that static advocates worry about just don't come up that much. Nearly every time I see a MessageNotUnderstood, it's an initialization problem.
The only other quibble I'd have is with the assertion that Java is compiled. Like Smalltalk, it's dynamically compiled - byte code is converted to platform executable at runtime by the VM.
I've gotten all of the content from smalltalk.cincom.com converted now, and I have a test site running. I'm not ready to make that public knowledge yet; it's at an URL location that won't stick, so I'd just as soon not see people start making bookmarks. I've had a few people look, and reaction is positive so far - if you're really interested, email me and I'll let you have a look.
Overheard in the Smalltalk IRC channel, as a comparison of the inspection capabilities of .NET tools versus those of Smalltalk:
it's actually a bit like inspector cluseau, without the eventually getting things right
Keith Ray links to a 1989 video of a presentation by Dan Ingalls on Smalltalk - back when he was an Apple employee. The comment below hits on one of the classic issues in procedural programming: the switch statement. Sure, they can be useful. Smalltalk simply provides a better answer: polymorphism.
Dan Ingalls , principle designer of Smalltalk, with Alan Kay at Xerox Parc. This video was sponsored by Apple, recorded in 1989. In introducing OO (and Smalltalk in particular), he describes the main failing of non-object oriented languages in writing complex software: the switch statement. The switch statement has all sorts of problems with cohesion and coupling. The irony today is that almost all OO languages today, other than Python and Smalltalk (in which it can easily be implemented), still have switch statements.
This is a great site - there's a flash tour and video of portions of the Maginot Line. Great stuff for history buffs.
Now here's an interesting experiment - NASA is going to toss an uninhabited spacesuit out into orbit, with the environmental controls off, but the communications gear on. The idea is to see whether or not the idea can be used as a cheap satellite:
"We've equipped a Russian Orlan spacesuit with three batteries, a radio transmitter, and internal sensors to measure temperature and battery power," says Bauer. "As SuitSat circles Earth, it will transmit its condition to the ground."
Unlike a normal spacewalk, with a human inside the suit, SuitSat's temperature controls will be turned off to conserve power. The suit, arms and legs akimbo, possibly spinning, will be exposed to the fierce rays of the sun with no way to regulate its internal temperature.
"Will the suit overheat? How long will the batteries last? Can we get a clear transmission if the suit tumbles?" wonders Bauer. These are some of the questions SuitSat will answer, laying the groundwork for SuitSats of the future.
The cool part for us non-rocket scientists is that we can listen in:
SuitSat can be heard by anyone on the ground. "All you need is an antenna (the bigger the better) and a radio receiver that you can tune to 145.990 MHz FM," says Bauer. "A police band scanner or a hand-talkie ham radio would work just fine." He encourages students, scouts, teachers and ham radio operators to tune in.
This is a blurry line in the world of truly dynamic languages, and it reminds me of the absurd notion of final in Java. There are times when I need to extend an existing class to provide additional functionality because that is where it belongs . Sometimes people put things in the wrong place, but the idea is that they should just “write a function” isn’t necessarily the right solution either.
I agree completely - better to put the method where it belongs than to introduce a bunch of wrapper classes. It's easier to understand, and easier to deal with - and I say this as someone who's been managing a set of class extensions for BottomFeeder through numerous releases of Cincom Smalltalk.
Simpler is better.
This piece explains why flaming in online forums (email, usenet, blogs, etc) is so much more common than the in-person kind: it has to do with the inability to gauge reaction and adjust. Yes, I realize that it's obvious :) Having said that, it's a good read:
Communication via the Internet can mislead the brain's social systems. The key mechanisms are in the prefrontal cortex; these circuits instantaneously monitor ourselves and the other person during a live interaction, and automatically guide our responses so they are appropriate and smooth. A key mechanism for this involves circuits that ordinarily inhibit impulses for actions that would be rude or simply inappropriate -- or outright dangerous.
In order for this regulatory mechanism to operate well, we depend on real-time, ongoing feedback from the other person. The Internet has no means to allow such realtime feedback (other than rarely used two-way audio/video streams). That puts our inhibitory circuitry at a loss -- there is no signal to monitor from the other person. This results in disinhibition: impulse unleashed.
This relates to the "tone" post I made last week - and explains why it's a bigger problem online.
Hey look - the PTO decided to grant Cingular a patent for showing emoticons on a mobile phone. What next? A patent for the ability to use Unicode?
The USA based mobile operator, Cingular Wireless has managed to get a patent on the concept of using emoticon on mobile phones. While the aim of the patent is to enable the displaying of MSN style graphics on handsets, they also managed to patent the delivery of text based emoticon - so presumably sending :) via an SMS - if selected via a dedicated or softkey, would be a breach of the patent in future.
Do they let anyone work at the PTO these days, or do they specifically test for cluelessness?
While a majority of organizations claim they are already using word of mouth and, with even higher numbers noting WOM is either extremely or very important to the organization’s overall marketing plan I was surprised to learn that 71.4% of all organizations that responded to the survey don’t have an established word of mouth marketing plan.
I'd say that blogs count as a word of mouth exercise - whether most corporate efforts that way count as "organized" is another matter entirely. Certainly my efforts here don't come from any large scale initiative; I did this myself, using software I wrote. Sounds like a lot of other firms are in the same place. Which is interesting, because word of mouth is very effective.
Think about it - what's more likely to drive you to try a new restaurant:
- A big ad in the newspaper or on local TV
- A friend you trust who tells you the food is great
Kind of answers itself...
I've been neck deep in a web project over the last few days - I'm migrating content in order to put up a new and improved Smalltalk website. The end result of this should be a more up to date website, with RSS support. The actual deployment may take longer than the work itself - there's an upgrade of the server for this site underway, so I may have to wait until that shakes out.
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...