An Open Automotive Applications Platform?

Following on from yesterday’s car radio podcasting request, GadgetGuy brought me down to earth with what we could realistically expect in the near future.

While I do not expect car stereo manufacturers to grok podcasting, it would be nice if they offered me an open applications platform on which I could deploy a podcasting aggregator.
In other words, how about we see the same transition that happened in the mobile phone industry? Nowadays I can go into any wireless phone store and pick up a cellphone that has some form of OS on which I can deploy my own software or (more realistically) deploy software from a software vendor. While I do not expect to see Motorola or Nokia offering a podcasting application for their cellphones in the near future, I could certainly envision some opportunities for the third-party software market.

Give me a car stereo with a built-in hard drive, some form of connectivity (Bluetooth would be better than nothing, WiFI would integrate nicely with the home networking environment and hotspots), and an open platform on which I can deploy my own applications.

This sounds like a prime market for Microsoft. A cursory search turns up Microsoft’s Automotive group, with their Windows Automotive platform. From what I can garner from the site, this is based upon Windows CE. According to the site, its goal is:

“… to deliver adaptable, scalable platforms for connected devices that will enable and enhance applications and services offering flexible solutions for customer needs in the automotive industry.”

Sounds great. They also say:

“This technology will enable the industry to give drivers and passengers seamless access to a wide range of Web services as well as smooth functionality among all Windows powered devices.”

Wonderful. With Microsoft’s other relevant investments in the automotive space (Streets and Trips, for example), it looks like a great space in which they could capitalize. A look at the partners list shows some very interesting developments, like the Carman i from Nextech. A question to Mr. Scoble – when am I going to be able to go to my local car electronics/big box store and get one of these things installed? And how open is this platform?

A quick aside – with the recent announcements about Tivo-to-Go, wouldn’t it be a great app to be able to transfer Tivo-ed programs to the Windows media-enabled entertainment system in my car? (For the benefit of the people in the rear seats, of course!)

Aside from Microsoft, I’m curious about other vendors that are making advances in this space. A few years back a company called empeg created a Linux-based in-dash mp3 player. It had an integrated hard drive, and a pretty decent UI. The technology (and team) got acquired by SONICblue, who eventually discontinued the car player division. The team behind that product moved onto other efforts. This technology would have been prime for evolving into a next-gen connected in-car system. Other companies, like PhatNoise, have also made advances in terms of offering HD-based digital media capabilities in the car; it would be interesting to see their product roadmap.

Anyway, I’m going to keep on dreaming about what I’d really like to see in my car. Hopefully in the not-too-distance future I’ll be able to buy a product that takes the first steps towards it.

Posted in Content Syndication | 1 Comment

Podcasting: I want an aggregator in my Car Radio

With all the recent talk (and hype) about podcasting, I thought I’d chip in with my two cents.

For me, the killer podcasting application would definitely reside within the automotive environment. This is really the only time that I have to consume such audio content, and, like Russ Beattie mentioned in a recent post, I think it would make a significant difference to my daily commute.

Now, here’s my problem: I want listening to podcasts to be a seamless experience. Just like I can turn on my car radio today and listen to an AM or FM station, or play a CD, I want to be able to turn on my radio and hit a button and select the podcast I want to listen to. Or, have a predefined daily playlist of podcasts for my to-work and from-work commutes.
Essentially, I want an aggregator in my car radio.

I’ve thought about this for a while, and here’s my imaginary specification sheet for this ‘podcast-enabled’ car entertainment system:

Built-in storage – multi Gigabyte hard drive
A hard-drive within the system would be used to store podcast content, as well as other media.

Wi-fi enabled (preferably 802.11g)
When your car is parked at home, or at an available hotspot, the system will be able to commence downloading of new content (or partially downloaded existing content) without requiring any user interaction.

Web-based interface
Aside from the usual in-car User Interfaces, the system will feature an embedded web server. When you car is parked at home, you’ll be able to connect to this interface from any browser in your house, and use it to managed playlists, perform an OPML import of podcast feeds, and manage other configuration.
An iTunes-like application could also be provided to support the synchronization of non-aggregated audio and visual contents, such as your personal MP3 library.

