Sunday, January 17, 2010

Literature for the "Business IT Alignment" Course, ITU spring semester 2009

pencil icon, that"s clickable to start editing the post

In the spring semester of 2009 I've taken the course "Business IT Alignment". My preparation has been quite crippled by what seems to be a continuous stream of influenza that I've picked up since the day before new year (I've coined it The ultra-flu). In my effort to prepare for the exam I've several times found my self searching for the right articles and the related course slides, so here I've decided to create a post to build up that information (probably only of real interest for myself).

The Course seems to have run at least since 2005, with Lars Andersen taking part in 4 consecutive years. This semester with a completely new duo of teachers. The base reference is the course program [PDF]. Supplemented with the course homepage/slides from this and the previous semester:

Books

IT Governance: How Top Performers Manage IT Decision Rights for Superior Results

Spring 2009

Spring 2008


Innovation: The Five Disciplines for Creating What Customers Want

Spring 2009

Spring 2009


The Innovator's Dilemma: The Revolutionary Book that Will Change the Way You Do Business

Slides

Articles

Strategies for Information Technology Governance

Chapter II - Integration Strategies and Tactics for Information Technology Governance (pages 37-74).

Slides


"Linking the IT Balanced Scorecard to the Business Objectives at a Major Canadian Financial group" [PDF] Wim Van Grembergen, University of Antwerp (UFSIA),Ronald Saull, Information Services Divisions of Great-West Life, London Life, Investors Group Steven De Haes, University of Antwerp Management School (UAMS)

Spring 2009


Cultures of Technology And the Quest for Innovation.
The Introduction [PDF] (pages 1-23).

Spring 2009

Xtras for the eager pupil

"Using the Balanced Scorecard as a Strategic Management System" [PDF], Robert S. Kaplan, David P. Norton.

Read more

Tuesday, August 11, 2009

Resolving the XHTML1 DTD locally - avoiding problems with the W3C 503 access blocking

pencil icon, that"s clickable to start editing the post

Currently I'm doing a project that need some simple web scraping where I'm using CyberNeko HTML Parser (nekoHTML) which relies on Xerces. As I was running my first simple spike I encountered:

Exception in thread "main" java.io.IOException: 
Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd

Whaoo, my first guess was that the URL was wrong, but it turned out to be okay. After a quick search I found the reason to be a deliberate move as can be read on W3C Systems Team Blog post "W3C's Excessive DTD Traffic". The essence of the problem is:

..In particular, software does not usually need to fetch these resources, and certainly does not need to fetch the same one over and over! Yet we receive a surprisingly large number of requests for such resources: up to 130 million requests per day, with periods of sustained bandwidth usage of 350Mbps, for resources that haven't changed in years.

Oouch, that's a lot of bandwidth. I've heard of a simliar problem, though of much smaller scale, with Schemas for OIOUBL Invoice version 0.7 from the former ISBs (Info Structure Base) repository.

Solution

Lucklily it is quite easy to do right yourself with XML Catalogs, pulling from a local repository. cbowditchs guide "Resolving DTD system URI with XMLCatalogResolver" helped me a lot and I didn't have any problems with it like he had. First you'll need to fetch the DTD and it's depencies:

create a catalog file:

    1 <?xml version="1.0"?>
    2 <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
    3   <public publicId="-//W3C//DTD XHTML 1.0 Transitional//EN"
    4           uri="xhtml1-transitional.dtd"/>
    5 </catalog>

and adding it's use to the code like:

..  
XMLCatalogResolver resolver = new XMLCatalogResolver();
resolver.setCatalogList(new String[] {"etc/dtd/xhtml1-catalog.xml"});

DOMParser parser = new DOMParser();
parser.setProperty("http://apache.org/xml/properties/internal/entity-resolver", resolver);
..

Read more

Monday, July 6, 2009

Performing a Conconi running test

pencil icon, that"s clickable to start editing the post

Second update: did a competition like 5 km run on 1. september and did a comparison. Updated: did a new test in the start of august which is compared at the bottom. I'm a typical gadget rich amateur athlete and my favorite tool is a Heart Rate Monitor (HRM). For many years it was my trusty Polar xTrainer, later Polar CS200C and for the last year a Garmin Forerunner 305. The HR is an indicator of the work/stress done, but to really put it into use it can be used to structure the workouts. Any matter the exact structuring you like there's the need for tests to identify some boundaries, primarily the anaerobic threshold. Another value of tests is to track progress through season. One test that everybody can do is the Conconi test and for the first time in a looong time I did one yesterday.

Background

Back in the late nineties I bought the book "Trening melkesyre hjertefrekvens", a norwegian translation of of Peter G. J. M. Janssen book Training Lactate Pulse-Rate. An excellent book that's easily read and based on facts around HRM training and riaerch with examples. The book recommends real lactate tests (for those that can afford it/professionals) or the Conconi test. Back when I bought the book I did several tests with varying success in terms of finding the anaerobic threshold (da: "knækpunktet"). I guess that there could be many reasons why my practical tests didn't follow the textbook: one being that I'm not top athlete.

While getting ready for the test yesterday I first remembered the theory falsely. My own subjective experience is that when truing to keep a high speed/pace extra pulse points (heart beats per minutes) doesn't seem to translate into speed, which lead my to think that after the threshold the pulse would increase with little increase in speed. That's just opposite to the book where the pulse doesn't increase much with speed since it's anaerobic!

The Test

I did the test on a treadmill since that'll give me an even pace, and after at 10 min warmup (maybe not hard enough) I was ready. I expected my threshold to be around 5 min/km (12 km/h) and started at 9,2 km/h and increased the speed with 0,4 km/h foreach 200 m, and ended at 14 km/h. Nothing impressive (I know) and I would have liked to reach 15 km/h, but is simply out of reach. I tracked my HR with the FR and made a voice recording where I said the speed and HR just before increasing speed, since this gives assurance that I didn't miss anything and was certain of the speed correlation that the FR knew nothing about. Here the workout as it's seen in SportsTracks:

There's a clear trend but it's a little bumpy. Putting the data into a table and producing a diagram with Calc give this graph:

It does not fit that clearly with the textbook as there is no real significant change, but that'll not hold me back! So here's my best guess:

According to this my anaerobic threshold should be at 162 bpm with a speed (pace) of 12,8 km/h (4:41 min/km).

Reflection

Funny enough this is similar to the tests I did approximately 10 years ago. It does seem a little high since my PB for 5 km is 24:40 (3 weeks ago) and I felt like 160 bpm was a limit. It can be true but certainly an important fact is that I bike much more than I run, so maybe i have cardiovascular capacity for this, but there more to than that.

This evening i tried a interval workout aiming for 160 bpm, which was quite hard to reach, but the pace was a little better. One thing is hitting the level, the theory says that it sould be able to kepp it for an hour, which i consider highly unlikely

New test in start of August

After about a month of training in my summer vacation I was eager to repeat the test and measure up my progress - what a disappointment! During the test I concluded that I had made no progress at all and in fact as the graph shows there's a general set back. Just like the first test there's no clear breaking point to indicate the threshold (just as Joe Friel has experienced).

I've got no real explanation for it. The conditions seemed very similar with a hot gym and my only ideas are that I did a much more thorough warmup and maybe a slight bit of flue. Another guess could be that progress is discrete and not as linear as some textbooks could indicate and I simply hadn't hit the next step.

My 5 km PB in the DHL Stafet 2009

I haven't participated in any competitions so this is my only competiton like result for comparison. It went fine with a PB of 23 minutes, the workout profile was like:<(p>

And my retro-splits were:

It should be added that this event is just as much a social as a sports event, and the last part was quite crinkly and crowded, but I could probably not cut off many more seconds at the present time and form.

With a pace of 4:36 min/km this in within proximity of a reasonable time compared with the tests. Since in principle I should be able to hold the LT for about an hour the 5 km pace should be considerable above LT.

Looking forward I've looked at a couple of prediction tables. First from the Furman institute EQUIVALENT PERFORMANCES AT DIFFERENT DISTANCES [PDF]:

and another one based on The McMillan Running Calculator :

They certainly raise my optimism with an outlook to a marathon in the range of 3:44 - I just hope I can keep up the pace for that long.

Links

Here's a list of links I've gathered while browsing for facts and examples on Conconi running test.

Read more

Friday, May 1, 2009

HTTP User-Agent from Nokia E71

pencil icon, that"s clickable to start editing the post

At work I have the pleasure of using a Nokia E71. I wanted to try out Google Maps for mobile as an alterntive to the nokia maps. The only way was to visit google through the browser in E71, and that way detect the device. It intrigued me to figure out how the UserAgent looked like, and be able to fake it with User Agent Switcher.

E71 Specification

Before just showing what turns up in the log files, here's what can be figured out from the specifications. The specification for Nokia E71 states that the Software platform and user interface uses S60 3.1 Edition, Eseries (Symbian Os 9.2). It lists the following features for Web browsing:

  • Supported markup languages: HTML, XHTML, MP, WML, CSS
  • Supported protocols: HTTP, WAP 2.0
  • TCP/IP support
  • Nokia browser
    • JavaScript version 1.3 and 1.5
    • Mini Map
  • Nokia Mobile Search
  • Nokia PC Internet Access (capability to serve as a data modem)

The Open Mobile Alliance(OMA) has defined and RDF Schema for technical device profiles and on their page for OMA Profile Data the UAProf V1.1 Candidate File (ccppschema-20021212) can be found. The specific profile for E71 has been long known and can be fetched at http://nds1.nds.nokia.com/uaprof/NE71-1r100.xml. In a comment block the User Agent is given:

 
<!-- ===================================================== -->
<!--                                                       -->

<!-- Version 1.1 16 Jul 2008                               -->
<!--                                                       -->
<!-- Valid beginning from version 1.00.0                   -->
<!-- User Agent Header: Mozilla/5.0(SymbianOS/9.2; U;      -->
<!--  Series60/3.1 NokiaE71/1.00.000; Profile/MIDP-2.0     -->
<!--  Configuration/CLDC-1.1;)AppleWebKit/413(KHTML,       -->
<!--  like Gecko)Safari/413                                -->
<!-- ===================================================== -->

User-Agent according to RFC 2616

In terms of HTTP RFC 2616 defines the User-Agent header. The W3C has a somewhat more accessible version than the plain IETF version: RFC 2616 - "Hypertext Transfer Protocol -- HTTP/1.1" and specific in "14.43 User-Agent":

The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the tracing of protocol violations, and automated recognition of user agents for the sake of tailoring responses to avoid particular user agent limitations. User agents SHOULD include this field with requests. The field can contain multiple product tokens (section 3.8) and comments identifying the agent and any subproducts which form a significant part of the user agent. By convention, the product tokens are listed in order of their significance for identifying the application.

User-Agent = "User-Agent" ":" 1*( product | comment )

Example:

User-Agent: CERN-LineMode/2.15 libwww/2.17b3

The User-Agent's

My current User-Agent is:

"Mozilla/5.0 (SymbianOS/9.2; U; Series60/3.1 NokiaE71-1/110.07.127; Profile/MIDP-2.0 Configuration/CLDC-1.1 ) AppleWebKit/413 (KHTML, like Gecko) Safari/413"

The UAProfile was:

"Mozilla/5.0(SymbianOS/9.2; U;  Series60/3.1 NokiaE71/1.00.000; Profile/MIDP-2.0 Configuration/CLDC-1.1;)AppleWebKit/413(KHTML, like Gecko)Safari/413"

I've aerlier looked at The UserAgent Signature from the Google Chrome browser_

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.59 Safari/525.19

or

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13

Where Firefox can look like:

Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

or

Mozilla/5.0 (Windows; U; Windows NT 5.1; da; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1

or

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16

Internet Explorer shows up like:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)

or

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618; InfoPath.2)

