Archive for January, 2011

Not The Smallest Silverlight App

This blog post is not about the Smallest Silverlight App, it is about a Smaller Silverlight App. Mike Taulty (Microsoft) wrote a blog post “World’s Smallest Silverlight App 😉”.

I find this type of articles very informative since they point out essentials. The essential Silverlight application that Mike Taulty comes up with consists of a xaml file and an html file, the html file providing the context in which the Silverlight web browser plug-in renders the xaml.

The xaml:

  <TextBlock Text="Hello, I'm Silverlight" FontSize="36"/>  

The html:

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"  
  width="100%" height="100%">  
  <param name="source" value="ClientBin/splash.xaml" />  

But this is not the smallest application possible. For one thing, the xaml presented here uses the Canvas element as its root element. However, in Silverlight 4 you can use any rendered object (any object that derives from the UIElement class). So we set the TextBlock element as the root element, giving:

<TextBlock xmlns=""
  Text="Hello, I'm Silverlight" FontSize="36"/>

In my software development environment, this is a single line of code. We should not expect to be able to reduce this much further.

The html, however, is open to further reduction. First of all, let’s remove the comma at the end of the data attribute. What is it doing there? Then note that we have both a data attribute and a param sub-element that refers to the data to be loaded. It turns out; we can safely remove the data attribute, but need the “source” parameter.

<object type="application/x-silverlight-2" width="100%" height="100%">  
  <param name="source" value="ClientBin/splash.xaml" />  

This is the final proper result, for me. I’m certain there has to be an easy way to inline the xaml in the html. The standard way is to embed the xaml in script, which would increase the size of the code again. I don’t know how to do that, so this is it for me. The above result is Not The Smallest Silverlight App.

However, a not so proper further reduction of the html can be made by using an iframe, like this:

<iframe src="ClientBin/splash.xaml" width="100%" height="100%">

Very short, but it does introduce in the browser an extra, and non-functional, navigation bar at the top of the iframe. At the time of writing this, I haven’t succeeded yet in making it disappear. So, finally, in short and not so proper: The minimum Silverlight application consists of two lines of code. One line of xaml, and one line of html.


Reading O’Reilly and Battelle: “Web Squared” (2009) – with comments

As a web site designer-developer I want to be up-to-date on the development of the World Wide Web. People are using the buzz word “Web 2.0” – as something that will evolve into Web 3.0 soon. Well, as it turns out, it is already here. The article discussed here is available at

The article

This blog post build on a previous post on Web 2.0. The authors update the earlier article: the creation of value by users is called “crowdsourcing” nowadays. The structure of successful sites stimulates and directs the creation of value for the users, and for the owners. The structure is such that more people will create more value (bring your friends!). The authors call this “harnessing the activities of the users”.

Opportunities identified are not only to disagree with the consensus, but also to be able to identify interesting types of metadata. For instance, the metadata that Facebook generates is that of a social graph (?).

The data to be owned comes increasingly from sensors, mainly sensors in Smartphones. Examples are the: camera, microphone, GPS receiver, motion sensor, proximity sensor. Also in industry, logistics and retail (barcode at the cash register of the supermarket) a lot of data collecting is going on.

Ownership is not interesting only of sources of base data but (increasingly) of metadata. “Metadata” covers concepts as enriched data, and structure within and between (huge) data sets, among others. The structure in the data is brought about by human activities (e.g. tagging), but also by machine learning.

Services are increasingly about managing, interpreting and responding to large amounts of data, in real time. The real time component seems to be introduced by means for instant messaging.

Integration is still a major theme. Applications integrate multiple sources of information. Cooperation and not control is a major growth and development factor. (2011 update: Google drops HTML5 support for the H.264 video codec in its browser; Intellectual rights and access restrictions are considered harmful for the development of the web).

An interesting relation is the one between things (people) in the world and the data about them on the web (Information shadow on the web). Things tend to get increasingly uniquely identified on the web by the increasing amount of data on the web about it (MD: emergent identity).

The authors argue that Web 2.0 is not a version number. So, there will not be something like a Web 3.0. Rather, “Web 2.0” was their term to describe the restart after the burst of the Internet hype. Now they call it Web squared, since developments seem to increase in speed and magnitude swiftly.


This article, like its predecessor is a Must Read, especially for Internet entrepreneurs.

One may find (e.g. here) texts about semantic relations on the web, and that this phenomenon introduces Web 3.0. These semantic relations – primarily brought about by tagging, thus generating emergent semantics – seem an inherent development of existing activities on the Web.