Supports both audio and video content
In addition to audio content, video content (MPEG2, MPEG4, Quicktime etc.) could be supported as well. This would especially be for the benefit of those in the back of the car, who could watch new content on the in-car video system. For example, new cartoons could be downloaded daily to entertain children in the back of the car.

Intelligent audio processing
In addition to standard playback of podcasts, I would like to be able to configure some intelligent pre-processing. This woud include the ability to time-stretch, speeding up (or slowing down) the podcast without making the presenter sound like a chipmunk, as well as some graceful empty-space management, removing those pregnant pauses. Every podcaster has a different presentation style; I would like to have more control over how I listen to them.

Existing capabilities of a car radio (FM/AM receiver, CD/DVD player)
Along with the rest of the capabilities, there’s no reason why it shouldn’t still let me listen to standard terrestrial radio.

So, when can we expect something like this to be brought to market? Soon, I hope. With the advent of technologies like Via’s Mini-ITX and Nano-ITX, a complete PC on a card 12cm by 12cm, it is quite easy to envision a home-grown project to create this next-generation in-car entertainment system.

Technologies like this will pose an alternative, and a challenge, to the satellite radio industry. At some point in the future I could easily envision a wide range of content providers offering free, paid, and sponsored content services. Right now I could sync podcasts not only from a wide range of individuals, but from some of the world’s largest broadcasters. And, for me, this is more than enough for my daily commute!

Posted in Content Syndication | 1 Comment

Claiming my feed at Feedster

I just noticed that Feedster are offering some statistics to those who register their feeds. So, here goes…

No Need to Click Here – I’m just claiming my feed at Feedster

Posted in Content Syndication | Comments Off on Claiming my feed at Feedster

Apache Derby on Mac OS X

Earlier this week I got an email from John Tangney, a user of nntp//rss, reporting a problem running the latest release on Mac OS X. After some investigation, it materializes that the problem is actually related to Apache Derby, the new embedded database within nntp//rss as of v0.5-beta-1.

Derby was failing on the first startup, with the following exception written to derby.log:

java.io.FileNotFoundException: /usr/local/nntprss-0.5-beta-1/nntprssdb/log/log1.dat (File exists)
at java.io.RandomAccessFile.open(Native Method)
at java.io.RandomAccessFile.(RandomAccessFile.java:204)
at org.apache.derby.impl.io.DirRandomAccessFile.(DirRandomAccessFile.java)
at org.apache.derby.impl.io.DirRandomAccessFile4.(DirRandomAccessFile4.java)
...

A bit of prodding around in the Derby code showed that it was trying to initialize its subclass of java.io.RandomAccessFile with the sync mode ‘rws’. I had not experienced any difficulties on Windows or Linux with Derby, so I started up a copy on Mac OS X 10.3.6, and, low and behold, got the same exception. A bit of judicious Googling finally turned up this IBM developerWorks forum post. Looking in Apache JIRA, I found this report (and extensive conversation) related to the bug, which basically identifies it as a Mac JVM issue. Unfortunately, to date, there has been no resolution from Apple.

Fortunately Derby has a property, derby.storage.fileSyncTransactionLog, which can be set to true to workaround this issue. For example, nntp//rss on Mac OS X should be started with the following command:

java -Dderby.storage.fileSyncTransactionLog=true -jar nntprss-start.jar

If you’re developing a Mac OS X application using Derby, you can also set this property within your code, before initializing the Derby driver. The System-Wide Properties section of the Derby documentation provides more details.

Posted in Java | 3 Comments

Amazon goes Queuing

A colleague of mine passed on a surprise announcement from Amazon: They’ve just launched the v1.0 beta of their Simple Queue Service. It is an online queuing service with some very simple SOAP and REST-style APIs for message queuing.

For the beta, they’ve limited message size to 4KB, and a maximum of 4000 messages across all queues for a single subscription ID. According to the FAQ, messages are kept for up to 30 days.

The API is quite simple – methods for creating, updating, deleting and querying queues, as well as three methods for queue interaction: Enqueue, Read, and Dequeue.

The messaging read process is somewhat intriguing. A client application issues a ‘read’ request against the queue. Pending message(s) are returned (you can request more than one message in a read request) in response to the request, and a lock is placed on those messages. This means that successive read requests within the lock period will not get the same series of messages. The client application then explicitly dequeues the messages by issuing a ‘dequeue’ request against the queue, supplying the QueueEntryId for each message to remove.

