Windows Live becomes more open to other Web-based platforms. Maybe this was there already before, however, I haven’t seen it, yet. Windows Live is able to consume further events from platforms. Among the supported ones you will find TripIt, Flickr, Twitter and others.

Windows Live Web activities

Adding the applications is quite easy. Sometimes (e.g. for TripIt) you have to sign in and to confirm.

Share your activity on Windows Live

Looking forward to find even more supported activities in the future. It looks definitely like a step towards the right direction.

Posted at Wednesday, December 24, 2008 3:55:33 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

This morning I was pleasantly surprised, by this message box! Especially #1 was quite annoying. Using multiple machines for development I am using the Delicious add-on to share my bookmarks among the different computers.

New Delicious Add-On

In detail we got the following fixes:

1) Fixes problem where bookmarks are sometimes not saved in the user's Delicious account.
2) Fixes problem with bookmarks not working from long toolbar menus.
3) Edit bookmark dialog now extends vertically to show all users from your Network.
4) Improvements to tag suggestion functionality when saving bookmarks.

Source: http://delicious.com/help/tools

Posted at Thursday, September 18, 2008 11:45:09 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Today, I tried it the first time...

"Google Chrome is a browser that combines a minimal design with sophisticated technology to make the web faster, safer, and easier."

It looks very lightweight, though. Reminds me to the early beginnings of Netscape and Internet Explorer. It gives you the impression that it's quite fast. However, during rendering it looks a bit like Safari.

Google Chrome

For some pages that look quite nice in Firefox and Internet Explorer, rendering also behaves a bit odd. So, is this one more browser we have to test our Web application against?

Messed Up Rendering in Google Chrome

One feature provided is the creation of application shortcuts on your desktop that will open the Web site in its own, plain window. Very nice but failed several times when I tried. not sure if it's worth switching from Firefox or Internet Explorer.

Source: http://www.google.com/chrome

Posted at Tuesday, September 02, 2008 9:37:04 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Since Photosynth was announced the very first time, I was keen to try out this technology. Finally, Photosynth became public and you can create your own synths.

After installing the Browser plug-in you select "Create your Synth" on the Photosynth Web site.

Microsoft Live Labs - Photosynth

To sign in you'll need a Windows Live account - probably you have a messenger account. You'll start a synth by selecting a set of photos.

Photosynth - Start new synth dialog

The dialog is quite self-evident. Don't forget to select the license you want to use for the synth. That's quite important as each and every synth is public available.

Photosynth - Create synth dialog

Select "Synth" and then just wait... 

Photosynth - Generating synth dialog

You'll probably get a good "synthy" rate.

Photosynth - Synth completed dialog

And that's what you finally get:

Source: http://www.photosynth.net/

Posted at Monday, August 25, 2008 12:52:41 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

[rdf]Today, I spent some minutes to perform an experiment on linked data. The D2R server at L3S - University of Hannover publishes a weekly update version of the DBLP bibliography. The URIs from the Hannover server can thus be used to to set RDF links to DBLP data.

The FOAF profile is quite meaningless when used in a stand-alone to the machine-readable Web, similar to HTML pages without any links. With additional links to other machine-readable Web - and there are quite a lot resources available right now on the Web but you still have to find them. I was told a very visual metaphor where you could understand the Semantic Web as it is today as a country with hundreds or thousands of train stations but no tracks between those stations. As long as there are no tracks build, the train stations do not provide any added value. Similar it is to the Semantic Web. Unfortunately, establishing the links between the resources is still a very manual and time intensive job that must be accomplished by the human user.

Once linked, it becomes interesting when using the appropriate tools to browse these information. The best (even when experimental) tools therefore are the following Semantic Browsers:

To link myself to the DBLP database URI, I simply have to add an owl:sameAs tag to my FOAF profile. This allows to follow Semantic Web Browsers the links to the DBLP database. The different kinds of links you can add to your profile can are explained in a tutorial at FU Berlin.

As adding these links is still a manual process, I now think of creating a small component that will update publications in my FOAF file in the future based on a XML input file. That will allow me to semi-automate the process of updating the FOAF file. Some good reasons are

  • It's easier to write down pure XML rather than RDF.
  • I can reuse the XML on other places, such as the publication list on my Web site
  • The links to the corresponding DBLP entries will be searched automatically.

Comments are warmly welcomed.

Posted at Sunday, August 17, 2008 10:10:10 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
delicious.com
Posted in Tools | Web 2.0

Have you realized? del.icio.us got a new URI: http://delicious.com  - somewhat easier to type, isn't it. Johannes pointed out the new toolbar for Internet Explorer which is quite an improvement to the previously offered buttons.

aheil @ delicious.com