In linguistics (at the time I read about it regularly) it was ok to distinguish between syntactical, semantic and pragmatic aspects. Pragmatism being about the effect a syntactical construct can bring about, what it can do (to you), or how you can use it to get something done. So I was wondering what would be the pragmatics of the Web. Would that then be Web 3.0, or 2WEB?

After pondering for a while on this question I concluded that “Apps” embody the pragmatism of the data available on the web. This has interesting implications: people who by Apps subject themselves to the pragmatics of the App makers. Software developers are the free citizens, since they can subject data to their pragmatics. We also see an explosive increase in the number of available Apps on the market, which will call for ways to search among them, and structure the results. Now we have move the next level up. Fascinating!

Reading O’Reilly: “What is Web 2.0” (2005)

As a web site designer-developer I want to be up-to-date on the development of the World Wide Web. People are using the buzz word “Web 2.0” – as something that would be around soon. Well, as it turns out, it is already here.

“Web 2.0” is a concept predominantly developed and brought to exploitation by Mr. Tim O’Reilly (O’Reilly Publishing Company) and by Mr. John Battelle. The 2005 article: “What is Web 2.0” by O’Reilly is available on the Web at I think it’s a Must Read.

The article is about “Design Patterns and Business models for the Next generation of software”. It is of particular interest for web entrepreneurs and web site creators. Why? The article analyses why and how the winners of the first generation Web companies survived and prospered. And it does so very well, to my taste. In fact the article provides a set of best practices for Web entrepreneurs and design patterns for the web sites to use. New Web entrepreneurs cannot ignore these practices, models or patterns. Doing so implies loosing the competition against companies that do take them into account, or even improve on them.

Brief summary of conclusions

Web 2.0 applies not only to the Web server-client model, but also to P2P applications. The web is not about delivering software (in releases), but about delivering services involving data.

The market doesn’t exist of a view large companies, but rather of the enormous number of small companies and individuals – Those should be reached.

People do not just consume your service, but they also create value when engaged in activities on your site. Activities motivated by some self-interest (could be just having some fun). The owner is the facilitator of these activities; the web site is the platform. The value created benefits all – both users and owners. You don’t advertise your site, Advertisement is by hearsay. Content on the web is not static, it is changing. Users of your site can subscribe to changes (made by other users). This dynamics create communities. In general, a reinforcing feedback loop should be the driver for growth of your business. On the other hand: static links between sites and user tagging of contents creates structure in the vast amounts of web data.

Successful Web companies own some kind of data. This can be basic data, or a form of data enrichment. Opportunities can be found by disagreeing with consensus; privacy doesn’t seem to be all that important to the users anymore, and the enforcement of intellectual rights ownership seems to be less strict – in certain areas, notably not in the areas of movies or music.

Software, the web site, is updated in extremely short cycles, no doubt using agile software development practices. Motive is that the delivered service should closely follow customer desires. I detect an empirical improvement cycle here, a la Lean production systems or product development. Software is characterized by being lightweight and having simple features. The service delivered by your software is likely to be reused by others. The motto here is not to control, but to cooperate. Software should target various devices, and provide Rich User Experiences.

Rounding up

My current understanding is that Web 2.0 revolves around an explosive self-induced growth of the use of your website. All you do should serve this single goal. The revenues and “raison d’être” of your web company is a side effect of this large scale use. Your site should look and feel fabulous, and should be instantly adapted in order to optimize the usability for its visitors.

It is not easy to admit, but a few years I made a bad buy – not a bargain; bought a NAS
(Network Accessible Storage) for over a thousand Euros, of an at the time well
respected brand (no, not anymore), and the device never operated properly. It
had a hibernation mechanism, which came in handy considering the noise level,
but frequently crashed the device during wake up, after which the system
executed an extensive disk check. The NAS had 2 Terabytes of disk space and the
disk check took over 12 hours, during which the system was not accessible. Also
storing large files or reading back file – large or small – frequently made the
system crash.

Many, many hours did I spend searching the internet for a solution. Without actual success. At some point I did find a review of the model on Amazon, from a buyer with
comparable experiences. And that was it for me. The NAS was going to be
demolished and destroyed! Well, the useful parts (4  Hitachi hard disks of 500Gb each) were to be reused, of course.

And so I did. The old NAS’ hard disks in their rack, and the fan of the power supply have
been reused, the other parts garbaged. An old Fujitsu Siemens Scaleo 600 is the
basis of the new NAS. In order to avoid needing an extra hard disk to carry the
operating system, I bought a  2nd hand Promise SX6000 SuperTrak RAID Controller (€ 45,- delivered at home). The OS is Windows XP Professional SP3. Management of the new NAS is via an Ethernet cable, other data transport is via WLan. The graphics card has been removed after construction and test (reduces power consumption, and in particular heat
dissipation). Management is via a Remote Desktop.