or

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2)

Read more

Wednesday, April 8, 2009

Efficient XML is in fact efficient!

pencil icon, that"s clickable to start editing the post

In the beginning of 2008 I wrote on "W3C drafts on Efficient XML Interchange, EXI - I didn't say binary XML". The specification is now a last call working draft from 19 September 2008. There has been both implementation and a test suite developed to test whether it in fact is efficient - and if you browse through their "Efficient XML Interchange Evaluation" you'll discover that in fact it is. They have also done a "Efficient XML Interchange (EXI) Impacts" analysis, and this conclusion is also positive:

EXI has been designed to be compatible with XML and can be introduced into the existing family of XML technologies without immediate disruption to XML-using applications. However, with certain modifications to existing XML-related specifications in the future it may be possible to achieve additional benefits when using EXI, still without disruption to existing XML-based applications. Furthermore, in a multi-application system where only some applications adopt EXI, sending EXI data to the other applications can potentially cause disruption, so care is needed to account for differing format support among the participating applications.

In terms of efficiency they have done various tests. I haven't looked into the test cases nor the technologies used for comparison but hope it's done as serious as the document looks like. They hav benchmarked it to existing technologies like Gzipped XML and ASN.1 for compactness.

...EXI is consistently smaller than gzipped XML regardless of document size, document structure or the availability of schema information. In some cases, EXI is over 10 times smaller than gzip. In addition, EXI works well in cases where gzip has little effect or even makes documents bigger, such as high volume streams of small messages typical of geolocation, financial exchange and sensor applications.

