Wednesday, 4 June 2008

Reviews and DB

I've been reviewing the InDetGlobalMonitoring code for Heidi, and trying to get more info into my 'run summary' page for the FDR. This second has not been easy, I need to understand the Tier0 database a lot better!

On the bright side, I had my SEDUX paper accepted for the SVG conference in Nuremberg in August.

Thursday, 22 May 2008

Serving jnlp from PHP for WebStart applications

So... I had to incorporate the TriggerTool information in the runlist summary, but it is served as a jnlp with arguments in the jnlp format. My first attempts at generating the jnlp dynamically would work either in Safari or in Firefox, but not both until I renamed the web application to 'test.php.jnlp'.. this worked but is ugly. Finally I hit on the solution: not only making the http header into 'Content-Type: application/x-java-jnlp-file' but also adding '; name=smtp.jnlp' onto the end of that. Now the file comes back as a .jnlp which is recognised by both browsers.
This last week, meanwhile has been a hectic rush as I was initially blamed for submitting broken tags into Athena. It turned out it was a subtle bug in the pixel software which went something like this:
Gaudi has a templated stream insertion operator for all types.
A PixelDcsData class also had a stream insertion operator.
A PixelDcsData class also had a single argument constructor, that argument being 'Identifier'.
Now, when trying to output 'Identifier' with stream insertion, the compiler complained of an ambiguously overloaded '<<' because it couldn't decide whether to convert Identifier to a PixelDcsData class and then use the custom '<<' or use the intrinsic templated '<<'. Constructors with a single argument act as conversion operators. To avoid this, qualify the constructor with 'explicit'.

Wednesday, 7 May 2008

Tier0 and other animals

Managed to get the data filenames from Tier0; wrote a PHP service which returns plain text, html or xml according to the 'Accept' header sent in the request. Wrote documentation and an example application, then incorporated this into my 'run details' service.
Created an /SCT/Derived/Monitoring folder in Cool for Kazu. 
Over the last week: created a Plone site at home and made this visible via dyndns as a  demo of what it can do, following from a presentation on collaborative tools last week. It seems that CERN is opting for Sharepoint as a CMS; a very bad decision, given that all our data and programs are running under linux...

Wednesday, 23 April 2008

Absence

Long time since I updated this... I missed some Wednesdays due to meetings, then was in Ringberg ... now ill !
I managed to get the SCT Configurations to read dead strips and inserted this in SiClusterizationTool for release 14.1.0 before I went to Ringberg; however that release still has not been built due to various problems. Carl Gwilliam has been testing it and patching it since then.
I volunteered to help the Muons insert their cabling into Cool, although I have to wonder about the methodology they are using: of 1.3 million table entries, 70% of them are empty.
Today I'll fix the detector mask interpretation in runlist and see where I get to ...

Thursday, 6 March 2008

M6 and all that

Busy week. Spent all weekend making a run portal for run information, incorporating an rss 2.0 feed. This meant lots of changes: date input for the run list, 'breadcrumb trail' in all the xsl transforms to produce the web pages, cron job producing rss feed and extra xsl to transform an rss feed to html for ajax injection into the original page. Along the way, found a nasty bug in Safari 3.0.4 concerning css styling of xml. Monday, Tuesday: introduced tagging in the CherryPy 'PUT' interface, and started debugging some problems which Else had. Finally finished this on Wednesday, and started to tidy up SCT_Clusterization, adding an IdentifierHash method in the SCT_ConditionsSummary interface and testing it. Today spent time debugging the new date input to runlist, since it turns out that runs can overlap in time intervals if they run in different partitions.

Wednesday, 27 February 2008

Pleas and deadlines

Spent the last four days trying to write new SCT conditions services, with a new interface for all indet services. This was finally tagged yesterday, in theory for release 14 deadline at 18:00 yesterday. However it looks like there were lots of (other) problems with the nightly, so I guess the deadline shifted a bit. It all works and I wrote some example code for both the summary interface and one of the derived tools. Today I made some cabling representations for the SCT with an xsl layer displaying the cabling files, e.g. the barrel, and similar files exist for endcap C and A. Looks like Bruce is close to uploading to the official database, so maybe I have to get busy with cabling soon. Cabling had new methods injected by Nick Barlow to use the identifier hash instead of identifier, the test code needs updating.
Next: runlist needs a date input, and the trigger people want a db 'front door' page from me (when did I volunteer for that?)

Wednesday, 20 February 2008

SCT conditions et al.

Monday I was debugging Else's code, which uses CherryPy 'PUT' from PHP. Discovered some useful things about PHP CUrl (quirks, shall we say?) such as specifying the PUT method means a file must be provided... and then my CherryPy hangs with a 'Continue 100' message...unless one uses the 'custom' http method and declares it to be 'PUT', so then its possible to use the POSTFIELDs.
Yetserday decided on new SCT and InDet conditions reporting service, so I've started to program that. Today I updated a lot of documentation (how to write services, CherryPy, and InDetConditionsDB)  and continued in the implementation.

Friday, 8 February 2008

FDR and all that

In the midst of the Full Dress Rehearsal, and the runlist is being used a lot; I had to make a special version just for FDR data as well. Over the last couple of weeks I've created a new cabling file and made utilities to check consistency with Dave Robinsons output, investigated (and implemented) some ways of making the bytestream converter quicker and implemented a monitor program for the CherryPy server, so it mails me if the server stops working or the machine become unreachable. This Wednesday was mostly spent investigating Kazu's problem with the DCS data access; it seems that the folders were being transferred into the database with the wrong folder dscription. I alerted Jim Cook, who fixed it pretty quickly.

Wednesday, 23 January 2008

Cabling, decisions, CherryPy

Cabling: The cabling was slightly more of a headache than I at first thought...an error in my xsl produced empty slots in the cabling file which then made Athena crash, because I had enabled conversion exceptions in the input stream and then never trapped the exception. Both the file and the reading package are now fixed, although its clear I need better checking of the file so I made a quick C++ command line utility to do that. There is still at least one funny on disk 9c (a duplicated identifier), which probably means there's another funny I haven't spotted yet. We really need this info in the database, I've given up asking and I'm trying to find another way to get the configuration info.

Decisions: The CERN group is being reorganized and my activities straddle both camps (i.e. two different sections): the detector subsystem and the database infrastructure. So where will I end up? The detectors need software people in the systems themselves, but the software work I do also needs 'expert' direction and supervision... watch this space.

CherryPy: Documented the 'PUT' interface and made a wiki for both the GET and PUT methods. It seems the Muon people are interested in using it and Andrea Formica very quickly made a Java app which demonstrates its usage.

Wednesday, 16 January 2008

Happy New Year...

First task was to review the Bytestream converter package and introduce some documentation. This is not complete, but certainly better. Things are starting to get more exciting now the SCT can actually be cooled and run. Yesterday I had to make a cabling file from the configuration... still no database info available; I should try to find a work around. Also implemented a multi-channel 'PUT' on the CherryPy interface for Sergey...all in all, a fairly productive start to the year.