One interesting caveat is mentioned in the documentation for the Read operation:

A message may be returned by the Read operation even though it has already been dequeued, and concurrent Read calls may return the same message to multiple readers. This behavior is a result of prioritizing reliable data storage (even in the face of hardware failures), and we expect such events to occur very infrequently.

It seems that SQS is optimized for reliability, but not for once-and-only-once delivery.

Applications utilizing SQS would need to ensure that they handle duplicate scenarios. The documentation basically implies that the appropriate solution is to ensure that messages are idempotent; retrieving the same message twice should have the same effect as receiving it once.

Currently security is pretty lax. One only needs to know the Subscriber ID to be able to retrieve a list of queues, and from there it would be possible to retrieve messages from those queues. I’m sure that this is something that Amazon would address as they further enhance the service. A simple password-based mechanism would take the security up a level, and, in the future, certificate-based mechanisms could be employed.

With this foray into more ‘Enterprise Level’ services, it does make me wonder where Amazon is headed. They’ve certainly mastered the eCommerce world, and have provided some interesting Web Services focused on that domain. Now it seems that they’re venturing out into some more horizontally focused services, and exposing some of their platform-level capabilities. I wonder what’s coming next…

Posted in Web Services | 4 Comments

Web Services Version Mania

This past week I attended Oracle’s Developer Days in New Jersey. The sessions basically covered Oracle’s pitch on SOA – although, unsurprisingly, after an initial high level SOA level-set, it seemed to focus more on the presentation, business and persistence level capabilities of their 10g Application Server.

However, at the end of the day, Tyler Jewell from The Middleware Company gave a brief presentation on their SOA/Web Services perspectives. On one slide he had a phrase that has been in the back of my mind for a number of months – Web Services “Version Mania.”
The problem I see is in terms of the evolutionary nature of Web Services. Web Services get defined and published. Consumers begin to use those Web Services. Web Services evolve, add functionality, expose enhanced interfaces. As I think about this topic, the following questions arise:

  • How do we manage versioning of Web Services interfaces? I may have a number of consumers of MyWebService v1.0. I now have MyWebService v2.0 – how can I deploy this Web Services and transition clients?
  • How do we manage graceful deprecation of previous versions? I want some capability to inform (directly or through a registry) Web Service clients of the availability of an enhanced interface. I do not want to have to support x previous versions of the same service.
  • What tools exist today that provide me the ability to pro-actively push update information to known consumers of a Web Service?

There have been a number of discussions recently regarding the importance of a registry within any Web Services initiative. Being able to capture, manipulate, query and disseminate Web Services meta-data is a very powerful capability. Versioning and Deprecation information, as well as the functionality to support its management (including change notification), sounds like a good fit as a capability of the registry.
The subscription API within UDDI v3 looks like a good potential for the notification channel. Changes, updates or deprecation of Web Services could be dispatched to all known subscribers for the particular Web Service (or group of Web Services).

It’s early days for my thought process on this topic, and I’m in the process of doing some more research. If anyone has any pointers to specific approaches to versioning and deprecation, or vendors doing a good job attacking this problem, please leave a comment below. I’m especially interested in any standards-based approaches to addressing aspects of this challenge.

Posted in Web Services | Comments Off on Web Services Version Mania

Web Services Reliable Messaging – An Update

Reliable Messaging holds a special interest for me, having played a significant part in my career (in the manifestation of various technologies such MQSeries, MSMQ, and, most recently, the products of Envoy) over the past ten years. Therefore it is with great interest that I have been monitoring the progression of the two emergent Web Services Reliable Messaging standards – WS-ReliableMessaging and WS-Reliability.

Just over a year ago I posted an entry to this blog questioning whether there would be convergence across the two aforementioned specifications. Therefore I thought it was about time to check up on their status, and see whether there had been any significant activity.

Well, it seems that both specifications are still forging ahead, with support from different vendors and, in the case of WS-Reliability, Oasis, a standards organization. The vendors behind WS-ReliableMessaging have held a number of vendor workshops, and WS-Reliability has reached a formal v1.0 release within Oasis. Below, I’ve summarized the status of both specifications.

