Back to the binaries! Yeah!
Back to the binaries! Yeah!
After all this XML work the binary file formats are a different world. For the fields work I needed to analyze the “form field” structure of the binary .DOC format:
The header: Actually a misused PICT structure:
| b10 | b16 | field | Type | size | bitfield | comments |
| 0 | 0 | lcb | U32 | | | Count of bytes of the whole block. |
| 4 | 4 | cbHeader | U16 | | | Always 0x44 |
| 6 | 6 | | U8[62] | | | Contains zero. In fact this is the PICT struct, but since its not need we can fill it with zeros. |
The formfield payload (Unicode Variant)
| b10 | b16 | Field | Type | size | bitfield | comments |
| 0 | 0 | cUnicodeMarker | U8[32] | | | Contains {0xFF,0xFF,0xFF,0xFF} |
| 4 | 4 | fftype | U8 | :2 | 03 | Type: 0 = Text 1 = Check Box 2 = List |
| | | ffres | U8 | :5 | 7C | Result field for a form field. Values from 0 to N-1, where N is the number of \ffl entries. In case of check boxes: 0==unchecked; 1==checked. |
| | | ffownhelp | U8 | :1 | 80 | 1 if there is associated Help text, 0 otherwise. |
| 5 | 5 | ffownstat | U8 | :1 | 01 | 1 if there is associated status line text, 0 otherwise. |
| | | ffprot | U8 | :1 | 02 | 1 if this field is protected, 0 otherwise. |
| | | ffsize | U8 | :1 | 04 | Type of size selected for check box field: 0 = Auto 1 = Exact |
| | | fftypetxt | U8 | :3 | 38 | Type of text field: 0 = Regular text 1 = Number 2 = Date 3 = Current date 4 = Current time 5 = Calculation |
| | | ffrecalc | U8 | :1 | 40 | 1 if the field should be calculated on exit, 0 otherwise. |
| | | ffhaslistbox | U8 | :1 | 80 | 1 if this field has list box attached to it, 0 otherwise. |
| 6 | 6 | ffmaxlen | U16 | :15 | 7FFF | Number of characters for text field. Zero means unlimited. |
| | | | U16 | :1 | 8000 | Unknown. Set to zero. |
| 8 | 8 | ffhps | U16 | | | Check box size (half-point sizes). |
| 10 | A | xstz_ffname | Xstz_UString0 | | | Form field name |
| | | xstz_ffddeftext | Xstz_UString0 | | | Default text for field. Only if type==0. |
| | | ffdefres | U16 | | | Default resource for list field. Default value for check box (0=default unchecked; 1=default checked). Only if type!=0. |
| | | xstz_ffformat | Xstz_UString0 | | | Format for text field |
| | | xstz_ffhelptext | Xstz_UString0 | | | Help text |
| | | xstz_ffstattext | Xstz_UString0 | | | Status line text |
| | | xstz_ffentrymcr | Xstz_UString0 | | | Macro to execute upon entry into this form field |
| | | xstz_ffexitmcr | Xstz_UString0 | | | Macro to execute upon exit from this form field |
| | | cUnicodeMarker2 | U8[2] | | | Contains {0xFF, 0xFF}; Padding and/or indicator for Unicode? |
| | | fflLen | U32 | | | Num of ffls |
| | | ffl | Xstz_UString[fflLen] | | | Resource string for lists. |
An Xstz_UString has the following form:
| b10 | B16 | Field | type | size | bitfield | Comments |
| 0 | 0 | Len | U16 | | | Len of the String. |
| 2 | 2 | Unicode char | U16[len] | | | Unicode chars |
An Xstz_UString0 has the following form:
| b10 | B16 | Field | type | size | bitfield | Comments |
| 0 | 0 | len | U16 | | | Len of the String. |
| 2 | 2 | Unicode char | U16[len] | | | Unicode chars |
| 2+2*len | | Zero | U16 | | | Trailing “0” |
In case of non-Unicode encoding then the Unicode Marker disappear and the string chars have U8 size.
You might also want to take a look at the ffData element in OOXML ;-)
Report from Management Developers Conference
About Management Developers Conference
Management Developers Conference (ManDevCon, MDC) is the annual conference of the Distributed Management Task Force (DMTF).
The DMTF is the leading industry organization for interoperable management standards and initiatives
. Mostly known for their Common Information Model (CIM) and the Web Services for Management (WS-Management) standards.
The full conference schedule can be viewed here.
I already had the opportunity to attend this conference last year. This year, I was accepted as a speaker with two presentations about WS-Management.
Conference overview
The conference has three blocks, one for learning ('university day'), one for demo and interop ('interop lab') and one for presentations.
It was interesting to see how the conference topics changed year over year. Last year, protocols and APIs were still under discussion. In 2006, the WS-Management and WSDM (OASIS Web Services Distributed Management) protocols were still competing. This year, working implementations of various standards dominated.
From a protocol perspective, WS-Management is the clear winner with virtually every systems vendor showing implementations. Microsofts adaption of WS-Management for all remote management on Windows (WS-Management comes build into Vista and is available as an add-on to Server 2003 and XP) was probably the driving force here. Openwsman, an open source implementation of WS-Management provided by Intel, is also picked up by lots of embedded vendors.
The interop lab revolved around implementations for CDM, DASH and SMASH.
CDM, the Common Diagnostic Model, is a CIM extension for diagnostic instrumentation. Its primary use is for vendor-agnostic remote health evaluation for hardware. Hewlett-Packard uses this extensively for their systems and requires each of their component suppliers for test routines available through CDM.
DASH (Desktop and mobile Architecture for System Hardware) and SMASH (Systems Management Architecture for Server Hardware) target management and monitoring of hardware components based on the WS-Management protocol.
Attended presentations
- Opentestman
- ITSM and CIM
- Using the CIM Statistical Model to Monitor Datapresentation
- CIM Policy Language
- Nagios through CIM
- Cimple and Brevity
- Management Frameworks
- openwsman
- full compliance to the specification (The current WS-Management specification is still not final)
- WS-Eventing (asynchronous indications, for alerting etc.)
- A binary interface to sfcb (to connect to cim providers without a cimom)
- better support for embedded devices
- Filtering (CQL, cimom query language; WQL, WS-Management query language, xpath, xml query language)
Opentestman is validation test suite for ws-man, ws-cim and dash-1.0. Its a (wild) mixture of bash scripts and java based utility tools. Tests are described in xml-based 'profile definition documents' (PDD), making the tests data-driven. It currently covers all mandatory and recommended features of the WS-Management and WS-CIM standards. More than 160 test cases exist for all 14 DASH 1.0 profiles. [DASH 1.1 was released early December]
[Hallway discussions showed, that the current implementation of Opentestman is in urgent need of refactorization. So don't look too close at the code or it might hurt your eyes.]
ITSM, Information Technology Service Management, can be described as managing the systems management. The presentation gave an overview on existing technologies and asked for participation to model this topic in CIM. Currently, several (policy/modeling) standards exist for this topic, e.g. Cobit (Control Objectives for Information and Related Technology; mostly US, covering business and process mgmt), ITIL (Information Technology Infrastructure Library; mostly Europe, covering service and process mgmt) and CIM (resource mgmt). IT process management has seen a big push recently. Lots of tools and companies appeared in the last couple of years offering services.
With SML, a service modeling language exists. Other areas like availability management, performance/capacity management or event/incident/problem management do not have any established standard.
Brad Nicholes from Novell showed recent work to integrate existing open source solutions (using non-standard models and protocols) with CIM.
Ganglia, a "scalable distributed monitoring system for high-performance computing systems such as clusters and Grids" uses rrdtool (round robin database tool) to view stastistical data with different granularity.
One feature of Ganglia is to provide trending information (as opposed to simple alerting) to support capacity planning.
Ganglia consists of a statitics gathering agent (gmond) running on every client. These agents are grouped in clusters, sharing all information within the cluster to ensure failover capabilities. The statistics aggregation agents (gmetad) run on specific managment servers, reporting to an apache web frontend.
Brad has defined a CIM model and implemented CIM providers to access the data. Its basically rrdtool access, thereby drastically reducing the amount of data transported over CIM.
This was a report from the DMTF policy working group defining CIM-SPL.
SPL, the simplified policy language, defines more than 100 operators to express relations (examples given: os 'runsOn' host, os 'hasA' firewall) and actions (Update of CIM properties, execution of CIM methods).
There exists a cli tool and an Eclipse plugin for developing and testing policies. The Apache Imperius project is about to release a sample implementation. Similar plans exist for the Pegasus CIMOM.
This was another example of bringing open source, but non-standard implementations and CIM together.
Nagios is a very popular monitoring and alerting framework. It comes with a rich set of data gathering plugins, available on nagiosexchange.org.
Intel has developed an adapter layer to expose Nagios data through CIM. One can also mix a traditional CIM provider with a Nagios plugin, filling only particular properties from the plugin.
The source code is not available publically (yet...).
Cimple and Brevity are code generator tools making it easier to develop CIM providers and tools. Cimple is a CIM provider generator. It takes a CIM class description (MOF file) as input and generates stubs for a CMPI provider. This way, a developer does not have to fight with the provider API but can concentrate on the instrumentation part. [The amount of code generated is still huge. For SLE11, Python providers are the better choice for most cases.]
Brevity tries to ease writing client tools. For people developing in C or C++, Brevity is worth a look.
[For modern scripting languages, better bindings exist. E.g powerCIM for Python and rwscim for Ruby.]
This talk was meant as a call for help to collaborate on a client framework standard. There are sufficient standards and implementations for getting instrumenting managed devices. But on the management application side, everyone reinvents the wheel.
Mergers drive this on the side of traditional (closed source) vendors, else they end up with lots of different APIs.
The proposed 'integrated framework and repository for end-to-end device view' consists of an 'agent tier' (instrumentation), a 'service tier' (see below) and an 'application tier' (API for management applications).
Services can be divided into infrastructure (discovery, collectors (caching), notifications) and core services (data model, topology, policy, scheduling, security, framework service management, domain specific services).
This is ongoing work sponsored by Sun Microsystems looking for further participation.
Openwsman is an open source implementation of the WS-Management and WS-CIM protocol standards. Its currently at version 1.5.1 with 1.6.0 scheduled for end of year and 2.0 end of march '08.
It consists of a generic library, a client library and a server library and daemon. The daemon can be used in parallel to existing CIMOM implementations, translating between WS-CIM and CIM/XML. The mod_wsman plugin for Apache provides co-existance of WS-Management and the Apache web server through the same port.
Main features for next years 2.0 release are
Making a hash of it
It's true that The Economist oversimplified what hashing functions do and understated how difficult it is to find collisions. Still, for people who don't program, writing a program to find a one-in-one-thousand collision is no more or less baffling than finding a one-in-one-hojillion collision. So, even if such simplifications make more technically astute readers cringe, the simplifications were necessary for the majority of its readership.
For those for whom simplified discussion of hash collisions is too esoteric, I offer you instead this link to a story about the rights of poop-eating worms.
How to create a favicon for your site
Favicon is a 16×16 bitmap in Microsoft icon resource file format. There are a lot of tools available to create a favicon.ico. I used GIMP, which is available for any linux/unix system or can be downloaded from http://www.gimp.org and can be also used on windows. So, first step is to rescale your image to 16x16 pixels and save your rescaled image in pnm or ppm format. Using the command line utility ppmtowinicon which is part of Netpbm package you can obtain the favicon:
ppmtowinicon -output favicon.ico \<inputfile.pnm | inputfile.ppm\>
The other method is to use convert command which is part of ImageMagick package. Since almost all Linux distributions install ImageMagick by default, all you need to generate your own favicon.ico is a shell access to a Linux box:
convert file.jpg -resize 16x16! favicon.ico
All you need now is to copy favicon.ico in your web site root folder and add to your webpage next line, to the \<head> section:
\<link rel="Shortcut Icon"
href="http://www.yourdomain.com/favicon.ico"\>
That's all.
openSUSE Factory
KDE Project:
One picture is worth more than 10 words, but that's the limit for a blog entry :)

No El Guapo for me when I'm in Massachusetts in a few weeks
(There's more info on some livejournal community page, but they ruined it by adding a lolcat image. I won't link to it. Lolcats are not funny.)
Oh well. I be extra sure, now, to not miss another of my old haunts in Boston, Pino's.
Mapping the IT Universe
DMTF (Distributed Management Task Force) is an
industry organization leading the development, adoption and promotion of interoperable management standards and initiatives. Its mission is no less than Mapping the IT Universe by standardizing an object-oriented model (CIM) and related protocols (WBEM).
The conference was opened by a reception celebrating 15 years of DMTF and 10 years of CIM. Winston Bumpus gave a short overview on the history of the DMTF.
The DMTF was founded in 1992 as the Desktop Management Task Force, focussing on standards for managing desktop PCs. Two years later, the Desktop Management Interface (DMI) was published and quickly adopted. After releasing DMI 2.0 in August 1996, their mission was accomplished and the board considered closing the DMTF.
At that point, Patrick Thompson from Microsoft proposed to extend the management standardization beyond desktops and to cover the complete IT landscape. The original proposal already contained the key aspects and architectural components which are still valid today:
- HMMS (Hypermedia Management Schema) — CIM today
- HMOM (Hypermedia Object Manager) — CIMOM today
- HMMP (Hypermedia Management Protocol) — CIM/XML over HTTP today
Initially a gang of five, namely BMC, Compaq, Intel, Microsoft and Sun accepted the proposal and continued funding the DMTF. In a tour de force with biweekly meetings over a period of 6 months the DMTF was able to present the Common Information Model 1.0 (CIM) in April 1997. It only covered the object-oriented modelling without any transportation protocol. This was added another year later (August 1998) with the Web Based Enterprise Management (WBEM) standard.
In 1999, the DMTF was renamed to Distributed Management Task Force, keeping the acronym (and all the advertising materials).
Today more than 200 companies with over 4000 participants contribute to the ongoing standardization efforts. In the 'Industry Showcase' and 'Interop Lab' rooms of the Conference, a wide variety of devices, tools and applications based on CIM are shown.
With the broad acception of Web Services for Management (WS-Management) true interoperable systems management now becomes a reality. Implementation range from baseboard management controllers (see here for drivers) and embedded devices to Open Source stacks and Microsoft Windows.
I'll find my way through night and day
Memories from the past
The first day I visited the Computer History Museum (CHM) with its marvelous collection of historic computers and parts. The majority of which is stored in the archive, vacuumed and wrapped in plastics preserved for future generations. Only a small fraction of artifacts is on display, dubbed visible storage.
Here one can see parts of the original ENIAC computer, a real IBM System/360, the Apollo Guidance Computer or a ZUSE Z23. Too bad I didn't bring my camera.
Whats unique about this museum are the - excuse me - human artifacts. Those guys and gals still living in Silicon Valley who designed and hacked the early machines. I really enjoyed a guided tour given by Ray Peck which was sprinkled with background information and anecdotes. Just wonderful.
Next was a live demonstration of the PDP-1 restoration project. One could see a 1961 computer up and running, demoed by Peter Samson and Lyle Bickley. They both hacked the PDP-1 during their student time at MIT. Peter is the original author of the PDP-1 music program and gave an example of his work. Hilarious !
On my way out, I picked up a free copy of Core, the museums biannual publication. The article about rescued treasures was most interesting, showing how challenging preserving history can be.
To quote from the museums flyer: "It's ironic that in an industry so concerned with memory, how quickly we forget."
Powered by ScribeFire.