and

... Each EXI encoded file is smaller than the equivalent ASN.1 PER, and sometimes 20 times smaller. This holds true even for cases where EXI is preserving XML comments, processing instructions and namespace prefixes that are not preserved by ASN.1 PER. In addition, EXI works well in cases where ASN.1 PER actually increases the size of the document or fails to produce an encoding at all (e.g., due to schema deviations.)

Size is one thing but it could come at a processing cost, so they've tested that as well

The average decoding speed of EXI was 14.5 times faster than the average decoding speed of XML. The median speed increase was 6.7 times faster. To improve readibility, the graph does not show the four best cases, which ranged from 54 times faster to 257 times faster. These four test cases were SOAP web-service messages that were marshalled from a binding layer and contained repeating structures with elements and attributes from several different namespaces. As is typical for such use cases, the repeated structures contained a large number of repeated namespace declarations. EXI eliminates most of the overhead associated with namespace processing, which is why EXI achieved such a speed increase for these cases.

I guess these namespace declarations could be optimized just placing them at the root level, but I'm not sure if this would speed up the processing (and that i hurt that bad).

The graph above shows EXI decoding speed with compression compared to XML with compression. The average decoding speed of EXI was 9.2 times faster than the average decoding speed of GZipped XML. The median speed was 4.4 times faster. ...

Summary

I sure looks like EXI is comming to an end with a final working draft and test suite that ran with success. It will be interesting to see if it actually picks up speed and when? I haven't found any open source implementations yet. EXI may loose out due to not but good enough but from competition from Advanced Message Queuing Protocol, that goes for the same kind of nails and maybe fits a larger user base of classic messaging.

Read more