The development momentum behind IBM, Microsoft and BEA suggests that WS-ReliableMessaging will definitely capture a significant marketshare. The underlying concept (reliable messaging) behind both these specifications is common, and it would not surprise me to see some of the proponents of WS-Reliability supporting both variants within their product offerings. Certainly with the convergence on common specifications within other aspects of the WS-* stack, it would be a shame to see disconnected islands of Web Services reliability support across different vendor implementations – let’s hope that we do not have to resort to WS-Reliability <-> WS-ReliableMessaging bridges!

I’ll probably check back in early next year to see what has developed. With the emergence of new server products from BEA (Quicksilver) and IBM (Jetstream), as well as early offering of Microsoft’s Indigo, it will be interesting to see how this area plays out.
Note: The information below is by no means complete. This is an evolving posting – if there are any inaccuracies or additions, please leave a comment and I will update the content.

WS-ReliableMessaging
Latest Spec: March 2004
Editors: BEA, IBM, Microsoft, Tibco
Current Implementations:
Apache Sandesha (WS-RM on top of Apache Axis)
IBM Emerging Technologies Toolkit
Microsoft Enterprise Solutions Framework (early implementation of WS-RM) – see blog posting
Systinet Server for Java

WS-Reliability
Latest Spec: 1.1 (Committee Draft 1.086, 24 August 2004)
Editors: Fujitsu, Novell, Oracle, Sun
Committee Members:
Arjuna Technologies, Booz Allen Hamilton, Choreology, Cyclone Commerce, France Telecom, Fujitsu, Hewlett-Packard, Hitachi, Mitre Corporation, NEC, Nokia, Novell, Oracle, SAP, SeeBeyond, Sun, University of Hong Kong, webMethods, WRQ
Current Implementations:
Fujitsu / Hitachi / NEC RM4GS (Reliable Messaging for Grid Services)
Oracle Application Server 10g (presently developer editions only, I believe)

Posted in Web Services | 1 Comment

nntp//rss v0.5-beta-1

… has just been released. Lots of features that have been lurking in CVS for over a year (Atom parsing, OPML import/export, use of Jakarta Commons HTTP Client), as well as some newer features (Categories, Apache Derby embedded database.) Still working towards a final v0.5 release, but this version is definitely worth a look.
nntp//rss Project Page

Posted in nntp//rss | 1 Comment

Aspect-Oriented Networking

Some interesting discussions are starting to happen on the similarities between the Aspect-Oriented Programming approach and SOAP’s processing model. SOAP’s use of XML namespaces to separate concerns within the header of a message enables the introduction of aspects (e.g. reliability, security) without, theorectically, any implied interdependencies. This is in contrast to more traditional protocols that wrap application data in layers of dependent headers.

The latest posting on Nick Gall’s blog drills down into this topic. It also references ‘Identical Principles, Higher Layers: Modeling Web Services as Protocol Stack’, an interesting paper published at XML Europe 2004.

In the dynamic ecosystem of Web Services, it makes it very interesting to consider the potential for reusable aspects that could be applied across initiatives, including those functions outside of the current set of WS-xx specifications. It also make a point of discussion as to the capabilities of service clients, intermediaries, and service providers to introduce and act upon aspects. Lots of food for thought.

Posted in Web Services | Comments Off on Aspect-Oriented Networking

Feedster Search Bookmarklet

Using the Make Search Bookmarklet Tool at Bookmarklets.com, I quickly put together a Feedster Search bookmarklet. Highlight some text on a webpage, then click on the Bookmarklet. Your browser will go to Feedster.com and automatically run a search with the highlighted text – cool!

I’ve included the bookmarklet below – just drag it to the link bar in your browser.

Feedster Search

Update:

Of course, had I performed a Feedster search on ‘Feedster Bookmarklet’, I would have seen that this wheel has been reinvented a number of times!

Check out some of the following links for other Feedster Search Bookmarklets:

http://www.feedster.com/bookmarklet.php
http://www.teledyn.com/mt/archives/000711.html

That said, the Make Search Bookmarklet is a pretty neat tool. I can think of a number of other sites that could benefit from a Search Bookmarklet.

Posted in Uncategorized | Comments Off on Feedster Search Bookmarklet