Since I use multiple machines for development at work and university but also at home, delicious became one of my favorite tools for managing bookmarks. The best feature coming with the new toolbar is definitely the complete integration into the browser. By selecting one of the bookmarks you can directly change it's properties without browsing to the delicious site.

image

Source: http://delicious.com/help/tools

Posted at Monday, August 04, 2008 1:34:52 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Following the idea of having clear HTTP URIs, I now extended my list of http://www.aheil.de/freebusy and http://www.aheil.de/software with my wishlist currently being with amazon: http://www.aheil.de/wishlist. What's cool about this approach? At first it looks much better than http://www.amazon.de/gp/registry/Z5LA1EEWOT64 and is far more intuitive. Second, when moving to another country my wishlist URI stays the same, even when changing from amazon.de to amazon.co.uk. Finally, whatever happens to Amazon - I don't care about my wishlist - my URI just stays the same. About 10 years ago, in 1998, I was a quite good customer of Telebuch.de, one of the very first German online bookstores before Amazon bought them and consequently all the URIs changed.

Posted at Thursday, June 19, 2008 2:17:42 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Being tired of typing http://dict.tu-chemnitz.de into my browser's address bar when looking for an English expression, I created a Beolingus De-En translation button for the Windows Live Toolbar.

Windows Live Toolbar Beolingus De-En Translator Button

I've submitted the button to the Windows Live Gallery, however the submission is still pending approval...

[Update 6/5/2008]

This morning, the submission was approved and can now be downloaded from here.

Posted at Wednesday, June 04, 2008 9:57:31 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Chemnitz University of Technology It's official now: From the next term on, Chemnitz University of Technology offers a Master of Data and Web Engineering. Interested in it? Get the English flyer here [pdf]. There is also a verbose German description available here [pdf]. Why this is cool? Because you can study and learn with one of the founders of the Web Engineering community. If you are interested in this topic read the first paper in the first issue of the Journal of Web Engineering from 2002 [pdf]. Definitely cool.

Master of Data and Web Engineering

Posted at Saturday, May 17, 2008 12:48:31 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Some words on the Secure Development Lifecycle related to Web 2.0 by Bryan Sullivan.

Posted at Thursday, April 03, 2008 9:50:23 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

I am going to implementing a publish/subscribe mechanisms for our recent Web-based research prototype. Therefore, I am interested what others already thought about this pattern. Looking for the  pub/sub paradigm, Google returns the corresponding Wikipedia article on the first place. Screening the article, there are a few starting points worth to be remembered:

  • Pub/sub is a sibling of the message queue paradigm
  • Subscribers typically receive only a sub-set of the total messages published; selecting messages for reception is called filtering
  • In topic-based systems messages are published to topics or named logical channels
  • In content-based systems, attributes or the content of messages must match constraints defined by the subscriber
  • In hybrid systems, publishers post messages to topics; subscribers only receive content-based subscriptions on a particular topic
  • Brokers might be used to maintain subscriptions, store and forward messages and perform the filtering
  • The first time a pub/sub mechanism was described was in Exploiting Virtual Synchrony in Distributed Systems [pdf] by K. Birman and T. Joseph.
  • Publishers and subscribers remain ignorant of the system topology; publishers don't know about the existence of any subscribers; this allows to create a loosely-coupled system
  • Scalability for pub/sub under high load in large deployments currently remains a research question

Looking for more information on the Web I cam across the Publish/Subscribe integration pattern from Microsoft's patterns & practices. The problem statement seems reasonable:

  • How can an application in an integration architecture only send messages to the applications that are interested in receiving the messages without knowing the identities of the receivers?

In the context description, the following communication infrastructures are mentioned:

  • Bus
  • Broker
  • Point-to-Point

In contrast to to the Wikipedia article, we learn about three different types of mechanisms:

  • List-based Publish/Subscribe
  • Broadcast-based Publish/Subscribe
  • Content-based Publish/Subscribe

Having a closer look, the List-based Publish/Subscribe mechanism maintains a list of subscribers, similar to the Observer pattern. Attach() and Detach() operations allow to modify the list of subscribers while a Notify() operation is used to send updates to the subscribers. Seems to be well suited if you have one publisher and many subscribers, but does not look suitable if subscribers watch many subjects. The core functionality of List-based Publish/Subscribe can thus be identified as

  • The publisher maintains a list of all subscribers
  • The publisher notifies each one individually

If we understand subscription lists as named channels, the List-based Publish/Subscribe represents a topic-based subscription mechanism.