Below you’ll find some annotated pictures of it all.

Remainders of the old NAS

Picture 1. Remainders of the old NAS. The spaghetti on the foreground comes from the old power supply.

The New NAS

Picture 2. The new NAS based on a Fujitsu Siemens Scaleo  600. The DVD devices and floppy drive are not operational. They’re just there  to draw up a clean façade.

Rear view of the new NAS

Picture 3. Rear view. The 4 leds are the RAID  Controller’s. If the NAS is on, they do an nice imitation of Night Rider’s KIT.  The little white panel with cylindrical knob is the fan (noise, heat)  controller. The antenna is for Wi-Fi. The NAS has three fans and is
surprisingly quiet.

Interior of the new NAS

Picture 4. Interior. At the upper left is the power  supply. Below that the CPU fan (and CPU and cooler). The prominent horizontal  green slate is the RAID Controller. The gray block at the lower right is the  rack holding four hard disks, thoroughly screwed to the bottom of the case. Behind  the hard disk rack the extra fan, from the old NAS is just visible. DVD devices  and floppy drive are clearly not connected.

Firmware update of the Raid controller

A problem  to be solved when building the NAS was to furnish the RAID controller with the  latest firmware. Usually that is being done using a floppy drive, but that was
not possible in this case; see picture 4, the light blue floppy connector is
blocked by the RAID controller. The solution was to create and use a bootable
USB memory stick. But how do you make you USB stick bootable (DOS)? There are
many articles on the internet about this subject.  Most are useless. For me, this article from Microsoft (in Dutch) worked. The formatting  utility the article refers to has been replaced by HPUSBFW.exe that can be  found on the HP support site (try this link).

After  updating the firmware, the BIOS’ of the pc and the RAID controller were
compatible enough to have the RAID controller build a fast and safe RAID 1+0
configuration on the hard disks.

Installing Windows XP from  USB stick, including slipstreamed RAID controller driver

The next  problem was how to install Windows XP on the RAID configuration. Since we
cannot use a DVD device, a USB memory stick I the next alternative. However,
according to Microsoft, it is not possible to install Windows from USB memory /
drive. An additional challenge is that also the Promise RAID Controller driver
needs to be installed during the Windows install.

The  solution was found in the very adequate article (in English) by Roderick van
Domburg: “Installing Windows XP from USB”. The article presents clear steps. You need the BartPE environment and the RAM disk found in Windows Server 2003’s SP1. In order to ‘slipstream’ the RAID Controler driver into the installation package, one uses
the nLite tool.

BartPE is a  pre-configured Windows environment that you use to execute an nLite augmented  Windows XP install, following the directions by Roderick
van Domburg. A walk in the park, really.

Performance  of the new NAS

See the  graph below. The system reaches a transfer rate of almost 70Mb/s. Compared to
my new workstation (yes, also homemade 🙂 ), doing almost 300 Mb/s, that is
not much. But 70 Mb/s is also not that slow, so I settled for it.

Performance of the new NAS

Graph 1.  Transfer  speeds of the RAID Controller (RAID 10 on 4 hard disks).

Notice  however the flatness of the curve. Graphs of systems without extensive caching
(the Promise controller has a 128Mb cache) show a graceful (but continuous)
decay of performance as the heads need to make larger movements.


So, doesn’t  one ever get into trouble, when working with all these sensitive hardware
components? Oh, certainly you get into trouble.

CPU pins

If you  inspect picture 4, you may notice the completely clean interior of an over 10
year old pc. This is the result of an extensive cleaning operation. While
cleaning, I removed the CPU fan and cooler. It then turned out that the CPU was
stuck on the cooler (by the heat gel). At first I didn’t notice, and
consequently bent a whole lot of CPU pins when reinstalling the ‘cooler’ (No
sorry, no pictures available). For hours, sweating abundantly from distress,
I’ve been prying very carefully straight paths through the pins’ bases using a
magnifier (and reading glasses) and a potatoe peeling knife. At one moment the
CPU fitted its tray again, and as it turned out, everything still worked. Pfew!


Proudly I  showed my newly acquired Promise RAID Controller PCI card to my 11 year old daughter,  who seems to develop an interest in technology. She reached out and pointed at
some extending parts. A train of sparks jumped from her hand over to the Raid
Controller card. Actually, I thought it was lost, but surprisingly, it still
worked as well as before. Pfew!