Resource Representation SOAP Header Block (RRSHB) -- Enables a SOAP message to contain references to external resources. These resources can be cached by the recipient so that they don't need to be transmitted in the message, which saves bandwidth when multiple messages contain the resource.
Microsoft has produced a funny, star-studded video depicting Bill Gates' last day at Microsoft.
Bill Gates has announced that he's stepping down from his day-to-day roll as CTO at Microsoft so that he can focus full time on this philanthropic foundation. Last week at his keynote at the Consumer Electronics Show (CES) 2008, he showed a video of what that day will be like. It's pretty funny.
I now have categories. This is a new feature of the dW blogs. I've applied categories to my June blog postings.
If you're looking at this posting on my blog's web site, in the column on the right margin, you'll see the usual list of recommended web pages and "blogs I read" list. In between, you'll see something new, my categories list. Click on one of them to see just the postings in that category.
Here's my vague notion of the meaning of the categories I've created so far:
As I have time, I plan to go back and categorize my postings from previous months.
I hope you'll find these helpful. Please let me know if you do by adding a comment here or sending me e-mail. If you can think of other categories that would be helpful, please suggest those too. Thanks. [Read More]
A current thread of discussion is what blog readers to use. A problem with blogs, as you may well have discovered, is that there's lots of them and they're updated at all different rates. It gets old checking them each day just to find that there's nothing new, but it also sucks to check one after a week and find there's been something useful there for several days but you didn't know about it. You kind of wish blogs worked more like e-mail, such that each new blog entry would be mailed to you and you'd be notified. Perhaps you could just subscribe to the ones you're interested in (and not all one-bazillion blogs there seem to be in the world these days), and perhaps have a different mailbox for each blog.
This is the idea behind RSS and Atom feeds. They syndicate information in a machine-readable form (XML--what a shock!) so that a feed reader (which works like a web browser or e-mail viewer) can process the information and present it to you. Not only can the reader subscribe to only the blogs you point it at and keep each one's feed separate, but it can automatically check the feeds periodically and let you know when there's new content.
For example, if you're reading my blog on the developerWorks site, in the upper-right corner of the web page, you'll notice a calendar and a button under it labeled "RSS." If you click on it, the link returns not an HTML document but an XML document. The XML's root element is an <rss> element, containing a <channel> element, containing a bunch of <item> elements. Your RSS reader interprets this and displays the blog to you in the manner it sees fit.
James Snell has commented that he uses SharpReader, which is also what I use. Seems like a tried several a couple of months ago and settled on this one. It's a GUI that runs like a web browser or e-mail viewer. Bob Sutor and Bill Higgins say they like to use Bloglines, which is a web site that shows you the blogs you're interested in.
What I like about something like SharpReader is that I can sync it, then read stuff off-line, something you can't do with Bloglines since it's a web site. (Then again, some blog feeds don't support off-line reading, they essentially just feed a URL to the entry, which isn't much of a feed. Or they only feed the first paragraph, so you have to be on-line to read the rest of the entry. Guess they're saving bandwidth.) Bill says that Bloglines is not so much a reader, but a community that lets you know who's reading what blogs and other blogs that are similar to the ones you like. So I guess it all depends on what you're looking for.
One problem that RSS feeds still can't solve is that once you subscribe to one, you get all of the items published on that feed, even if you're only interested in some of them. There is currently no "RSS policy" that us authors can use to describe their items and you subscribers can use to filter the items they receive.
James Snell has also made some interesting comments about the information pull model that services like RSS and Atom represent as opposed to the push model of e-mail, where you get lots of junk pushed your way by anyone who knows your e-mail address, and where you have to actively ask someone else to unsubscribe you from a mailing list.
In any event, if you're manually polling blog web sites and thinking there's got to be a better way, there is. Check it out. [Read More]
Soon, 50,000 homes in Boulder will soon be decked out with the latest in environmentally-friendly, energy-saving technology -- including solar panels, electric cars and, for some, a specialized heating, cooling and lighting system -- all of which will be integrated into a monitoring system that reports the home's carbon footprint to the homeowner.
Of course, it's not all good news. One of the main features of Smart Grid City is that homeowners can produce their own electricity from sources like solar panels, and when they produce more than they can use (including charging batteries in the house and their hybrid/electric cars), they can add the excess power to the city grid. What they add gets subtracted from the power they use from the grid. Ultimately, if a house generates more power than it uses, the homeowner gets paid by the power company. A good idea? No so fast. "Consumers as Producers" (Wall Street Journal) reports a concern that homeowners should be encouraged to use less power and generate more of what they use, but not to become energy producers. Homes producing electricity for other homes would be a bad thing?
[BPM BlueWorks is] a cloud-based set of strategy and business process tools. BPM BlueWorks provides business users with the collateral they need to implement business strategies within their organizations based on industry-proven business process management techniques.
I don't find that description very helpful. It seems to be a lot of things to a lot of people: A tool for creating business processes; a cloud hosting that tool; a cloud hosting reusable process components which can be used by the processes developed with the tool; a community for developing these business processes. According to Michael Vizard:
The idea is that IT people and business executives can collaboratively model a business process and then export that model to a set of IBM Websphere Business Events software to execute it. The model serves to configure the Websphere software to match the business process. Because the model essentially represents a higher level of abstraction above the core middleware software, it also allows customers to update the business process as often as required, which for the first time allows IT to be responsive to the rapidly changing needs of the business.
I'm not sure what Websphere Business Events has to do with BPM. According to Sandy, BlueWorks is for creating "dynamic processes," which is interesting because processes usually contain a centralized plan (e.g. orchestration); dynamic implies the collaboration is more like choreography. If so, then WBE makes sense because it supports choreography, which is to say that it creates very dynamic connections between components.
The Java patch for the daylight saving time schedule change has a bug. But most applications are probably unaffected.
As discussed in Daylight Savings Time and Java, the schedule for daylight saving time in the U.S. is changing this year, which means computers need to be patched, which includes Java and thus IBM's Java-based products like WAS. IBM has set up a DST section on the IBM Alerts site to help make the patches easier to find.
Well, it turns out that Sun's DST patches for Java themselves have a bug. It was discovered last week, but relates back to a previous bug:
There's some debate as to how likely you are to run into this problem; it's easy to recreate, but it only affects code for parsing timestamps with three-letter timezone abbreviations. IBM's (and Sun's?) opinion/guidance seems to be that this problem shouldn't really exist anymore since as of JDK 1.2 in 1998, Java application code isn't supposed to use three-letter timezone abbreviations anymore. So it's probably not worth worrying about this unless you have an application that parses timestamp strings and are seeing it fail. In any event, if you're having the problem, IBM has a patch for its JDK.
In response to the latest bug, IBM has released a new version of its Java Time Zone Update (JTZU) utility, version 1.4.7c. The JTZU versions are a bit confusing; here's the story (as I understand it; take this with a grain of salt):
Version 1.2.7a and earlier -- Fixes the JDK to know the new DST dates
Version 1.3.7a -- A change to support the IBM JDK 1.3.1 on Solaris; works the same as 1.2.7a on all other platforms
Version 1.4.7c -- A change to fix Sun Java Bug #6530336
So 1.2.7a and 1.3.7a are generally available from IBM, adjust DST for the new dates in 2007 and later years, and are equivalent to each other on all platforms except JDK 1.3.1 on Solaris. Most applications should not run into Sun Java Bug #6530336, but if yours do, apply 1.4.7c.
Drucker's take is that executives should look for collegues with specific strengths, not generalists that tend to be mediocare. I think that applys to technical people as well, that good teams tend to have people with different strengths; as long as the people work together well (and that's a big if), the team's total talent is greater than the sum of its member's talent.
I would take this one step further. It's easy to attend a meeting of whatever development team you happen to be part of, look around the table at your teammates and think "He's good. That guy's terrible. She's good. She's not." and so on. It's tempting to look at people that way, but not very helpful. Good managers I've worked for try to figure out what each team member is good at, then see how to apply those abilities to benifit the project. That way, everyone contributes. Given, sometimes you have a team member with little talent or a lousy attitude, who consistantly contributes little to any project. That's a person who needs to re-evaluate their career choice, before their employeer does it for them. But most people have something good to contribiute; good managers look for slots that fit their talents and preferences. This works better than trying to force fit staff members into slots that fit the project better than the people staffing the project.
So look around the table and think about what each team member is good at. And think about what you're good at. Then think about how you can work with them to put what you're good at together with what they're good at. I think you'll find you'll wind up with a team capable of producing much more than you could yourself, even if everybody isn't good at everything. [Read More]
WebSphere Enterprise Service Bus (ESB) is a powerful solution for mediating service requests. Based on Service Component Architecture, it provides a set of pre-built and custom mediation capabilities to perform tasks such as routing, transformation, logging, and lookup. This 4-day online workshop provides extensive hands-on lab exercises of all of these features. Additionally this workshop positions WebSphere ESB within the IBM SOA Foundation.
This workshop uses the latest (V6.1) releases of WebSphere Enterprise Service Bus and WebSphere Integration Developer tools. It also integrates WebSphere ESB with WebSphere Service Registry and Repository and WebSphere MQ.
Students will explore and build ESB solutions for deployment to WebSphere ESB. They will use WebSphere Integration Developer to perform the typical tasks of an integration developer including modeling, testing, configuring, and deploying ESB-based applications. They will then deploy and administer these applications to WebSphere ESB.
The class will be held only of there's sufficient interest, so if you are interested, please register.
A reader comments: "I guess I have never quite understood how 'alignment' has anything to do with SOA as a technical architecture."
This comment was made by Matt M. on ESB-Oriented Architecture, in response to the statement in my article, "The primary goal of SOA is to align the business world with the IT world in a way that makes both more effective."
Matt, thanks for sharing your reaction. I think this topic--does SOA align business and IT?--is very interesting and worth discussing.
IBM feels that business/IT alignment is very important to SOA. I actually didn't author that statement in my article; it's a quote from IBM SOA Foundation. The action involved is sometimes expressed as aligning IT to the business, but I prefer the perspective of aligning them to each other so that both business and IT are active participants. (See Service Oriented Business.)
This alignment idea is not completely new. My COBOL programmer brethren can probably talk about writing business-oriented code back in the 1970's and even '60's. I know that back in the early 1990's (when object-oriented programming was really gaining momentum), Booch wrote books about developing OO domain models that simulate the business; so did Rumbaugh (and Grady and Jim are now both with IBM via Rational), as did Jacobson with use cases. Services perform the same sort of simulation, but at a coarser-grained level; services also add support for defined interfaces, context-free (aka stateless) invocation, and dynamically discoverable providers. Reusable SOA services are an evolution of reusable domain objects and use cases, not some completely new concept. (I even talk about "service use cases"; see Streamline SOA development using service mocks.)
What is new (or at least newer) is thinking of business in terms of reusable services that IT can then implement as reusable services. A lot of this thinking comes from business process modeling (BPM, aka workflow) (these days coded as BPEL), which models the business as reusable processes composed of repeatable actions. With SOA, the overall process and each of the actions are services. (I call these the service coordinator and service providers; see The Two Parts of an SOA Application.)
We also often distinguish between business services and technical services. The former have meaning to business people, such as process an order or check inventory. The latter do not, but are needed as part of a technical architecture, such as verify authorization or perform data transformation. The thing to realize is that while technical services are often (always?) necessary and valuable for implementing a working application, because they are not business services, they have no value to the business. Or to be more precise: The value of technical services is indirect in that they support business services which do have direct value to the business.
The focus of business applications needs to be on creating business value. That's how the business pays for the applications and the IT to develop and operate them. By modeling the business itself as a bunch of business services, those services embody the value that the business generates. By implementing those business services in IT applications, the applications create the value for the business. By supporting the business services, technical services create value for the business indirectly.
Just remember: It's the business that drives the business services that drive the technical services, not the other way around.
I haven't really tried to understand the source code in this post; I just like the title: C++ is the spawn of satan. Also check out the comment from Keith; turns out it's actually C that's the spawn of Satan.[Read More]
Here's an interesting conflict between JMS and J2EE that I just rediscovered:
You can't run an implementor of MessageListener in a J2EE container. J2EE 1.3 says not to do it in the EJB container. J2EE 1.4 says not to do it in the Web container either. Basically, you can't use it in any container that controls thread creation, which is any container except an application client container.
WAS 5 and 6 don't allow MessageListeners to be used in either container. When you try, you get an error like this:
javax.jms.IllegalStateException: Method setMessageListener not permitted at com.ibm.ejs.jms.JMSCMUtils.methodNotPermittedException(JMSCMUtils.java:202) at com.ibm.ejs.jms.JMSMessageConsumerHandle.setMessageListener(JMSMessageConsumerHandle.java:193) at MyMessageListenerImpl.connect(MyMessageListenerImpl.java:39) . . .
So when you get this error, the problem isn't a bug in your code, it's your entire approach. In a nutshell, if you want to run a MessageListener in J2EE, don't implement a MessageListener, implement a (can you guess?) messsage-driven bean (the JMS kind, which implements MessageListener). And if you don't like using EJBs? Get used to it. MDBs work in J2EE; MessageListeners don't. [Read More]