The Broadcast-bases Publish/Subscribe mechanism simply dumps messages to the local are network. Each subscriber is responsible for listening and inspecting the subject line of the message. If the subject line matches, the subscriber processes the message. This approach seems to be a optimum in decoupling the system. Clearly, this can be identified as some kind of a topic-based system. If the publisher needs to know about subscribers to a particular topic, a hybrid approach can be chosen, where a additional process requests information about interested subscribers. To establish the hybrid system, however, every subscriber must respond to the request. Another name mentioned in the article is publish/subscribe channel with reactive filtering due to the responsibility of each subscriber to filter the messages on its own.

In difference to the Wikipedia article, in this article the author differentiates between topic-based and content-based mechanisms. In this context, both, List-based Publish/Subscribe and Broadcast-based Publish/Subscribe are understood as topic-based mechanisms.

While topics are considered as a pre-defined set of subjects, each message in a content-based system can be understood as a  single dynamic logical channel. This idea was proposed in The Evolution of Publish/Subscribe Communication Systems [pdf]. We will come back to this paper later.

Where to implement the pub/sub functionality depends on your underlying communication structure:

  • Bus: Implement the subscription mechanism in the bus interface
  • Broker: Implement the mechanism through subscription lists to the broker
  • Point-to-Point: Implement the mechanism through subscription lists in the publisher

The article also differentiates between fixed subscriptions and dynamic subscriptions. While applications cannot control their subscriptions, dynamic subscriptions allow to modify subscriptions through certain control messages.

Some more keywords are listed in the article:

  • Initial subscription: How communicate subscribers their subscription to the communication infrastructure when they are initially added
  • Wildcard subscription: If supported, subscribers can subscribe to multiple topics through one subscription
  • Topic discovery: How can subscribers discover available topics if dynamic subscriptions are supported

How to implement a dynamic list-based publish-subscribe pattern is illustrated in the MSDN library.

I found also some article about the way EDA (event-driven architecture) extends SOA including a nice depiction of the idea behind EDA. There, EDA is proposed for a publish/subscribe mechanism rather than a command/control mechanism as provided by SOA. EDA seems especially suitable when you are facing

  • Workflow type of processes and
  • Processes that cross functional organizations borders.

It is also mentions that some good support for the EDA pub/sub pattern would be a declarative model.

I also came along this article giving a brief overview of Publish-Subscribe Channel pattern from the book Enterprise Integration Patterns by G. Hohpe and B. Woolf. It basically tells that the channel delivers a copy of the message to each of the output channels where each output channels has only one subscriber. After the message is consumed, it is removed from the channel.

Having a look into Exploiting Virtual Synchrony in Distributed Systems, mentioned in the beginning, gives you an insight into several issues in distributed systems. One interesting fact to bear in mind is about synchrony vs. asynchrony. If your publisher requires responses this could be 0, 1 or n for n subscribers. If you expect 0 responses you actually run a asynchronous system. For so-called process groups an interface is provided, allowing to join or leave a group but also to receive updates on the group memberships. Sounds similar? The Observer pattern, I see here. In the described news service, one already realizes the common concepts described before: "Each subscriber receives a copy of any message having a 'subject' for which it has enrolled on the order they were posted.". The overall description is rather abstract, but gives a interesting insight into the development of the mechanism.

Afterwards I ended up directly with The Evolution of Publish/Subscribe Communication Systems, providing a well written summary of the publish/subscribe paradigm. Especially the decoupling fact has been structured into

  • Anonymity: parties do not need to know each other,
  • Decoupling in time: interacting parties do not need to be up at the same time,
  • Decoupling in flow: sending and receipt does not block parties.

Again, we see content-based and topic-based mechanisms which makes me think twice of the classification proposed in the Wikipedia article. Back to the paper, the authors state that content-based pub/sub systems cannot rely on

  • Centralized architectures based on
  • Network level solutions.

A single server simply cannot deal with a high number of subscribers and the limited number of IP multicast addresses does not fit the large number of logical channels. Rather they propose a application-level realization through a set of event-brokers, exchanging information on a point-to-point basis. For broker interaction the following issues are pointed out:

  • Subscription and information routing: I.e. creating a mapping between subscriptions and subscribers and the matching and forwarding  of operations.

Maybe its worth to mention, that both papers address communication systems on network and overlay network infrastructure-levels than on application-level. However, the concepts are the same.

Baldoni comes up with the concept of ad-hoc subscription languages, compared to SQL for databases. This, however, requires a-priori knowledge of the structure of the information space. At least, the idea of selecting subscriptions or topics using a query language sounds quite appealing. As future research direction, a potential formal specification of the subscription service, provided by a pub/sub system is proposed.

  • Notification semantics would provide the conditions if, when and how many times an information is delivered to a subscriber. This is pointed out as a mandatory feature if the pub/sub mechanisms would be applied to mission-critical or dependable applications.
  • Publishing semantics should allow to define the lifetime of information. I an pub/sub-based system, the subscriber has no rights to remove elements from a queue. To avoid overflow, the information must be removed from the queue. This, however, is clearly publisher dependent.

Another often cited paper I have a look at is The Many Faces of Publish/Subscribe [pdf]. Similar to the paper before, the three decoupling dimensions time, space and synchronization are considered to extract the common concepts of different variants of the pub/sub paradigm. We learn that individual point-to-point and synchronous communication leads to rigid and static applications. Three types of pub/sub mechanisms are introduced:

  • Topic-based
  • Content-based
  • Type-based

The basic terms for sending and receiving messages through a software bus/event used here are

  • Event for the message to be delivered and
  • Notification for the act of delivering this event.

The core system should provide a

  • Event notification service providing
  • Storage and management for subscriptions and
  • Efficient delivering of events.

The events used here are called subscribe(), unsubscribe() and publish() - not that different from the ones we know from the Observer pattern. Some new operation is called advertise() to advertise the nature of future events of an publisher. That way, the event service can adjust to the expected event flows and subscribers can learn when new types of information come available. We also learn about alternative communication paradigms here:

  • Message passing is just about sending and receiving messages through communication channels. For the sender, the process is asynchronous, while the receiver must act synchronous. Both parties must be active at the same time and the sender must know its receivers. Consequently, the parties a coupled both, in space and time.
  • RPC (mentioned the first time in Implementing Remote Procedure Calls [pdf] and A Survey of Remote Procedure Calls [pdf]) makes remote interactions appear the same way as local ones. Here we have a strong space and time coupling since the the invoking object hold a reference to the invoked one. One attempt for removing synchrony was e.g. applied by CORBA using one-way modifiers. In this context, the authors mention the expression fire-and-forget.
  • Notifications allow a decoupling of synchronization by performing two independent invocations. The first (sent from client to server) provides a callback reference used by the server to notify the client about changes. This is mentioned to be a limited version of pub/sub mechanism and directly related to the Observer pattern we already learned before.
  • Shared spaces are definitely not what I am going to use, however it is interesting to read the summary. All communication between parties takes place using tuple spaces (e.g. known from Linda) using three operations in(), out() and read(). This approach is both, time and space decoupled but remains synchronized and is thus somewhat limited in scalability. 
  • Message queuing often uses some pub/sub mechanism.In difference to tuple spaces, message queues provide some transactional, timing and ordering guarantees. In difference to the pub/sub mechanism we learned before, messages are concurrently pulled by the consumer. 

For the three pub/sub forms we find some more detailed information:

  • Topic-based pub/sub is based on the notion of topics or subjects, extending the notion of channels. Subscribers can subscribe topics, identified by keywords and are related to the concept of groups and group communication. When you think now of the paper we discussed before: The Isis system, described in Exploiting Virtual Synchrony in Distributed Systems is also mentioned as the one introducing the pub/sub concept the first time. Some nice expression I read in the related section was the concept of event space. In topic-based systems, the event space can be addressed hierarchically, while groups usually offer only a flat structure.
  • Content-based pub/sub (aka property-based) should introduce a subscription scheme based on the particular event. Some properties events to be used for structuring could be: internal attributes of data structures or meta-data associated to events. Here again, we read about subscription languages but more in detail about filters on form of name-value pairs combined with simple operators (=, <, >, <=, >=) resulting in so-called subscription patterns.
  • Type-based pub/sub is meant to replace the name-based classification of topics by a scheme according to the type of events.

Having a closer look at events we learn about the classification into messages (delivery through a single operation e.g. notify) and invocations (event triggers some specific operation on the subscriber). Furthermore, invocations are directed to a certain kind of objects and provide some well-known semantics. You can also differentiate between on-way invocations (COM+ or CORBA Event Service) and those requiring some return value.

We see different kinds of architectures there:

  • Centralized architectures are using a centralized component for storing and forwarding events. Consequently, this component is a single source of failure.
  • Distributed architectures omit this centralized component and are well suited for efficient delivery of messages.
  • Hybrid approaches provide a decentralized notification and storage service.

Dissemination of messages is also discussed but relies a lot on the underlying concepts. Efficient multicast in content-based pub/sub systems, however, is pointed out to be still an issue.

Some more points to be considered are related to QoS:

  • Since the publisher does not know about when and if the sent messages are processed some mechanism is required to ensure persistence of the information.
  • More QoS features deal with priorities (only relevant for messages in transit) and transaction if multiple messages are combined to atomic operations.
  • Reliability is finally pointed out as one of the most important features in distributed information systems.

Bearing this information in mind, I now have a look into the Publish-Subscribe Notification for Web Services [pdf] whitepaper as part of the WS-Notification family. The document deals with the notification pattern for notification-based or event-driven systems in the Web service context. Here we see the same pattern as learned before:

  • Subscribers  register dynamically with the publisher
  • Multiple subscribers can register with a publisher
  • The distributing Web service sends one separate copy to each of the subscriber

The spec defines (among others) some interesting requirements:

  • Support of resource-constrained devices
  • Support both, direct and brokered notification
  • Transformation and aggregation of brokered topics
  • Publishing of runtime meta-data (for discovering available elements)
  • Allow federation of brokers

In the terminology section we find another interesting statement saying "a Subscription is a WS-Resource" where a WS-Resource is defined as follows:

"A Web service having an association with a stateful resource, where the stateful resource is defined by a resource properties document type and the association is expressed by annotating a WSDL portType with the type definition of the resource properties document"

Got it? At least let us think of subscriptions as resources. This idea lines up well with my current research.

Also the fact of hierarchically structured topics is considered: Especially topic trees are hierarchically structured topics and topic spaces are a set of topic trees grouped together into the same namespace (obviously due to administrative reasons).

It is actually the first document dealing with security aspect, listing the following classes of attacks:

  • Message alteration
  • Message disclosure aka confidentiality
  • Key integrity
  • Authentication
  • Accountability, i.e. a function of the type and string of the key/algorithm used
  • Availability, e.g. DoS attacks
  • Replay of messages

Finally, I found the Distributed Publish/Subscribe Event System on CodePlex: In the whitepaper, the various types of pub/sub are characterized by

  • Coupling
  • Brokered subscriptions
  • Persistent vs. transient subscriptions
  • Delivery of events and
  • Routing.

The Web Solutions Platform (WSP) is designed as a distributed pub/sub system and works both, intra-machine and inter-machine. Applications here subscribe to event types, so it looks like an event-based pub/sub system. The document provides some more descriptions on the system itself but no more  information on publish/subscribe mechanism in general.

That's a lot of stuff and now I have to spend some time in reflecting all these information for my design.

Posted at Wednesday, April 02, 2008 4:18:37 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
N3 Validator
Posted in Research | VSR | Web 2.0

W3C While dealing a lot with RDF and Notation3 (N3),  I was looking for a way to check my N3 expressions. At W3C's site you can find a N3 validator that allows you to validate your statements against Notation3 grammar.

Posted at Tuesday, March 25, 2008 5:40:08 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 
First understand
Posted in VSR | Web 2.0

RDF Metadata Following the VSR group's main idea, I spend some time in updating my personal FOAF file. The best way to understand Semantic Web is practicing it. The resource you know the most about is your person. So, FOAF provides you some neat opportunities to get in touch with W3C's RDF technology.

Posted at Friday, February 15, 2008 1:07:02 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

SPARQL has been finally published as W3C recommendation [1].

[1] http://www.w3.org/TR/rdf-sparql-query/

Posted at Wednesday, January 16, 2008 9:48:25 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

After reading about dzone [1] in Matthias' blog [2], I signed up an account there and published my first article [3]. Having only a very quick look on this portal, it looks to me like one of those few, providing additional value.

dzone

[1] http://www.dzone.com/
[2] http://unmaintainable.wordpress.com/2007/12/22/one-year-of-blogging/
[3] http://www.dzone.com/links/wcf_net_35_and_http_request_content.html

Posted at Monday, December 31, 2007 12:31:07 PM (W. Europe Standard Time, UTC+01:00) 
Comments [1] #      | 

Sometimes, simple things end up as epic battles. If you try to MSN Search and Google for the nasty "You have create a Service" page for IIS hosted WCF services, you will and up with a lot of pre-release information and noise in the search results. Actually, you might spend days in finding some relevant information.

You have created a service.

Yesterday, I was finally pointed to the right place in the MSDN documentation [1] where you can find this specific information:

<serviceDebug httpHelpPageEnabled="Boolean"
    httpHelpPageUrl="Uri"
    httpsHelpPageEnabled="Boolean"
    httpsHelpPageUrl="Uri"
    includeExceptionDetailInFaults="Boolean" />

With the serviceDebug tag it should be possible to get rid of the page. It is easy to find as long as you know you have to search for HTML help page.

[1] http://msdn2.microsoft.com/en-us/library/ms788993.aspx

Posted at Friday, December 21, 2007 9:18:05 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

The new Web Programming Model [1] of WCF and the .NET Framework brings some very useful features such as the WebGet and the WebInvoke Attribute and the capability to deal directly with HTTP requests. But how do we access the HTTP request in these methods? Dealing with HTTP requests and responses using the System.Net namespace is quite straight forward. Therefore, we have a look in sending and receiving a simple HTTP request:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(myUrl);
byte[] a_dataBytes = Encoding.UTF8.GetBytes(data);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = a_dataBytes.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(a_dataBytes, 0, a_dataBytes.Length);

WebResponse
response = request.GetResponse(); StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
var content = responseReader.ReadToEnd();

Now we want to access the HTTP context within a operation with the following signature:

[OperationContract]
[WebInvoke(Method = "PUT", UriTemplate = "{uri}")]
bool Put(string uri);

Accessing the context of the incoming request is straightforward using the WebOperationContext class.

IncomingWebRequestContext context =
    WebOperationContext.Current.IncomingRequest;

var length = context.ContentLength;
var type = context.ContentType;
var headers = context.Headers;

Since the documentation does not provide many example code, and the ORCAS samples do not cover this yet, I had to figure out how to access the content of the incoming request. After spending hours on MSN Search, Google and the MSDN Library I finally tried out something. In some general examples, either a Message or a Stream is passed over as single parameter to the operation. Hence, I changed the contract as follows:

[OperationContract]
[WebInvoke(Method = "PUT", UriTemplate = "{uri}")]
bool Put(string uri, Stream stream);

Reading the content then is easy:

var reader = new StreamReader(stream);
string content = reader.ReadToEnd();

This solution however comes up with one major drawback: If you try to access your foo.svc via browser you will end up some error telling you "For request in operation Post to be a stream the operation must have a single parameter whose type is Stream.". Also calling foo.svc?wsdl will end up in some exception in the WSDL export extension.

 

[1] http://msdn2.microsoft.com/en-us/library/bb412169(VS.90).aspx

Posted at Sunday, December 09, 2007 9:22:53 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 
Plaxo
Posted in Web 2.0

Just singed up for another Web-based  social network, lifetime address book application [1].

Plaxo

[1] http://pulse.plaxo.com/pulse/

Posted at Tuesday, November 27, 2007 8:51:55 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 
Facebook
Posted in Web 2.0

After I got several requests, I decided finally to join Facebook [1]. I am looking forward to investigating how to hook up information from Facebook within other (Web 2.0) applications.

[1] http://www.facebook.com/...

Posted at Sunday, November 25, 2007 1:29:37 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

Being my favorite feed reader, RSS Bandit [1] seems to have a quite cool feature to share your feed list among multiple computers. Simply got to Tools / Options / Remote Storage and select dasBlog from the Protocol drop-down list.

dasBlog_7D2F/image3.png" atomicselection="true">RSS Bandit Remote StoragedasBlog_7D2F/image_thumb3.png" width="320" border="0">

Therefore, you have to enable the Edit Web Service on your blog configuration.

Enable Edit Web ServicedasBlog_7D2F/image9.png" width="320" border="0"> 

If did so, but actually nothing happened. The Edit Web Service URL seems to be right, activated and RSS Bandit does not provide any error message. Looks like some more digging is necessary...

 

[1] http://www.rssbandit.org/

Posted at Tuesday, September 04, 2007 9:54:24 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
RDF
Posted in Research | Web 2.0

I was told, Ivan Herman [1] is on of the exceptional speakers for RDF. So one of the "must reads" for RDF is his tutorial [2[pdf] held at the WWW 2006 and another tutorial [3] available wt the W3C page. Of course I should not forget to mention the RDF Primer [4]. Finally, I was pointed to the SemWeb C# RDF Library [5] by Joshua Tauberer [6].

[1] http://ivanherman.wordpress.com/
[2] http://www.research.att.com/~chen/...
[3] http://www.w3.org/Consortium/Offices/Presentations/RDFTutorial/
[4] http://www.w3.org/TR/rdf-primer/
[5] http://razor.occams.info/code/semweb/
[6] http://razor.occams.info/

Posted at Sunday, September 02, 2007 9:33:16 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

What's all about

The widgets offered by Last.fm are not really customizable. The latest Flash-based quilts are literally flashy and the image-based charts are quite unconvincingly to design. So I sat down wrote a small ASP.NET control to be used as Last.fm Widget with the goal to use it within my dasBlog installation. For that reason I made usage of the data feeds provided by Last.fm.

Last.fm ASP.NET Widget 


Prerequisites

  1. You need a Last.fm account which you can create here.

  2. You might want to download any media player plug-ins from here to scrobble your music.


How to install on a ASP.NET Web Application

  1. Download the .zip file and unpack it's content into your web application's directory.

  2. Add the following line below your page tag to register the control with your ASP.NET web page:
    <%@ Register Src="LastFmControl.ascx" TagName="lastfm" TagPrefix="uc" %>
  3. At the place where you want to add the control similar to
    <uc:lastfm 
    id="Lastfm1" runat="server" Url="http://ws.audioscrobbler.com/1.0/user/aheil/recenttracks.xml" User="http://www.last.fm/user/aheil/"> </uc:lastfm>
  4. Change the username from aheil to your username unless you want to display my recently played music on your site.


How to install on a dasBlog installation

  1. Download the .zip file an unpack it's content into your dasBlog installation directory.

  2. Open the hometemplate.blogtemplate file of your dasBlog theme and use the ASPNETControl makro to add the control on the page.
    <%newtelligence.ASPNETControl("LastFmControl.ascx")%>
  3. Open the LastFmcontrol.ascx.cs file and change the username at
    private string _url 
    = "http://ws.audioscrobbler.com/1.0/user/aheil/recenttracks.xml";
    and
    private string _user 
    = "http://www.last.fm/user/aheil/";
    unless you want to display my recently played music on your blog.


How to Customize

The control makes heavy usage of several CSS div classes to be maximum customizable. The classes used are

.lastFmMain {}
.lastFmHeader{}
.lastFmItem {}
.lastFmItemTitle {}
.lastFmItemArtist {}
.lastFmFooter {}

Simply modify and add these div classes in your CSS file to make the control look seamless integrating into your web page.

The classes are used as following where the lastFmItem is reapeating.

Last.fm Control CSS Usage


Download


Some Comments

I did not spent much effort into this control. Writing this entry took longer that writing the control, not only since the pre-release Windows Live Writer versiopn I am using crashed twice. There are several improvements, which could be done to this control, including reducing the paramters to only the user name, adding the Last.fm icon etc. If you are looking for a more sophisticated dasBlog makro, you might have a look at Alexander Groß' Last.fm makro, which I was pointed to wafter I had written the above one.

Share this post :

Posted at Sunday, August 05, 2007 10:43:52 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [2] #      | 

Today, I installed the Social Bookmarking Tool for WLW by Rahul Soni. So I am just starting to add social bookmark links on my future blog entries. 

After installing the tool you have to restart Windows Live Writer. Then you'll see a additional option in the insert pane on the right side of WLW.

WLW with Social Bookmarkin Tool

After publishing your entry, you have to copy the link as well as the title of your blog entry and insert it into the Social Bookmarking Tool dialog. That's all, just publish the tool again.

Social Bookmarking Tool for WLW 

Source: Rahul Soni's blog

Share this post :

Posted at Wednesday, August 01, 2007 11:26:04 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
LibraryThing
Posted in Web 2.0

I mentioned it before today: I started to create my virtual book shelf for technical books in LibraryThing a few days ago. It allows you adding new books by simply selecting them from a list. By entering the title, author or ISBN number you just query one of many book directories such as the Library of Congress or simply amazon.com. If you don't find your book (e.g. in my case a couple of German books) you can add alternative Amazon websites. There are some interesting features in this kind of features I am interested in: (1) you can export your information to tab-delimited or CSV files. (2) You can easy access all the book information including cover images without typing all the information in first. (3) LibraryThing provides an API to access the information. I haven't found time to check the API yet, but it allows you  to receive simple information based on the submitted ISBN, title or language of the book.

LibraryThing

Posted at Monday, July 23, 2007 8:36:18 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
Twadget
Posted in Tools | Web 2.0

Twadget is a Widows Vista Sidebar Gadget written by Rod Begbie. It allows you to post to your Twitter account and read your subscriptions. Nice work.

Source: http://arsecandle.org/twadget/

Posted at Wednesday, July 18, 2007 12:17:36 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
Twittered
Posted in Web 2.0

TwitterWriting a blog entry takes some time, Twitter let's you easy drop a line about what you are doing right now. It includes mobile phones (yeah!) and instant messaging. Unfortunately It does only include GTalk, LiveJournal and Jabber - no MSN Messenger. The API is quite simple and the widget provided is pure HTML/JavaScript. I remember about that suggestion while performing the theSpoke tests 2-3 years ago. BtK and me did have seen some potential in this...

Definitely a Web 2.0 application...

Posted at Wednesday, July 18, 2007 11:40:59 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Monday Morning Mug #2A remarkable amount of nothing is going on at the blog-o-sphere - so nothing to summarize from there.

After the last meeting of members of the International Society for Web Engineering e.V. two weeks ago, we finally launched the ISWE portal. At the same time we established two social networking groups for our members within LinkedIn as well as Xing, formerly known as OpenBC. Application for memberships is available here [pdf].

Currently, I am revising my own paper, submitted to the BCS computer Journal as well as being Guest Editor for a special issue of the IEEE Transactions on Automation Science and Engineering  on Automation and Engineering for Ambient Intelligence.

It looks like this week will be a lot of writing and reading as well.

During the last week I accidentally surfed on a couple of interesting web sites as well. I found a online FLV Converter that allows you to save YouTube videos as DivX and MPEG4 into several containers. Christian Weyer wrote a nice article about dealing with WSDL in WCF. Instructables seems to be a nice web site providing step-by-step instructions how to do certain things: maybe I will go for the HDD clock.

Finally, my headset broke over the weekend, i.e. I won't be available by Skype [skypeme] for the next few days until I get a replacement.

Source 1: http://www.iswe-ev.de
Source 2: http://www.bcs.org/
Source 3: http://www.ieee.org/t-ase/

Posted at Monday, July 16, 2007 7:07:08 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
iScrobble
Posted in Web 2.0

iScrobbler

Already scrobbled today?

"Scrobbling a song means that when you listen to it, the name of the song is sent to Last.fm and added to your music profile."

I just downloaded iScrobble and added a LastFM widget to this page. Unfortunately, the widget does not fit 100%. So, I have to modify the page layout a bit soon.   

The tool does permanently upload your played songs (including syncing the iPod playlist). Welcome to the new world. Big brother - and the media industry is watching what you are listening.  However, LastFM provides some great possibilities so search for similar music and artists.

iScrobble on iTunes

Source: http://www.last.fm/

Posted at Tuesday, July 10, 2007 12:16:32 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

GravatarDasBlog does finally support Gravatars [1]. One step more away from the anonym beginnings of the web. Check the comments of this blog entry to view how they work. Definitely another Web 2.0 application. Gravatars can be easy added to any weblog:

A gravatar, or globally recognized avatar, is quite simply an 80×80 pixel avatar image that follows you from weblog to weblog appearing beside your name when you comment on gravatar enabled sites. Avatars help identify your posts on web forums, so why not on weblogs?

 

[1] http://site.gravatar.com/

Posted at Thursday, June 28, 2007 12:37:38 AM (W. Europe Daylight Time, UTC+02:00) 
Comments [1] #      | 

Windows Live AlertsWhile a dozen RSS feeds are subscribed in your favorite feed reader, you might be interested only in some particular feeds being updated during the day. Windows Live Alerts [1] give you this new experience. If you want to get a alert within Windows Live Messenger when aheil.de blog is updated, simply click the Windows Live Alerts button on the menu pane. Definitely a Web 2.0 application.

[1] http://alerts.live.com/

Posted at Tuesday, June 26, 2007 1:39:48 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 
First Life
Posted in Web 2.0

My very first encounter with Second Life [2] was rather disillusioning.

IMHO not a Web 2.0 application... So I will stay with my first life.

[1] http://secondlife.com/whatis/

Posted at Sunday, April 08, 2007 7:48:58 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Invisible computing [1]. Not brand new but quite interesting to read:

"This site has the source code and documentation for Microsoft Invisible Computing. It is a research prototype for making small devices part of the seamless computing world. This site contains the source code and is available free of charge for research and educational use under the Microsoft Shared Source License."

And even better, the code is Shared Source [2].

[1] http://research.microsoft.com/invisible/default.asp
[2] http://research.microsoft.com/invisible/EULA.htm

Posted at Wednesday, October 04, 2006 3:16:29 PM (W. Europe Daylight Time, UTC+02:00) 
Comments [0] #      | 

Nochmal so eine kewle Webseite... mit dem Suchbegriff aheil kommt man tatsächlich auf einige interessante Seiten, die Seite bei Inka, die es seit Oktober leidern icht mehr gibt, aber auch schon der Server bei Domainbox, der noch immer web407.area-17.server-home.net heisst, da es 1&1 noch nicht geschafft hat dem KK Antrag für aheil.de zuzustimmen. Links oben kann man sogar de.thespoke.net finden - quasi der Backup-Blog.

Kartoo

Kartoo

Link: http://www.kartoo.com/

Posted at Tuesday, November 23, 2004 11:49:56 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

Falls man sich mal bei der Lieblingsgruppe sattgehört hat, zeigt musicplasma welche Künstler artverwandt sind... so kommt man auch mal schnell von Queen zu Dido über Madonna zu Britney Spears... sorry.

Trotzdem, ziemlich cool, die Seite.

musicplasma

Link: http://www.musicplasma.com/

Posted at Tuesday, November 23, 2004 11:17:01 PM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 

Das UPS Tracking-Tool ist für mich eine der größten Errungenschaften der Menschheit! Wenn ich mir soetwas anschaue, verstehe ich es manchmal nicht, wie es manche Menschen noch ohne DAS Netz aushalten!

Posted at Thursday, November 11, 2004 8:50:04 AM (W. Europe Standard Time, UTC+01:00) 
Comments [0] #      | 
Copyright © 1995-2009 by Andreas Heil. aheil is a registered trademark of Andreas Heil. All rights reserved.
The opinions expressed herein are my own personal opinions and do not represent my employers' views in any way. Content and thoughts expressed on these pages and the weblog are subject to be changed. Out of date posts should not be considererd as my current thoughts and opinions.