<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32946075</id><updated>2011-11-28T00:05:51.406Z</updated><title type='text'>Metro Boulot Dodo</title><subtitle type='html'>A rather dull worKLOG.  This is just a scratchpad for solutions to IT problems that might be useful to someone else.
Expect no opinions, no brilliant insights and definitely no pictures of pets or children.  Expect stack traces, code snippets and other hints for the Google Indexer.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jontayler.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32946075.post-8381196009928442979</id><published>2007-08-13T12:29:00.000+01:00</published><updated>2007-08-13T12:38:34.463+01:00</updated><title type='text'>Parallels screws up Windows</title><content type='html'>Since Parallels 3 has come out there have been a lot of complaints that it can screw up your Windows XP installation, resulting in an error like:&lt;br /&gt;&lt;span style=";font-family:Tahoma;font-size:85%;"  &gt;&lt;em&gt;&lt;br /&gt;&lt;windows&gt;/system32/ntoskrnl.exe file is missing&lt;br /&gt;&lt;/windows&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;Parallels has finally posted a fix:&lt;br /&gt;http://kb.parallels.com/entry/30/516/&lt;br /&gt;&lt;br /&gt;However, it doesn't tell you how to get your Parallels VM to boot from the Windows CD in the first place.  The trick is to start the VM, then go to edit/Virtual Machine, and in there you'll find an option to change the Boot order to CD first. &lt;br /&gt;&lt;br /&gt;In my case, this only partially fixed the problem, perhaps because I'd previously botched things by following other advice on the internet.  The solution for me was to completely deinstall parallels (using the _installer_, weirdly), then reinstalling it.  Be warned that this might then need you to reactivate your windows installation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-8381196009928442979?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8381196009928442979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8381196009928442979'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/08/parallels-screws-up-windows.html' title='Parallels screws up Windows'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-7899376672447872208</id><published>2007-08-13T10:22:00.000+01:00</published><updated>2007-08-13T11:17:37.904+01:00</updated><title type='text'>J1 visas at the London US embassy</title><content type='html'>The US embassy website at http://london.usembassy.gov makes applying for a J1 visa appear to be an intimidating and unpleasant process.  It's big on the "don'ts" - Don't bring a mobile phone, don't expect to be allowed inside with a bag, don't arrive too early or too late.  Then there's the forms: half a dead tree's worth, requiring you to list your experience in nuclear, chemical and biological weapons, every foreign country you've been to in the last ten years (the form was designed by an American...right?  They only give you a box big enough to write "Mexico and Canada".)&lt;br /&gt;With a start like that, it's hardly surprising that the actual experience is, in fact, a whole lot better, at least if you're white, middle class and British.&lt;br /&gt;&lt;br /&gt;It's still expensive though: for my family of 3 the bill was:&lt;br /&gt;$100 X 3 visa fees&lt;br /&gt;$100 SEVIS fee&lt;br /&gt;£15 mail courier&lt;br /&gt;£170 transport to, from and around london&lt;br /&gt;£15 phone call to make the appointments&lt;br /&gt;------&lt;br /&gt;£400&lt;br /&gt;&lt;br /&gt;So, it's worth getting the paperwork right first time.&lt;br /&gt;&lt;br /&gt;Ingredients for a J1 (and associated J2) visas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DS2019 forms for everyone - these should be provided by your sponsor&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;An appointment at the Embassy in London (the Consulate in Edinburgh doesn't do visas.  I wonder what they DO do.)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;   The appointments are booked via a phone line at £1.20 per minute&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;After you make the appointment, you will receive via email an appointment letter and a payment receipt for each member of your family&lt;/li&gt;&lt;li&gt;Visa application forms for everybody - this is form DS156, which you complete online, and then print out.&lt;/li&gt;&lt;li&gt;Contact forms DS158 for everybody.  This is a PDF file that you print out, and then complete (unless you're lucky enough to have a PDF editor).&lt;/li&gt;&lt;li&gt;Form DS157 for males of military age (and assorted other categories such as scientists).  This is where you have fun listing your chemical warfare experience.  It's also a PDF that you print out. &lt;/li&gt;&lt;li&gt;A SEVIS fee receipt - this is a receipt that you've coughed up the $100 to take part in the program.  You can print this off from the web after you've filled in the online form.  Note that they don't tell you that you can use this as official proof until you've already agreed to pay an additional $30 to have the certificate couriered over from the US.&lt;/li&gt;&lt;li&gt;passports for all the family&lt;/li&gt;&lt;li&gt;One passport photo for each family member.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What happens at the embassy&lt;/span&gt;&lt;br /&gt;You show up at the embassy shortly before the time on your appointment letter and join a queue.   There's one queue (red) for US citizens doing US-citizen things and one queue (yellow) for the rest of us (though when I was there, there was noone in the red queue).  At some point a friendly english girl comes down the line and checks your appointment letter, crosses you off a list of expected people, and ushers you on to the next queue at the security checkpoint.  At around your allotted time you are waved forward into the checkpoint, which is a portacabin containing an airport style xray machine and a cheery Australian chap.  Your documents are looked at again, and you have to put your stuff through the xray machine.  There's nothing here that's any more scary than going into an airport departure lounge.  Off you trot round the outside of the embassy following the "visas" sign, up some steps and to reception, where your appointment letters are checked again, and you're given a sticker with a number on it.  You go into a waiting room and, well, wait.  Eventually your number is called and you are told to go to a counter window, where all your documents are taken and examined.  These booths are also manned by surprisingly friendly (since it must be a tedious job) Brits and Australians.  At this point you get to play with the finger print machine.  You're given a blue form with your sticker attached and told to go and sit down and wait again.  Tum-de-tum.  After an hour or so you get called again, this time to the booths down the corridor for your "interview".  If you were expecting an interview behind closed doors with a guy with a rubber hose and a desk light then you'll be pleasantly surprised.  Again, the interview takes place at a counter window, in my case with a charming and friendly girl who ought to have been working for the tourist board, not the embassy.  This job only seems to be trusted to Americans though, since they presumably have a bigger incentive to keep ne'er-do-wells out of their country.   You will be asked about your research project, but we're talking about delivering your elevator pitch here...it's not a viva exam.  Click click, stamp stamp.  Your visa has been granted.  The whole interview took about 5 minutes.  Including waiting time, the process takes about 2 hours (though I was told it was a particularly light day).  From the order the numbers were being called it was clear that some people had been waiting considerably longer, presumably for being too muslim, too dark skinned or having too interesting a police record.  Finally, you take your blue form to a counter at the back of the waiting room where you hand over £15 pounds to pay for the safe return of your passports.  I guess you could skip this bit, but it would render the trip a little pointless.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Frequently Asked Questions&lt;br /&gt;&lt;/span&gt;Well, I was was asking them, anyway.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How long does the appointment phone call last?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;At £1.20 a minute, you'd expect them to milk it for all the cash they could get, but mine proceeded at such a rapid pace you'd think it was them paying, not me.  Everything was done in about 10 minutes.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Do children need to attend?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Apparently, children under 14 don't need to go.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Can children attend?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Yes.  They advise that the embassy isn't the most fun place in the world for a young child, but you're not prohibited from taking child + pram into the embassy.&lt;br /&gt;The pram will probably need to go through the xray though.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;What about my mobile phone, key fob etc....?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The website says these aren't allowed.  It's lying.  When you go through security they'll be taken off you and stored till you return.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;The website says that the visa photos need to be 2 inches square.  &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Normal UK passport sized photos seem to be acceptable.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Are food and drink allowed in?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;They say that you can't take liquids in, and I've no reason to doubt this.  However, there's a cafe inside that serves tea, coffee and pop.  Beware that it closes at 3ish though.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Can I take a bag in?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;The website says that you can't take a large rucksack in....I think they mean one of those 70 litre jobs.  I took in a reasonably large briefcase.  From the setup I expect that they'll tolerate anything you could take as hand luggage on a plane, though their patience might be more limited on busy days.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-7899376672447872208?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7899376672447872208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7899376672447872208'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/08/j1-visas-at-london-us-embassy.html' title='J1 visas at the London US embassy'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-751941635952364578</id><published>2007-08-02T14:12:00.000+01:00</published><updated>2007-08-02T16:47:21.297+01:00</updated><title type='text'>Faster pussycat</title><content type='html'>&lt;span style="font-size:130%;"&gt;"...but Java's so slow...."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;1) Java's bytecodes are interpreted by a virtual machine, therefore Java can never be as fast as a statically compiled language such as C&lt;br /&gt;2) Java's VM can perform dynamic optimization in ways not available to a statically optimizing C compiler, therefore Java can outperform C.&lt;br /&gt;&lt;br /&gt;The web is full of opinions on which is the fastest language and why.  There are plenty of benchmarks proving once and for all one view or the other.  However, you never really believe it unless you've tried it yourself. So here, for the first time ever is conclusive proof that really there ain't much in it one way or another.&lt;br /&gt;&lt;br /&gt;My completely unscientific test case: an algorithm to sum the first N  Fibonacci numbers.  The numbers themselves are calculated by a deliberately naive recursive algorithm - don't try this at home.   The running time grows exponentially with N.  However, it is easy to get a good range of running times.  The algorithm can be coded almost identically, line for line, in my 3 target languages of Java, C, Python.&lt;br /&gt;&lt;br /&gt;Here are the results:&lt;br /&gt;&lt;table border='1'&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt;N&lt;/th&gt;&lt;th&gt;Java (client vm)&lt;/th&gt;&lt;th&gt;Java (server vm)&lt;/th&gt;&lt;th&gt;C (gcc standard options)&lt;/th&gt;&lt;th&gt;C (gcc -O3)&lt;/th&gt;&lt;th&gt;Python&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;30&lt;/td&gt;&lt;td&gt;0.3&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1.4&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;35&lt;/td&gt;&lt;td&gt;0.5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0.4&lt;/td&gt;&lt;td&gt;0.2&lt;/td&gt;&lt;td&gt;15&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;40&lt;/td&gt;&lt;td&gt;2.5&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;4.8&lt;/td&gt;&lt;td&gt;1.8&lt;/td&gt;&lt;td&gt;171&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;45*&lt;/td&gt;&lt;td&gt;24.5&lt;/td&gt;&lt;td&gt;20.6&lt;/td&gt;&lt;td&gt;52&lt;/td&gt;&lt;td&gt;19.8&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;272&lt;/td&gt;&lt;td&gt;232&lt;/td&gt;&lt;td&gt;600&lt;/td&gt;&lt;td&gt;227&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;        &lt;br /&gt;&lt;br /&gt;*For N&gt;=45 the result overflows when using 32 bit integers.  Here's some results using Java longs and C long longs (64 bits):&lt;br /&gt;&lt;br /&gt;&lt;table border='1'&gt;&lt;br /&gt;&lt;tr&gt;&lt;th&gt;N&lt;/th&gt;&lt;th&gt;Java (server vm)&lt;/th&gt;&lt;th&gt;C (gcc -O3)&lt;/th&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;45&lt;/td&gt;&lt;td&gt;21&lt;/td&gt;&lt;td&gt;23.5&lt;/td&gt;&lt;/tr&gt;   &lt;br /&gt;&lt;tr&gt;&lt;td&gt;50&lt;/td&gt;&lt;td&gt;221&lt;/td&gt;&lt;td&gt;265&lt;/td&gt;&lt;/tr&gt;   &lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;No doubt you can find algorithms (and better C compilers) that change the results.  But change them enough for you to care? &lt;br /&gt;&lt;br /&gt;&lt;hr/&gt;&lt;br /&gt;Details:&lt;br /&gt;The tests were run on Ubuntu Linux running in a Parallels VM on a 2007 model Macbook Pro with a couple of gig of RAM.&lt;br /&gt;The Java code was compiled and run with Java 6,  the C code with gcc, and the Python code run with Python 2.4.3&lt;br /&gt;Times are the sum of user and system time in secs, recorded to the nearest 0.1 of a sec, and the tests were run a handful of times until I reckoned the time looked about right.  Times include any VM startup times.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-751941635952364578?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/751941635952364578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/751941635952364578'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/08/faster-pussycat.html' title='Faster pussycat'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-3281280607331084190</id><published>2007-06-07T17:14:00.000+01:00</published><updated>2007-06-07T17:42:36.526+01:00</updated><title type='text'>Boxplots for beginners</title><content type='html'>How to create Boxplots in R&lt;br /&gt;Refs:&lt;br /&gt;http://en.wikipedia.org/wiki/Boxplot&lt;br /&gt;http://www.r-project.org/&lt;br /&gt;&lt;br /&gt;Suppose you have data such as:&lt;br /&gt;number_of_threads    thread    time&lt;br /&gt;1        1    10&lt;br /&gt;2        1    20.5&lt;br /&gt;2        2    19.5&lt;br /&gt;3        1    30&lt;br /&gt;3        2    25&lt;br /&gt;3        3    35&lt;br /&gt;&lt;br /&gt;This table represents made up data describing some system testing, where the system is exercised with 1,2,3... concurrent users.  You want to produce a boxplot showing the timings for each number of concurrent users.  Here's the magic incantation in R:&lt;br /&gt;Assuming the above file is saved to data.txt&lt;br /&gt;1) Use R's Misc menu to change to the correct working directory&lt;br /&gt;2) Load the data into a dataframe with&lt;br /&gt;myresults = read.table("data.txt", header=TRUE)&lt;br /&gt;3) Generate the boxplot with&lt;br /&gt;boxplot( time ~ number_of_threads, myresults)&lt;br /&gt;&lt;br /&gt;To jazz it up with some axis labels:&lt;br /&gt;&lt;br /&gt;boxplot( time ~ number_of_threads, myresults, xlab="Concurrent users", ylab="time")&lt;br /&gt;&lt;br /&gt;Adding several boxplots on the same axis:&lt;br /&gt;boxplot( time ~ number_of_threads, myresults, add=TRUE)&lt;br /&gt;*Warning* - if you don't see your new boxplot, then it's because for some nutty reason the plot doesn't automatically rescale, and you need to set the scale explicitly with ylim=c(0,40) or similar.&lt;br /&gt;Making the boxes a particular colour:&lt;br /&gt;boxplot( time ~ number_of_threads, myresults, col="yellow")&lt;br /&gt;and adding a legend:&lt;br /&gt;legend(2,9m c("plot1","plot2"), fill=c("red","yellow"))&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-3281280607331084190?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/3281280607331084190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/3281280607331084190'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/06/boxplots-for-beginners.html' title='Boxplots for beginners'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-5934032563530392885</id><published>2007-06-06T19:17:00.001+01:00</published><updated>2007-06-06T19:17:51.783+01:00</updated><title type='text'></title><content type='html'>http://www.flickr.com/photos/josiefraser/532394229/in/set-72157600317386945/&lt;br /&gt;&lt;br /&gt;Our Emerge slide.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-5934032563530392885?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/5934032563530392885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/5934032563530392885'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/06/httpwww.html' title=''/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-8407773694780877346</id><published>2007-04-24T16:36:00.000+01:00</published><updated>2007-04-24T16:37:25.573+01:00</updated><title type='text'>The Web 2.0 Expo, San Francisco</title><content type='html'>Audio files from some of the talks:&lt;br /&gt;&lt;table bg width="300" style="border-top:solid #BFBFBF 1px; border-left:solid #BFBFBF 1px; border-right:solid #BFBFBF 1px; border-bottom:solid #BFBFBF 1px;color:#FFFFFF;"&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:85%;color:#FF9933;"&gt;&lt;strong&gt;Check out my Public Files on myDataBus!&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/ArchitectureforHumanityWeb2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;ArchitectureforHumanityWeb2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/ArchitectureforHumanityWeb2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/ArchitectureforHumanityWeb2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;ArchitectureforHumanityWeb2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/ArchitectureforHumanityWeb2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BadgesandWidgetsWeb2.0.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;BadgesandWidgetsWeb2.0.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BadgesandWidgetsWeb2.0.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BuildingSMSWeb2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;BuildingSMSWeb2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BuildingSMSWeb2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BuilttoLast.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;BuilttoLast.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/BuilttoLast.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/GoogleWeb2.0.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;GoogleWeb2.0.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/GoogleWeb2.0.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/JeffBezosWeb2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;JeffBezosWeb2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/JeffBezosWeb2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/JeffBezosWeb2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;JeffBezosWeb2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/JeffBezosWeb2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LaunchPad1Web2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;LaunchPad1Web2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LaunchPad1Web2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LaunchPad2Web2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;LaunchPad2Web2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LaunchPad2Web2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LocationtoanappWeb2.0.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;LocationtoanappWeb2.0.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/LocationtoanappWeb2.0.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/MashupsincompleteWeb2.0.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;MashupsincompleteWeb2.0.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/MashupsincompleteWeb2.0.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/Mobile2.0Web2.0Expo.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;Mobile2.0Web2.0Expo.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/Mobile2.0Web2.0Expo.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/StateoftheWeb2.0.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;StateoftheWeb2.0.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/StateoftheWeb2.0.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="275"&gt;&lt;img src="http://www.mydatabus.com/images/mime/icon_generic_doc.gif" border="0" alt="File" width="16" height="16" /&gt; &lt;span&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/Syphilis.mp3"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:78%;color:#003300;"&gt;Syphilis.mp3&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;td width="25"&gt;&lt;a href="http://www.mydatabus.com/5z/ubgznvy.pbz/johndavid_taylor/Syphilis.mp3"&gt;&lt;img src="http://www.mydatabus.com/images/icon_download.gif" width="16" height="16" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="2"&gt;&lt;span style="font-family:Arial, Helvetica, sans-serif;font-size:-2;color:#FF9900;"&gt;Provided to you by &lt;/span&gt;&lt;a href="http://www.mydatabus.com"&gt;&lt;img src="http://www.mydatabus.com/images/logo_databus_small.GIF" width="80" height="17" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-8407773694780877346?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8407773694780877346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8407773694780877346'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/04/web-20-expo-san-francisco.html' title='The Web 2.0 Expo, San Francisco'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-1249363287830986023</id><published>2007-02-06T16:42:00.001Z</published><updated>2007-07-03T13:50:26.081+01:00</updated><title type='text'>Converting jpgs to ps or eps</title><content type='html'>A bit of googling finds a number of commercial and shareware packages  that will do this task, but you can also do:&lt;p&gt;jpegtopnm MyDog.jpg | pnmtops &amp;gt; MyDog.ps&lt;/p&gt;&lt;p&gt;on a unix machine.&lt;/p&gt;&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Portable_Pixmap_file_format"&gt;http://en.wikipedia.org/wiki/Portable_Pixmap_file_format&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-1249363287830986023?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1249363287830986023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1249363287830986023'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/02/converting-jpgs-to-ps-or-eps.html' title='Converting jpgs to ps or eps'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-1448914788200026917</id><published>2007-01-31T13:03:00.000Z</published><updated>2007-01-31T13:43:58.673Z</updated><title type='text'>Moving mail to gmail</title><content type='html'>I've decided to move completely over to gmail so that I don't have to configure my mail clients to deal with umpteen different accounts.  I also want to store all my legacy mail so it's all searchable in the one place.  How do I upload my Thunderbird mail files to gmail? &lt;br /&gt;This: http://www.marklyon.org/gmail/download.htm seems to do the job.  It's a small python app that goes through your Thunderbird mbox files and forwards them all.  It's slow, and it's going to mess up your emails' timestamps, but it does the job.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-1448914788200026917?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1448914788200026917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1448914788200026917'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/moving-mail-to-gmail.html' title='Moving mail to gmail'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-5297191107462660620</id><published>2007-01-19T10:45:00.001Z</published><updated>2007-01-19T10:45:35.151Z</updated><title type='text'>Weekly summary</title><content type='html'>* Helping Isa debug PLASTIC functionality in VOSpec&lt;p&gt;&lt;a href="http://esavo02.esac.esa.int:8080/vospec/"&gt;http://esavo02.esac.esa.int:8080/vospec/&lt;/a&gt;&lt;br&gt;* Prep for MSc&lt;br&gt;* Installed latest STILTS&lt;br&gt;* Looking into an example for VisIVO paper&lt;br&gt;* New Plastic group in Apps WG&lt;br&gt;* Uni of Queensland Connection&lt;p&gt;&lt;br&gt;-- &lt;br&gt;------------------------------------------------------------------------&lt;br&gt;AstroGrid/VOTech&lt;br&gt;&amp;amp;&lt;br&gt;WFAU, Institute for Astronomy, Edinburgh&lt;br&gt;Skype:johndavidtaylor &amp;lt;skype:johndavidtaylor?chat&amp;gt;&lt;p&gt;------------------------------------------------------------------------&lt;br&gt;*Gratuitous advertising:*&lt;br&gt;Plastic - &lt;a href="http://plastic.sourceforge.net"&gt;http://plastic.sourceforge.net&lt;/a&gt; | AstroRuntime -&lt;p&gt;&lt;a href="http://www2.astrogrid.org/desktop"&gt;http://www2.astrogrid.org/desktop&lt;/a&gt;&lt;br&gt;AstroGrid - &lt;a href="http://www.astrogrid.org"&gt;http://www.astrogrid.org&lt;/a&gt; | WFAU -&lt;p&gt;&lt;a href="http://www.roe.ac.uk/ifa/wfau/"&gt;http://www.roe.ac.uk/ifa/wfau/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-5297191107462660620?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/5297191107462660620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/5297191107462660620'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/weekly-summary.html' title='Weekly summary'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-7351199692819744186</id><published>2007-01-11T15:13:00.001Z</published><updated>2007-01-11T15:13:52.408Z</updated><title type='text'>How can a bash or shell script find its own directory?</title><content type='html'>It&amp;#39;s often desirable to write a small bash script to launch an &lt;br&gt;application.  However, you want the application to be portable, so you &lt;br&gt;don&amp;#39;t want to hard-wire absolute file locations into the script.  &lt;br&gt;Unfortunately, this means that if you execute the script from somewhere &lt;br&gt;other than the directory which holds the script, then it won&amp;#39;t locate &lt;br&gt;the files.  A bit of googling suggests that the general problem of &lt;br&gt;making a script aware of the directory in which it resides is quite &lt;br&gt;hard.  However, the following works for me:&lt;br&gt;cwd=`dirname $0`&lt;br&gt;old=$pwd&lt;br&gt;cd $cwd&lt;br&gt;#launch your application here, for example&lt;br&gt;nohup python main.py &amp;amp;&lt;br&gt;#where main.py is in the same directory as the script&lt;br&gt;cd $old&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-7351199692819744186?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7351199692819744186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7351199692819744186'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/how-can-bash-or-shell-script-find-its.html' title='How can a bash or shell script find its own directory?'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-8236229372327374196</id><published>2007-01-11T13:30:00.001Z</published><updated>2007-01-11T13:30:31.247Z</updated><title type='text'>Subclipse, Eclipse plugin does not work on Ubuntu</title><content type='html'>You&amp;#39;ve installed Eclipse, the subclipse subversion plugin, set up your &lt;br&gt;repository locations and are ready to go.  Left click on your favourite &lt;br&gt;subversion repository to see the contents.  Uh-oh:&lt;br&gt;&amp;#39;&lt;br&gt;Folder &amp;quot; does not exist remotely.&lt;br&gt;&amp;#39;&lt;p&gt;This is because the JVM that ships with Ubuntu (GNU gij) doesn&amp;#39;t even &lt;br&gt;remotely work.&lt;br&gt;OK that&amp;#39;s very unfair.  It does seem to screw up Eclipse and Subclipse &lt;br&gt;though.&lt;br&gt;To fix this problem, you need to download the latest Sun JDK install it &lt;br&gt;somewhere convenient, and (importantly) make sure that this JDK&amp;#39;s bin &lt;br&gt;folder is on the front of your path.  If you&amp;#39;ve got it set correctly &lt;br&gt;then executing java -version at the command line should give you the &lt;br&gt;reassuring&lt;br&gt;&amp;quot;&lt;br&gt;java version &amp;quot;1.6.0&amp;quot;&lt;br&gt;....&lt;br&gt;java HotSpot(TM) Client VM.....&lt;p&gt;&amp;quot;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-8236229372327374196?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8236229372327374196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/8236229372327374196'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/subclipse-eclipse-plugin-does-not-work.html' title='Subclipse, Eclipse plugin does not work on Ubuntu'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-7081160613409192426</id><published>2007-01-04T00:41:00.001Z</published><updated>2007-01-10T10:10:02.283Z</updated><title type='text'>"Multiproject" site generation in Maven 2.0.4</title><content type='html'>Yet again Maven has shat upon me from on high by randomly updating a&lt;br /&gt;plugin and changing its behaviour.  Previously, if you had a project&lt;br /&gt;configured as a "multiproject" build of modules, the way to include a&lt;br /&gt;link in your parent project's docs to the child documentation was to add&lt;br /&gt;${modules} into the parent's site.xml.  No longer!  Try this now, and&lt;br /&gt;your mvn will spit out some garbage about your site.xml being malformed&lt;br /&gt;xml, when it plainly isn't.  No, now the secret incantation is to put a&lt;br /&gt;menu item in thus: &amp;lt;menu ref="modules"/&amp;gt;.  The same goes for ${reports}&lt;br /&gt;and ${parent} presumably.  The new syntax is certainly nicer, if you&lt;br /&gt;don't mind the extra wear and tear on your fingers, but I wish they&lt;br /&gt;had just deprecated the old syntax, rather than secretly removing it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-7081160613409192426?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7081160613409192426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/7081160613409192426'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/multiproject-site-generation-in-maven.html' title='&quot;Multiproject&quot; site generation in Maven 2.0.4'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-1855619332512751576</id><published>2007-01-04T00:37:00.001Z</published><updated>2007-01-04T00:40:07.963Z</updated><title type='text'>Problems with Image loading in Java</title><content type='html'>&lt;p&gt;&lt;br /&gt;I'm trying to load images in Java for use in icons with the following:&lt;br /&gt;new ImageIconr(url)&lt;/p&gt;&lt;p&gt;Mostly, this works fine.  But just once in a while it fails with:&lt;/p&gt;&lt;p&gt;Uncaught error fetching image:&lt;br /&gt;java.lang.SecurityException&lt;br /&gt;       at java.lang.SecurityManager.checkPermission(SecurityManager.java:562)&lt;br /&gt;       at java.lang.SecurityManager.checkConnect(SecurityManager.java:1078)&lt;br /&gt;       at sun.awt.image.URLImageSource.checkSecurity(URLImageSource.java:81)&lt;br /&gt;       at sun.awt.image.ImageRepresentation.imageComplete(ImageRepresentation.j&lt;br /&gt;ava:597)&lt;br /&gt;       at sun.awt.image.InputStreamImageSource.errorConsumer(InputStreamImageSo&lt;br /&gt;urce.java:131)&lt;br /&gt;       at sun.awt.image.InputStreamImageSource.setDecoder(InputStreamImageSourc&lt;br /&gt;e.java:331)&lt;br /&gt;       at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.j&lt;br /&gt;ava:252)&lt;br /&gt;       at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)&lt;br /&gt;       at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)&lt;/p&gt;&lt;p&gt;What's worse, surrounding the code with a try-catch block doesn't save you - the application simply locks up.  Note that this&lt;br /&gt;only happens when running under a SecurityManager such as under WebStart.  It seems there's a bug in the JDK&lt;br /&gt;&lt;a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4881229"&gt;http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4881229&lt;/a&gt;&lt;br /&gt;which means that if the URL gets redirected with an http 302, then an internal thread in the JDK will fail.  This&lt;br /&gt;is pretty hopeless - can't fix it, can't trap it.&lt;/p&gt;&lt;p&gt;The workaround is to use a different part of the API.  Instead of constructing an Icon from a URL, you first get an Image using&lt;br /&gt;Image im = ImageIO.read(url);&lt;br /&gt;then construct an icon from that:&lt;br /&gt;new Icon(im);&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-1855619332512751576?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1855619332512751576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/1855619332512751576'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2007/01/problems-with-image-loading-in-java.html' title='Problems with Image loading in Java'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116605215028180659</id><published>2006-12-13T23:22:00.000Z</published><updated>2006-12-13T23:22:30.853Z</updated><title type='text'>Subversion on sourceforge refuses to make copies</title><content type='html'>&lt;p class="mobile-post"&gt;If you find that SourceForge's subversion system is buggered (again) and &lt;br /&gt;refuses to let you make copies, it could be because you hadn't noticed &lt;br /&gt;their not-very-well-advertised switch of access URL to:&lt;/p&gt;&lt;p class="mobile-post"&gt;"On November 31, 2006 the access method for Subversion changed. This &lt;br /&gt;document reflects those changes. The old method had numerous problems, &lt;br /&gt;including spurious 50x error messages and other issues that kept it from &lt;br /&gt;functioning fully. This newly documented access method solves many, if &lt;br /&gt;not all of the issues with the old mechanism.&lt;/p&gt;&lt;p class="mobile-post"&gt;Users of the old method &lt;br /&gt;(https://svn.sourceforge.net/svnroot/PROJECTNAME) should switch to the &lt;br /&gt;new access method &lt;br /&gt;(https://PROJECTNAME.svn.sourceforge.net/svnroot/PROJECTNAME) using &lt;br /&gt;these steps:&lt;/p&gt;&lt;p class="mobile-post"&gt;   1. Make a copy of your local working copy.&lt;br /&gt;   2. Run 'svn info' at the root of the repository content, it should&lt;br /&gt;      display a line that appears similar to: URL:&lt;br /&gt;      https://svn.sourceforge.net/svnroot/PROJECTNAME/trunk&lt;br /&gt;   3. Run the following command at the root of the working copy: svn&lt;br /&gt;      switch --relocate&lt;br /&gt;      https://svn.sourceforge.net/svnroot/PROJECTNAME/trunk&lt;br /&gt;      https://PROJECTNAME.svn.sourceforge.net/svnroot/PROJECTNAME/trunk&lt;/p&gt;&lt;p class="mobile-post"&gt;SVN is a complex tool."&lt;/p&gt;&lt;p class="mobile-post"&gt;Right, and it doesn't get any easier when SourceForge keep arseing about &lt;br /&gt;with it.&lt;/p&gt;&lt;p class="mobile-post"&gt;http://sourceforge.net/docman/display_doc.php?docid=31070&amp;amp;group_id=1#notice&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116605215028180659?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116605215028180659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116605215028180659'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/12/subversion-on-sourceforge-refuses-to.html' title='Subversion on sourceforge refuses to make copies'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116584421868524987</id><published>2006-12-11T13:36:00.001Z</published><updated>2006-12-11T13:36:58.693Z</updated><title type='text'>AstroGrid registry bug with namespaces</title><content type='html'>&lt;p class="mobile-post"&gt;We've recently upgrade our WFAU publishing registry to version Version &lt;br /&gt;2006.3.03r.  This has introduced a bug where previously registered &lt;br /&gt;entries cannot be edited.  When you submit the edits you get a:&lt;/p&gt;&lt;p class="mobile-post"&gt;env:ServerServer Error: No namespace defined for prefix vororg.exist.xmldb.LocalXPathQueryService.compile(LocalXPathQueryService.java:213) org.exist.xmldb.LocalXPathQueryService.doQuery(LocalXPathQueryService.java:280) org.exist.xmldb.LocalXPathQueryService.query(LocalXPathQueryService.java:112) org.exist.xmldb.LocalXPathQueryService.query(LocalXPathQueryService.java:103) org.astrogrid.xmldb.client.XMLDBServiceImpl.queryXQuery(XMLDBServiceImpl.java:235) org.astrogrid.registry.server.xmldb.XMLDBRegistry.query(XMLDBRegistry.java:71) org.astrogrid.registry.server.admin.AuthorityListManager.getManagedAuthorities(AuthorityListManager.java:118) org.astrogrid.registry.server.admin.AuthorityListManager.populateManagedMaps(AuthorityListManager.java:106) org.astrogrid.registry.server.admin.RegistryAdminService.updateResource(RegistryAdminService.java:282) org.apache.jsp.admin.addResourceEntry_jsp._jspService(addResourceEntry_jsp.java:488) org.apache.jasper.runtime.HttpJspBase.service(H&lt;br /&gt; ttpJspBase.java:94) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapp&lt;br /&gt;Valve.java:214) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) org.apache.catal&lt;br /&gt; ina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:540) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) org.apache.c&lt;br /&gt; atalina.core.ContainerBase.invoke(ContainerBase.java:929) org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) java.lang.Thread.run(Thread.java:595) &lt;/p&gt;&lt;p class="mobile-post"&gt;The fix is to copy the &lt;br /&gt;xmlns:vr="http://www.ivoa.net/xml/VOResource/v0.10"  from the &lt;br /&gt;vor:Resource into the root vor:VOResources element.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116584421868524987?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116584421868524987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116584421868524987'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/12/astrogrid-registry-bug-with-namespaces.html' title='AstroGrid registry bug with namespaces'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116584417181041308</id><published>2006-12-11T13:36:00.000Z</published><updated>2006-12-11T13:36:11.830Z</updated><title type='text'>VOMon - the VO service monitor has been released:</title><content type='html'>&lt;p class="mobile-post"&gt;VOMon - the VO service monitor has been released:&lt;/p&gt;&lt;p class="mobile-post"&gt;http://vomon.sourceforge.net&lt;/p&gt;&lt;p class="mobile-post"&gt;VOMon is a mashup of the Astro Runtime &lt;br /&gt;&amp;lt;http://www2.astrogrid.org/desktop/astro-runtime&amp;gt; and MARS &lt;br /&gt;&amp;lt;http://leapfrog-mars.sourceforge.net/&amp;gt;, glued together with Python.   &lt;br /&gt;VOMon uses the Astro Runtime to query a Registry to obtain all the &lt;br /&gt;services that match an admin-specified query.  By default it queries the &lt;br /&gt;central AstroGrid registry, but can be configured to query any &lt;br /&gt;IVOA-compliant registry.  This list of services is updated every hour or &lt;br /&gt;so, so that VOMon will always have a reasonably up to date list of &lt;br /&gt;services to monitor.  The services are passed to MARS which does the &lt;br /&gt;actual monitoring.   Currently this monitoring consists of simply &lt;br /&gt;pinging the accessURL and checking the response.  Some services such as &lt;br /&gt;Cone and SIAP, have default parameters appended to the accessURL to &lt;br /&gt;ensure they do not fail.  Once the VOSI interface is widely supported, &lt;br /&gt;VOMon will be upgraded to use that.  VOMon can either output a report to &lt;br /&gt;be hosted on a web server, or present the user with a GUI interface.&lt;/p&gt;&lt;p class="mobile-post"&gt;An instance has been deployed at:&lt;br /&gt;http://thor.roe.ac.uk/vomon/status.xml&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116584417181041308?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116584417181041308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116584417181041308'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/12/vomon-vo-service-monitor-has-been.html' title='VOMon - the VO service monitor has been released:'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116533370706785103</id><published>2006-12-05T15:48:00.000Z</published><updated>2006-12-05T15:48:27.183Z</updated><title type='text'>Weekly Summary</title><content type='html'>&lt;p class="mobile-post"&gt;&lt;br /&gt;    * Prepared proposal for JISC CoP participation&lt;br /&gt;    * Plastic Website maintenance http://plastic.sourceforge.net and&lt;br /&gt;      general email business&lt;br /&gt;    * Finally, published IVOA Plastic Note: &lt;br /&gt;      http://ivoa.net/Documents/latest/PlasticDesktopInterop.html&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116533370706785103?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116533370706785103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116533370706785103'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/12/weekly-summary.html' title='Weekly Summary'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116359342579491767</id><published>2006-11-15T12:23:00.000Z</published><updated>2006-11-15T12:23:45.883Z</updated><title type='text'>Weekly update 15/11/06</title><content type='html'>&lt;p class="mobile-post"&gt;* Submitted ADASS paper&lt;br /&gt;* Currently moving the fastem algorithm off hempriggs.  In the process &lt;br /&gt;I'm upgrading to a new version supplied by CMU that doesn't require user &lt;br /&gt;intervention when things go wrong, thus making the web service more &lt;br /&gt;reliable.  Unfortunately, this new version has a slightly different &lt;br /&gt;interface, so it's not a straight drop in replacement.&lt;br /&gt;* Given access to all CMU's algorithms&lt;br /&gt;* Tony has asked me to lead a bid to join the U&amp;amp;I CofP.  Email &lt;br /&gt;attached.  Deadline is next week, shouldn't take too much work.  &lt;br /&gt;Co-conspirators are Elizabeth A and Norman.&lt;br /&gt;* Upgraded the Workbench Plastic library and made some fixes&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116359342579491767?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116359342579491767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116359342579491767'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/weekly-update-151106.html' title='Weekly update 15/11/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116307207120185517</id><published>2006-11-09T11:34:00.000Z</published><updated>2006-11-09T11:34:31.280Z</updated><title type='text'>Cygwin/X - logging into remote linux machines from Windows</title><content type='html'>&lt;p class="mobile-post"&gt;Logging into linux machines from Windows can be done in various ways, &lt;br /&gt;such as using ssh via PuTTY.  In alternative is to use Cygwin, which not &lt;br /&gt;only gives you a fairly complete Linux emulation on your windows box, &lt;br /&gt;but also makes it easy to use X-forwarding, and thus use remote &lt;br /&gt;GUI-based applications.&lt;/p&gt;&lt;p class="mobile-post"&gt;Step 1) Install Cygwin.  The installer will give you a choice of &lt;br /&gt;packages to install.  Make sure you install the x11 packages&lt;br /&gt;Step 2) Start the x server by running  [cygwin &lt;br /&gt;installation]\usr\X11R6\bin\startxwin.bat&lt;br /&gt;Step 3) From the resulting xterm window, log into the remote machine &lt;br /&gt;with ssh -X (remote machine name)&lt;br /&gt;Any remotely started GUI apps should now magically appear on your &lt;br /&gt;Windows box.&lt;/p&gt;&lt;p class="mobile-post"&gt;If you get an error of the form&lt;br /&gt;warning, error event received:&lt;br /&gt;X Error of failed request:  BadAtom (invalid Atom parameter)&lt;br /&gt;  Major opcode of failed request:  18 (X_ChangeProperty)&lt;br /&gt;  Atom id in failed request:  0x1b3&lt;br /&gt;  Serial number of failed request:  944&lt;br /&gt;  Current serial number in output stream:  946&lt;/p&gt;&lt;p class="mobile-post"&gt;when you try to start the GUI app, try using -Y instead of -X.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116307207120185517?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116307207120185517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116307207120185517'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/cygwinx-logging-into-remote-linux.html' title='Cygwin/X - logging into remote linux machines from Windows'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116300200266764829</id><published>2006-11-08T16:06:00.000Z</published><updated>2006-11-08T16:06:42.766Z</updated><title type='text'>Increasing the memory available to Eclipse.</title><content type='html'>&lt;p class="mobile-post"&gt;To increase the memory allocated to the JVM for Eclipse, edit the &lt;br /&gt;eclipse.ini file in your Eclipse directory to be something like:&lt;br /&gt;-vmargs -Xms40m -Xmx512m&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116300200266764829?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116300200266764829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116300200266764829'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/increasing-memory-available-to-eclipse.html' title='Increasing the memory available to Eclipse.'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116299486888637980</id><published>2006-11-08T14:07:00.000Z</published><updated>2006-11-08T14:07:49.460Z</updated><title type='text'>Weekly Summary</title><content type='html'>&lt;p class="mobile-post"&gt;AG@WFAU Operations&lt;br /&gt;=================&lt;br /&gt;* Helped test ukidss&lt;br /&gt;   * Suggested compression as a solution to the large metadoc file problem.&lt;br /&gt;* Moved test-registry&lt;br /&gt;* China-AGVO operational&lt;br /&gt;Datamining&lt;br /&gt;=======&lt;br /&gt;* Swotting up on datamining&lt;br /&gt;* Been in touch with Andrew Moore about fastem - applied for access to &lt;br /&gt;software&lt;/p&gt;&lt;p class="mobile-post"&gt;Plastic&lt;br /&gt;====&lt;br /&gt;* ADASS followup&lt;br /&gt;    * Been in touch with Ruby people&lt;br /&gt;    * TKH unavailable&lt;br /&gt;* Contacted Jason about site spruce up but heard nothing yet&lt;/p&gt;&lt;p class="mobile-post"&gt;Other&lt;br /&gt;=====&lt;br /&gt;* Preparing Eclipse lecture&lt;br /&gt;* Setting up my Eclipse to do C++&lt;/p&gt;&lt;p class="mobile-post"&gt;AOB&lt;br /&gt;deadline for adass manuscripts is Monday&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116299486888637980?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116299486888637980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116299486888637980'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/weekly-summary.html' title='Weekly Summary'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116290695904320473</id><published>2006-11-07T13:42:00.000Z</published><updated>2006-11-07T13:42:39.210Z</updated><title type='text'>Setting up C++ in Eclipse on Windows</title><content type='html'>&lt;p class="mobile-post"&gt;Although Eclipse works most naturally as a Java IDE, it doesn't do too &lt;br /&gt;badly for other languages, and has the advantage that you don't need to &lt;br /&gt;learn multiple IDEs and can keep all your code together in a single &lt;br /&gt;environment.&lt;br /&gt;Steps in setting up C++ in Eclipse, on Windows:&lt;br /&gt;* If it's not already installed, get the CDT plugin - this is available &lt;br /&gt;as part of the standard Callisto bundle from the Eclipse website.  &lt;br /&gt;(help/software updates/find and install/add new remote site &lt;br /&gt;http://download.eclipse.org/tools/cdt/releases/callisto)&lt;br /&gt;* The CDT doesn't come with its own compilers etc - you'll need to &lt;br /&gt;download them separately.  One option is to install Cygwin, making sure &lt;br /&gt;that you're ticked all the boxes to get make and gcc.  Important: don't &lt;br /&gt;forget to add cygwin/bin to your windows path.  The problem is, that any &lt;br /&gt;executables you then make will need the cygwin1.dll to be bundled with &lt;br /&gt;them, which is hardly ideal.&lt;br /&gt;* An alternative, mentioned in &lt;br /&gt;http://wiki.fredlackey.com/pmwiki.php?n=HelpfulInfo.DevelopmentEclipseCppCofnig &lt;br /&gt;and others is to install MinGW from &lt;br /&gt;http://prdownloads.sourceforge.net/mingw/MinGW-5.0.3.exe?download which &lt;br /&gt;will produce exes with no dependencies.  Again, make sure it's on your path.&lt;br /&gt;* Managed vs Standard projects.  If you create a managed project then &lt;br /&gt;Eclipse will generate a simple makefile for you, otherwise you are &lt;br /&gt;expected to create a makefile yourself, and will spend many happy hours &lt;br /&gt;hitting the "build" button and wondering why nothing happens.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116290695904320473?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116290695904320473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116290695904320473'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/setting-up-c-in-eclipse-on-windows.html' title='Setting up C++ in Eclipse on Windows'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116282085647242217</id><published>2006-11-06T13:47:00.000Z</published><updated>2006-11-06T13:47:36.550Z</updated><title type='text'>xml-rpc from C++ on Windows pt I</title><content type='html'>&lt;p class="mobile-post"&gt;As part of the Plastic http://plastic.sourceforge.net project I'm &lt;br /&gt;looking at making xml-rpc calls from different languages.  Current focus &lt;br /&gt;is on C/C++ since it opens up the possibility of using SWIG to get &lt;br /&gt;Plastic access from a large range of other languages "for free".&lt;/p&gt;&lt;p class="mobile-post"&gt;My setup:&lt;br /&gt;OS: Windows XP&lt;br /&gt;IDE: Eclipse, with the CDT plugin&lt;br /&gt;Tools: g++ and make, as part of the MinGW and MSYS systems&lt;/p&gt;&lt;p class="mobile-post"&gt;The most promising xml-rpc library is this one: &lt;br /&gt;http://xmlrpcpp.sourceforge.net/links.html.  Promising because a) I've &lt;br /&gt;got it working before b) It has no dependencies c) It does client and &lt;br /&gt;server (necessary for a fully-fledged plastic application).&lt;/p&gt;&lt;p class="mobile-post"&gt;Steps&lt;br /&gt;1) Download and install the xml-rpc library files into a suitable folder. &lt;br /&gt;2) Add this folder to the list of source folders in project &lt;br /&gt;properties/c++ build/Tool settings/compiler/directories&lt;br /&gt;3) Add the _WINDOWS flag to the compiler/preprocessor&lt;br /&gt;If you hit build now, you'll get linker errors as listed below.   The &lt;br /&gt;problem is that although you get the winsock header files included on &lt;br /&gt;the path automatically, you need to explicitly specify the corresponding &lt;br /&gt;library to the linker.  The library in question is probably called &lt;br /&gt;something like: libws2_32.a and can be found in the MinGW/lib folder. &lt;br /&gt;4) project properties/c++ build/Tool settings/linker/libraries/ add &lt;br /&gt;library ..... and here's the real doozy....you add ws2_32 (!!!not!!! &lt;br /&gt;libws2_32.a .... the linker prepends the lib and adds the .a for you).&lt;/p&gt;&lt;p class="mobile-post"&gt;Hit build, and you're away.  All the above assumes that you have already &lt;br /&gt;written your xml-rpc client of course....&lt;/p&gt;&lt;p class="mobile-post"&gt;=================================================================&lt;br /&gt;The linker errors (for google's benefit):&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:45: &lt;br /&gt;undefined reference to `WSAStartup@8'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x5d): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket6socketEv':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:80: &lt;br /&gt;undefined reference to `socket@12'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x8e): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket5closeEi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:89: &lt;br /&gt;undefined reference to `closesocket@4'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0xbc): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket14setNonBlockingEi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:103: &lt;br /&gt;undefined reference to `ioctlsocket@12'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x10b): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket12setReuseAddrEi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:115: &lt;br /&gt;undefined reference to `setsockopt@20'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x157): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket4bindEii':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:126: &lt;br /&gt;undefined reference to `htonl@4'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x16b):E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:127: &lt;br /&gt;undefined reference to `htons@4'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x18c):E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:128: &lt;br /&gt;undefined reference to `bind@12'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x1bc): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket6listenEii':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:136: &lt;br /&gt;undefined reference to `listen@8'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x1fa): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket6acceptEi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:151: &lt;br /&gt;undefined reference to `accept@12'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x23a): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket7connectEiRSsi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:164: &lt;br /&gt;undefined reference to `gethostbyname@4'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x290):E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:169: &lt;br /&gt;undefined reference to `htons@4'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x2b1):E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:173: &lt;br /&gt;undefined reference to `connect@12'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x383): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket6nbReadEiRSsPb':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:191: &lt;br /&gt;undefined reference to `recv@16'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x49e): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket7nbWriteEiRSsPi':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:223: &lt;br /&gt;undefined reference to `send@16'&lt;br /&gt;./xmlrpc/XmlRpcSocket.o(.text+0x517): In function &lt;br /&gt;`ZN6XmlRpc12XmlRpcSocket8getErrorEv':&lt;br /&gt;E:/jdt/data/experiments/PlasticListener2/Debug/../xmlrpc/XmlRpcSocket.cpp:248: &lt;br /&gt;undefined reference to `WSAGetLastError@0'&lt;/p&gt;&lt;p class="mobile-post"&gt;-- &lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;AstroGrid/VOTech&lt;br /&gt;&amp;amp;&lt;br /&gt;WFAU, Institute for Astronomy, Edinburgh&lt;br /&gt;Skype:johndavidtaylor &amp;lt;skype:johndavidtaylor?chat&amp;gt;&lt;/p&gt;&lt;p class="mobile-post"&gt;------------------------------------------------------------------------&lt;br /&gt;*Gratuitous advertising:*&lt;br /&gt;Plastic - http://plastic.sourceforge.net | AstroRuntime - &lt;br /&gt;http://www2.astrogrid.org/desktop&lt;br /&gt;AstroGrid - http://www.astrogrid.org | WFAU - &lt;br /&gt;http://www.roe.ac.uk/ifa/wfau/&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116282085647242217?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116282085647242217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116282085647242217'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/xml-rpc-from-c-on-windows-pt-i.html' title='xml-rpc from C++ on Windows pt I'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116238973815560416</id><published>2006-11-01T13:52:00.000Z</published><updated>2006-11-01T15:34:59.863Z</updated><title type='text'>Weekly Summary 1/11/06</title><content type='html'>&lt;ul&gt;&lt;li&gt;   Debate about coverage in registry and possible solutions&lt;/li&gt;&lt;li&gt;Visit to Cambridge to cover Taverna&lt;/li&gt;&lt;ul&gt;&lt;li&gt;      Link to Guy's summary&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;      Side debate on merits of SourceForge over managing our own code&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;   Discovered that with the exception of 2MASS, our cone searches aren't showing in AstroScope - should do soon following redeploy&lt;br /&gt;&lt;/li&gt;&lt;li&gt;   Discovered many missing services from AstroGrid's registry...Kevin fixing....&lt;br /&gt;&lt;/li&gt;&lt;li&gt;   Swotting up on Data Mining&lt;/li&gt;&lt;li&gt;      Downloaded &lt;a href="https://portals.rdg.ac.uk/votb/downloads.html"&gt;VOTechBroker&lt;/a&gt;&lt;/li&gt;&lt;li&gt;   Following up ADASS&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116238973815560416?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116238973815560416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116238973815560416'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/11/weekly-summary-11106.html' title='Weekly Summary 1/11/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116229244140237084</id><published>2006-10-31T11:00:00.000Z</published><updated>2006-10-31T11:00:41.463Z</updated><title type='text'>Weasl - Wfau Edinburgh Astro Service Locator</title><content type='html'>&lt;p class="mobile-post"&gt;At the last IVOA meeting in Russia, David Schade argued that "position &lt;br /&gt;is the least important attribute of an object".  He was talking about &lt;br /&gt;astronomical objects of course, but it's probably true of VO services &lt;br /&gt;too.  Nevertheless,  I wrote this:&lt;/p&gt;&lt;p class="mobile-post"&gt;http://thor.roe.ac.uk/weasl/index.html&lt;/p&gt;&lt;p class="mobile-post"&gt;It's built from the Astro Server Runtime, a google map, a GeoEncoder &lt;br /&gt;service and some sticky tape.  &lt;/p&gt;&lt;p class="mobile-post"&gt;It's not particularly slick at the moment - the server just writes out a webpage with all the javascript required to place the points on the map.  It would be far better to make it more AJAXy and have the webpage request the points.   Could make it a lot more dynamic then.&lt;/p&gt;&lt;p class="mobile-post"&gt;Gotchas&lt;br /&gt;=======&lt;br /&gt;None really.   The ASR made it very easy, and Google is, of course, wonderful.&lt;br /&gt;Registry Access&lt;br /&gt;---------------&lt;br /&gt;All done through the ASR.  The trick was to check the type of all the returned Resources to see if it's a Service.  Only then do you get access to the attributes you need.&lt;br /&gt;Goole Map&lt;br /&gt;---------&lt;br /&gt;The map javascript is pretty good, though it gets a bit unresponsive above a hundred or so points.  One gotcha is that the &amp;lt;div&amp;gt; that contains the&lt;br /&gt;map worked fine as&lt;br /&gt;&amp;lt;div id="map" height="" width=""&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;but if you compressed the tag into &lt;br /&gt;&amp;lt;div id="map" height="" width=""/&amp;gt;&lt;br /&gt;the browser nested any following divs inside it, with hilarious consequences.&lt;/p&gt;&lt;p class="mobile-post"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116229244140237084?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116229244140237084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116229244140237084'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/weasl-wfau-edinburgh-astro-service.html' title='Weasl - Wfau Edinburgh Astro Service Locator'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116193979740786981</id><published>2006-10-27T10:03:00.000+01:00</published><updated>2006-10-27T10:03:17.490+01:00</updated><title type='text'>Getting Java Server Pages up and running in Tomcat</title><content type='html'>&lt;p class="mobile-post"&gt;Trying to get JSF up and running to use as a front end to WEASL (coming &lt;br /&gt;soon).  Huge problems with missing classes when running the latest JSF  &lt;br /&gt;(1.2) in Tomcat 5.0.28, so fallen back to 1.1.  Apparently 1.2 requires &lt;br /&gt;a version of JSP that Tomcat doesn't yet support.  Trying out the &lt;br /&gt;examples in Core JSF (http://www.horstmann.com/corejsf/)&lt;br /&gt;but got an NPE;&lt;br /&gt;27-Oct-2006 00:30:41 org.apache.catalina.core.StandardWrapperValve invoke&lt;br /&gt;SEVERE: Allocate exception for servlet Faces Servlet&lt;br /&gt;java.lang.NullPointerException&lt;br /&gt;    at javax.faces.webapp.FacesServlet.init(FacesServlet.java:165)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1105)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:757)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:130)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)&lt;br /&gt;    at &lt;br /&gt;org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)&lt;br /&gt;    at &lt;br /&gt;org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)&lt;br /&gt;    at &lt;br /&gt;org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)&lt;br /&gt;    at &lt;br /&gt;org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)&lt;br /&gt;    at &lt;br /&gt;org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)&lt;br /&gt;    at &lt;br /&gt;org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)&lt;br /&gt;    at java.lang.Thread.run(Thread.java:595)&lt;/p&gt;&lt;p class="mobile-post"&gt;The solution to this is simply to remove the working directory from &lt;br /&gt;under Tomcat and restart the webapp.  All will then be well.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116193979740786981?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116193979740786981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116193979740786981'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/getting-java-server-pages-up-and.html' title='Getting Java Server Pages up and running in Tomcat'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116177738738018352</id><published>2006-10-25T12:56:00.000+01:00</published><updated>2006-10-25T12:56:27.463+01:00</updated><title type='text'>Two weekly summary</title><content type='html'>&lt;p class="mobile-post"&gt;* ADASS&lt;br /&gt;* 6DF database problem (see bugzilla &lt;br /&gt;http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1913)&lt;br /&gt;* Upgraded Plastic library in AstroWeka, got the code into SVN and fixed &lt;br /&gt;the Ant build script&lt;br /&gt;-- &lt;br /&gt;------------------------------------------------------------------------&lt;br /&gt;AstroGrid/VOTech&lt;br /&gt;&amp;amp;&lt;br /&gt;WFAU, Institute for Astronomy, Edinburgh&lt;br /&gt;Skype:johndavidtaylor &amp;lt;skype:johndavidtaylor?chat&amp;gt;&lt;/p&gt;&lt;p class="mobile-post"&gt;------------------------------------------------------------------------&lt;br /&gt;*Gratuitous advertising:*&lt;br /&gt;Plastic - http://plastic.sourceforge.net | AstroRuntime - &lt;br /&gt;http://www2.astrogrid.org/desktop&lt;br /&gt;AstroGrid - http://www.astrogrid.org | WFAU - &lt;br /&gt;http://www.roe.ac.uk/ifa/wfau/&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116177738738018352?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116177738738018352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116177738738018352'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/two-weekly-summary.html' title='Two weekly summary'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116056624756230037</id><published>2006-10-11T12:30:00.000+01:00</published><updated>2006-10-12T15:55:50.760+01:00</updated><title type='text'>(Two) Weekly Summary 11/10/06</title><content type='html'>&lt;p class="mobile-post"&gt;* Started trying to collate all the apps we do in DS6 &lt;a herf="http://wiki.eurovotech.org/twiki/bin/view/VOTech/DS6Software"&gt;here:&lt;br /&gt;http://wiki.eurovotech.org/twiki/bin/view/VOTech/DS6Software&lt;/a&gt;  and&lt;br /&gt;chivvy people along into having a proper release process.&lt;br /&gt;* Looked at Maven 2.1-SNAPSHOT in the hope that it has solved the many&lt;br /&gt;bugs in Maven 2.0.4 that are stopping me getting _my_ software into shape&lt;br /&gt;* Maven is still a disaster for site generation.  Refactored the Plastic&lt;br /&gt;site to remove as many subprojects as possible in the hope that this&lt;br /&gt;will help.&lt;br /&gt;* In depth look at Mirage&lt;br /&gt;* Installed STILTS-1.3 and got authorityId changed to Starlink, which we&lt;br /&gt;manage here at ROE.&lt;br /&gt;* Checked all our dbs except usnob, conesearch and adql through workbench.&lt;br /&gt;* Created bugzilla entries for all our components to keep on top of&lt;br /&gt;issues.  See&lt;br /&gt;http://www.astrogrid.org/bugzilla/editproducts.cgi?action=edit&amp;amp;product=WFAU&lt;br /&gt;* Released PAM - the Plastic Application Monitor &lt;a href="http://plastic.sourceforge.net/tupperware/plastic-application-monitor/"&gt;plastic.sourceforge.net/tupperware/plastic-application-monitor/&lt;/a&gt;&lt;br /&gt;* Continued drafting Plastic Note&lt;br /&gt;* ADASS preparation.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116056624756230037?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116056624756230037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116056624756230037'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/two-weekly-summary-111006.html' title='(Two) Weekly Summary 11/10/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-116008650377076667</id><published>2006-10-05T23:15:00.000+01:00</published><updated>2006-10-06T10:18:43.003+01:00</updated><title type='text'>Maven site generation still buggered</title><content type='html'>&lt;p class="mobile-post"&gt;I'd hoped that some of the issues with maven site generation&lt;br /&gt;http://jontayler.wordpress.com/2006/07/26/porting-the-plastic-site-over-to-maven-2/&lt;br /&gt;might be fixed by now.  There seems to be no hurry to release the next&lt;br /&gt;version of Maven&lt;br /&gt;(see http://www.mail-archive.com/users@maven.apache.org/msg51783.html)&lt;br /&gt;so I ventured into bleeding-edge territory and downloaded the latest&lt;br /&gt;SNAPSHOT from&lt;br /&gt;http://maven.zones.apache.org/~maven/builds/branches/maven-2.0.x/&lt;/p&gt;&lt;p class="mobile-post"&gt;Neither the site:staging bug nor the&lt;br /&gt;windows-maven-site-ignores-settings.xml bug appear fixed.  Admittedly,&lt;br /&gt;these are bugs in plugins, rather than the core, so perhaps I just need&lt;br /&gt;to force it to use the latest plugins.   How hard can that be?&lt;/p&gt;&lt;p class="mobile-post"&gt;--&lt;/p&gt;&lt;br /&gt;It's reassuring that I'm not the only one losing patience with the whole Maven endeavour:&lt;br /&gt;&lt;a href="http://www.ctoforaday.com/archives/000050.html"&gt;http://www.ctoforaday.com/archives/000050.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-116008650377076667?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116008650377076667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/116008650377076667'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/maven-site-generation-still-buggered.html' title='Maven site generation still buggered'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115990492695773320</id><published>2006-10-03T20:48:00.001+01:00</published><updated>2006-10-03T20:54:22.996+01:00</updated><title type='text'>Recursive IFRAME IIb</title><content type='html'>&lt;IFRAME src="http://jontayler.blogspot.com/2006/10/recursive-iframe-ii.html" width="400" height="500"&lt;br /&gt;             scrolling="auto" frameborder="1"&gt;&lt;br /&gt;  [Your user agent does not support frames or is currently configured&lt;br /&gt;  not to display frames. However, you may visit&lt;br /&gt;  &lt;A href="foo.html"&gt;the related document.&lt;/A&gt;]&lt;br /&gt;  &lt;/IFRAME&gt;&lt;br /&gt;&lt;br /&gt;Even trying to use two pages to do the recursion doesn't fool Firefox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115990492695773320?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990492695773320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990492695773320'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/recursive-iframe-iib.html' title='Recursive IFRAME IIb'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115990491209927767</id><published>2006-10-03T20:48:00.000+01:00</published><updated>2006-10-03T20:49:29.126+01:00</updated><title type='text'>Recursive IFRAME II</title><content type='html'>&lt;IFRAME src="http://jontayler.blogspot.com/2006/10/recursive-iframe-iib.html" width="400" height="500"&lt;br /&gt;             scrolling="auto" frameborder="1"&gt;&lt;br /&gt;  [Your user agent does not support frames or is currently configured&lt;br /&gt;  not to display frames. However, you may visit&lt;br /&gt;  &lt;A href="foo.html"&gt;the related document.&lt;/A&gt;]&lt;br /&gt;  &lt;/IFRAME&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115990491209927767?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990491209927767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990491209927767'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/recursive-iframe-ii.html' title='Recursive IFRAME II'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115990418115610723</id><published>2006-10-03T20:35:00.000+01:00</published><updated>2006-10-03T20:47:50.110+01:00</updated><title type='text'>IFrames</title><content type='html'>Inspired by this:&lt;br /&gt;&lt;a href="http://communitygrids.blogspot.com/2006_03_01_communitygrids_archive.html"&gt;http://communitygrids.blogspot.com/2006_03_01_communitygrids_archive.html&lt;/a&gt;&lt;br /&gt;which is an interesting blog in its own right.  I was tempted to see if you can do a recursive IFrame.&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;  &lt;IFRAME src="http://jontayler.blogspot.com/2006/10/iframes.html" width="400" height="500"&lt;br /&gt;             scrolling="auto" frameborder="1"&gt;&lt;br /&gt;  [Your user agent does not support frames or is currently configured&lt;br /&gt;  not to display frames. However, you may visit&lt;br /&gt;  &lt;A href="http://jontayler.blogspot.com/2006/10/iframes.html"&gt;the related document.&lt;/A&gt;]&lt;br /&gt;  &lt;/IFRAME&gt;&lt;br /&gt;&lt;br /&gt;Quite sensibly - Firefox spots the recursion and just presents a white box.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115990418115610723?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990418115610723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990418115610723'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/iframes.html' title='IFrames'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115990411255849756</id><published>2006-10-03T20:33:00.000+01:00</published><updated>2006-10-03T20:35:12.570+01:00</updated><title type='text'>Animated GIFS for WFAU</title><content type='html'>Mark has been working on some rather neat animated GIFS for WFAU.  Hope to embed these in our registry entries - that should blow CASU off the page in AstroScope.&lt;br /&gt;http://eurovotech.org/wfau/logos/wfau_logos.htm&lt;br /&gt;&lt;br /&gt;Will get similar done for Plastic....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115990411255849756?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990411255849756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115990411255849756'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/animated-gifs-for-wfau.html' title='Animated GIFS for WFAU'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115972245736625064</id><published>2006-10-01T18:06:00.000+01:00</published><updated>2006-10-01T18:07:37.376+01:00</updated><title type='text'>Evaluating Skype's security</title><content type='html'>&lt;tt&gt;&lt;span style="font-family: Georgia,serif;"&gt;http://www.skype.com/security/files/2005-031%20security%20evaluation.pdf&lt;/span&gt;&lt;/tt&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115972245736625064?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115972245736625064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115972245736625064'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/10/evaluating-skypes-security.html' title='Evaluating Skype&apos;s security'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115954598460118073</id><published>2006-09-29T16:48:00.000+01:00</published><updated>2006-10-03T20:38:17.890+01:00</updated><title type='text'>System Tests for AG@ROE</title><content type='html'>One of the biggest things we have to address if we are to persuade astros that the VO is a serious project is  reliability.  Currently too many services fall over or don't meet interoperability standards fully.&lt;br /&gt;At Edinburgh we are hosting the full range of VO Services from datasets such as the &lt;a href="http://surveys.roe.ac.uk/wsa/"&gt;WFCAM Science Archive&lt;/a&gt; to applications such as the &lt;a href="http://wiki.eurovotech.org/twiki/bin/view/VOTech/AnomalyDetection"&gt;Anomaly Detector&lt;/a&gt; and STILTS to infrastructure such as MySpace.  We have to make sure that we know that systems have fallen over before our customers do.&lt;br /&gt;We are going to need a multilayered solution, from simple-minded pinging of webservices such as that provided by &lt;a href="http://software.astrogrid.org/monitor/status.xml"&gt;MARS &lt;/a&gt;(currently down, awaiting a java upgrade) to the heartBeat service in the  &lt;a href="http://www.ivoa.net/internal/IVOA/IvoaGridAndWebServices/VOSupportInterfacesMandatory-0.25.pdf"&gt;VOSupportInterfaces &lt;/a&gt;currently being developed by the IVOA GWS group.  Going to greater depth, I think we need automated system tests of all of our user-facing components, testing them in the same way as a user would.  These system tests would be run (say) once a day, rather than providing the real-time feedback offered by the other techniques.  For example, MySpace should be tested by creating folders and files, storing and retrieving data.  A dataset should be tested by running a standard conesearch etc.&lt;br /&gt;&lt;br /&gt;A convenient way to run these tests is via the &lt;a href="http://www2.astrogrid.org/desktop"&gt;Astro Server Runtime&lt;/a&gt; developed by Noel Winstanley.  This offers an easy API to all the VO services we deploy here at Edinburgh and allows me to write the tests in my language-of-choice.  From my previous experience of running the Integration&amp;amp;Release process, I've decided to go with JUnit tests wrapped in a Maven project run by a cron job.  This is because JUnit tests are easy to write, and Maven provides easy facilities to publish reports to the web on the success rate of the tests.&lt;br /&gt;&lt;br /&gt;Status of the System Tests project:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tests for Community and MySpace written&lt;/li&gt;&lt;li&gt;Tests for conesearches fleshed out&lt;/li&gt;&lt;li&gt;Code has been put into cvs under: http://www.astrogrid.org/viewcvs/test/AgAtRoe/&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Bugs in the Workbench and Astro Server Runtime have been identified that block further development&lt;/li&gt;&lt;li&gt;Need to restructure build to use the full, un-Proguarded ASR.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115954598460118073?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115954598460118073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115954598460118073'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/09/system-tests-for-agroe.html' title='System Tests for AG@ROE'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115926998851299603</id><published>2006-09-26T12:25:00.000+01:00</published><updated>2006-09-29T16:47:01.486+01:00</updated><title type='text'>(Two) Weekly Summary 27/9/06</title><content type='html'>&lt;ul&gt;&lt;li&gt;One Week at &lt;a href="http://agora.guru.ru/display.php?conf=interop_moscow-2006"&gt;IVOA &lt;/a&gt;Moscow (Notes)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Released a draft of the Plastic spec for the IVOA note, which received quite a thorough going over from MT.&lt;/li&gt;&lt;li&gt;Started work on System tests for AG@ROE&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115926998851299603?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115926998851299603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115926998851299603'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/09/two-weekly-summary-27906.html' title='(Two) Weekly Summary 27/9/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115926985851557395</id><published>2006-09-26T12:21:00.000+01:00</published><updated>2006-09-27T17:25:45.366+01:00</updated><title type='text'>Anomaly Detector problem</title><content type='html'>There seems to be a problem running the Anomaly Detector algorithm at&lt;br /&gt;&lt;a href="http://eurovotech.org/twiki/bin/view/VOTech/AnomalyDetection"&gt;http://eurovotech.org/twiki/bin/view/VOTech/AnomalyDetection &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This algorithm is currently in the ROE Test registry, not in the main AstroGrid registry.  Unfortunately the new workbench seems to be disregarding registry settings and using Leicester, regardless.  This might be linked to the change over to use the streaming registry client.&lt;br /&gt;&lt;br /&gt;Useful page:&lt;br /&gt;&lt;a href="http://www2.astrogrid.org/desktop/usage"&gt;Workbench configuration options.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(Problem now fixed in HEAD)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115926985851557395?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115926985851557395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115926985851557395'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/09/anomaly-detector-problem.html' title='Anomaly Detector problem'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115814778281675057</id><published>2006-09-13T12:17:00.000+01:00</published><updated>2006-09-13T13:57:52.043+01:00</updated><title type='text'>(Two) Weekly Summary 13/9/06</title><content type='html'>&lt;ul&gt;&lt;li&gt;In Strasbourg at &lt;a href="http://wiki.eurovotech.org/twiki/bin/view/VOTech/DS6PlanningStage04"&gt;VOTech meeting&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Progress on messages for clustering and spectra&lt;/li&gt;&lt;li&gt;approval from MT and TB for IVOA note&lt;/li&gt;&lt;li&gt;Interesting tool from Bruno...might help with SIAP service for SSA&lt;/li&gt;&lt;li&gt;Information from Guy on secure SIAP - seems that TLS is the way forward, provided we can find a container that can deal with certificates.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;I've asked Pierre Fernique (deputising for Mark Allen) for a slot at the &lt;a href="http://www.agora.guru.ru/display.php?conf=interop_moscow-2006"&gt;IVOA meeting&lt;/a&gt; - it seems they're not inundated with speakers at the apps IG.&lt;/li&gt;&lt;li&gt;Marked MSc dissertation.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actions Items:&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;(68.2) JDT to give an ROE coffee talk with a demo of AstroGrid&lt;br /&gt;- maybe also including access to UKIDSS data.&lt;br /&gt;[open: decided to postpone this until after registration of users]&lt;br /&gt;&lt;br /&gt;(69.2) JDT to pass this up to Noel Winstanley and/or Kevin Benson.&lt;br /&gt;[closed: see AG@ROE below]&lt;br /&gt;Follow up: JDT to fix registry entries&lt;br /&gt;&lt;br /&gt;(70.4) JDT to contact Guy Rixon to check that their plans for wrapping&lt;br /&gt;STIL(TS) as CEA services are consistent.&lt;br /&gt;[closed: JDT decided that the best thing to do would be to deploy here&lt;br /&gt;a clone of the Cambridge set-up. STILTS can auto-generate the required&lt;br /&gt;application description, so that it is possible to have the description&lt;br /&gt;for the two installations being identical, which would enable JES to&lt;br /&gt;pick on or other of them.]&lt;br /&gt;&lt;br /&gt;Followup: JDT has now cloned the STILTS installation at the ROE.  This is using STILTS' auto-generated app-description.  There are a couple of minor issues: some of the description metadata is html-formatted, and doesn't play nicely with the Workbench, and one of the parameter types has been incorrectly specified.  [the constant specifying the STILTS command].  One of the disadvantages of cloning the Cambridge installation is that we in Edinburgh don't get any credit - it's got IoA logos all over it.&lt;br /&gt;&lt;br /&gt;(70.5) JDT to contact Phil Nicholson to ask about his plans for&lt;br /&gt;a standard SIAP component.&lt;br /&gt;[closed: see AG@ROE below]&lt;br /&gt;&lt;br /&gt;Follow up: see JDT comments above.&lt;br /&gt;&lt;br /&gt;AOB&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;IBM hardware&lt;br /&gt;JDT mentioned that there had been an email circulated about the possibility of&lt;br /&gt;some surplus IBM hardware becoming available on site soon.&lt;br /&gt;Any news?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115814778281675057?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115814778281675057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115814778281675057'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/09/two-weekly-summary-13906.html' title='(Two) Weekly Summary 13/9/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115685658393024236</id><published>2006-08-29T13:59:00.000+01:00</published><updated>2006-08-29T14:03:03.940+01:00</updated><title type='text'>Thunderbird mail forwarding from a filter broken</title><content type='html'>I want to use a spare gmail account to backup all my incoming and outgoing mail in Thunderbird.  Outgoing is easy enough - for each account under tools/accounts/Copies &amp; Folders you add a line to the Bcc section.   To set up backup of incoming mail, I created a filter to act on the inbox and find "read" messages, and forward them.  This ought to work but doesn't....I just get an alert popup box with "sending of messages failed."   It seems I'm not the &lt;a href="http://forums.mozillazine.org/viewtopic.php?p=2416477"&gt;only one&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115685658393024236?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115685658393024236'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115685658393024236'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/thunderbird-mail-forwarding-from.html' title='Thunderbird mail forwarding from a filter broken'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115684333299051961</id><published>2006-08-29T09:41:00.000+01:00</published><updated>2007-04-29T18:32:28.525+01:00</updated><title type='text'>Java signed applet security insanity</title><content type='html'>I've been looking into using signed applets as a &lt;a href="http://plastic.sourceforge.net/tupperware/PlasticApplet/ShowApplet.html#dummy"&gt;javascript-plastic&lt;/a&gt; bridge.   The applets have to be signed so that they can make RMI connections to the Plastic Hub - this works well.  Then through the wonders of LiveConnect you can call methods on the applet from JavaScript, and thanks to a magical object called JSObject you can make callbacks back to the JavaScript from the Java.  This also, mostly, works well.  However, try deploying the applet anywhere but localhost, and some of the JavaScript-&gt;Java calls fail with security exceptions (see below).   Not all, just some.  The reason?  Apparently, if the JavaScript itself isn't signed, then any method calls originating in the JavaScript are treated as if the applet itself &lt;span style="font-style: italic;"&gt;isn't signed&lt;/span&gt; - you lose all your signed applet privs.  What kind of deranged madman thought that up?  It's useless as a security benefit - all you do is put the controversial stuff into a separate thread, so that the JavaScript to Java calls merely set and get properties...so it's trivially subverted.  Instead it just makes your code more complicated than it need be, and confounds the poor programmer with mysterious errors.&lt;br /&gt;&lt;br /&gt;Implementation note: it's not good enough just to spawn an new thread in the method called by JavaScript, as this will inherit the security of the calling thread.  Instead you need to instantiate a  worker thread in (say) the start() method of the applet, and have the JavaScript-called method hand tasks to this worker.  You can see a (rather naive) implementation &lt;a href="https://svn.sourceforge.net/svnroot/plastic/tupperware/plastic4html/trunk/src/main/java/uk/ac/roe/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;An alternative solution:&lt;br /&gt;Put the "untrusted code" in:&lt;br /&gt;&lt;pre&gt;  somemethod() {&lt;br /&gt;       ...normal code here...&lt;br /&gt;       String user = (String) AccessController.doPrivileged(&lt;br /&gt;         new PrivilegedAction() {&lt;br /&gt;           public Object run() {&lt;br /&gt;               return System.getProperty("user.name");&lt;br /&gt;           }&lt;br /&gt;         }&lt;br /&gt;       );&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stacktrace for google's benefit:&lt;br /&gt;java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException&lt;br /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;at sun.plugin.liveconnect.SecureInvocation$2.run(Unknown Source)&lt;br /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;br /&gt;at sun.plugin.liveconnect.SecureInvocation.CallMethod(Unknown Source)&lt;br /&gt;at sun.plugin.liveconnect.SecureInvocation.access$300(Unknown Source)&lt;br /&gt;at sun.plugin.liveconnect.SecureInvocation$CallMethodThread.run(Unknown Source)&lt;br /&gt;Caused by: java.lang.reflect.InvocationTargetException&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&lt;br /&gt;at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt;at java.lang.reflect.Method.invoke(Unknown Source)&lt;br /&gt;at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source)&lt;br /&gt;at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)&lt;br /&gt;at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)&lt;br /&gt;at java.lang.reflect.Method.invoke(Unknown Source)&lt;br /&gt;at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source)&lt;br /&gt;at sun.plugin.liveconnect.PrivilegedCallMethodAction.run(Unknown Source)&lt;br /&gt;... 6 more&lt;br /&gt;Caused by: java.security.AccessControlException: access denied (java.net.SocketPermission 10.0.0.8:2234 connect,resolve)&lt;br /&gt;at java.security.AccessControlContext.checkPermission(Unknown Source)&lt;br /&gt;at java.security.AccessController.checkPermission(Unknown Source)&lt;br /&gt;at java.lang.SecurityManager.checkPermission(Unknown Source)&lt;br /&gt;at java.lang.SecurityManager.checkConnect(Unknown Source)&lt;br /&gt;at sun.rmi.transport.tcp.TCPChannel.checkConnectPermission(Unknown Source)&lt;br /&gt;at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)&lt;br /&gt;at sun.rmi.server.UnicastRef.invoke(Unknown Source)&lt;br /&gt;at net.ladypleaser.rmilite.impl.RemoteInvocationHandlerImpl_Stub.invoke(Unknown Source)&lt;br /&gt;at net.ladypleaser.rmilite.impl.LocalInvocationHandlerImpl.invokeRemote(LocalInvocationHandlerImpl.java:53)&lt;br /&gt;at net.ladypleaser.rmilite.impl.LocalInvocationHandlerImpl.invoke(LocalInvocationHandlerImpl.java:41)&lt;br /&gt;at $Proxy0.requestToSubset(Unknown Source)&lt;br /&gt;at org.votech.plastic.managers.PlasticApplication.sendMessage(PlasticApplication.java:166)&lt;br /&gt;at org.votech.plastic.managers.PlasticApplication.sendMessage(PlasticApplication.java:140)&lt;br /&gt;at uk.ac.roe.PlasticHubApplet.sendLoadVOTable(Unknown Source)&lt;br /&gt;... 16 more&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115684333299051961?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115684333299051961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115684333299051961'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/java-signed-applet-security-insanity.html' title='Java signed applet security insanity'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115636562613507873</id><published>2006-08-23T21:33:00.000+01:00</published><updated>2006-08-23T21:40:26.143+01:00</updated><title type='text'>How to get an applet to repaint</title><content type='html'>You have an applet.  In response to some event you want to  change all the components it contains.  However, your changes don't appear...why?&lt;br /&gt;If I was using a JFrame, I'd liberally throw in a few pack() statements, which causes the JFrame to resize itself based on the new components, and redraw, but you don't have this option with an applet.  After some javadocing, it seems that a combination of validate(), invalidate() and repaint() ought to do it.  Some experiments later, it seems that&lt;br /&gt;&lt;ul&gt;&lt;li&gt;invalidate does nothing&lt;/li&gt;&lt;li&gt;validate shows up the new components, but over the old ones&lt;/li&gt;&lt;li&gt;repaint erases everything&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;invalidate followed by validate is the same as validate&lt;/li&gt;&lt;li&gt;invalidate followed by repaint is the same as repaint&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;validate followed by repaint does the trick&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115636562613507873?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115636562613507873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115636562613507873'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/how-to-get-applet-to-repaint.html' title='How to get an applet to repaint'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115636168016132081</id><published>2006-08-23T20:28:00.000+01:00</published><updated>2006-08-23T20:43:42.313+01:00</updated><title type='text'>Copying a list of files in Ant</title><content type='html'>One might think that such an everyday task as copying a list of files would be trivial in &lt;a href="http://ant.apache.org"&gt;Ant&lt;/a&gt;.  Not so - it's a bloody nightmare.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;First attempt: creating a  &lt;a href="http://ant.apache.org/manual/CoreTypes/filelist.html"&gt;FileList  &lt;/a&gt;would seem  to be what you want.  Nope - the Copy task doesn't support FileLists.  Why?????&lt;/li&gt;&lt;li&gt;Second attempt: create a FileSet (with the usual substitution of angle brackets....would it be too much to ask to have a blog site that doesn't stuff up xml?):&lt;/li&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[copy todir="foo"]&lt;br /&gt;  [fileset dir="bar"]&lt;br /&gt;     [filename name="pathfrombarto/file"/]&lt;br /&gt;     [filename name="differentpathfrombarto/file2"/]&lt;br /&gt;  [/fileset]&lt;br /&gt;[/copy]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Nope - the filenames are mutually exclusive - the fileset does an "and" on them, and since your files won't match both names, it copies nothing.  Ridiculous.&lt;/ol&gt;In any case, the fact that you're forced to use a FileSet and its pattern matching means that if you have a large set of files below "dir" (e.g. a Maven repository) then the above takes an age.&lt;br /&gt;&lt;br /&gt;The solution, incidentally, is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;[copy todir="foo"]&lt;br /&gt;  [fileset dir="bar"]&lt;br /&gt;    [or]&lt;br /&gt;     [filename name="pathfrombarto/file"/]&lt;br /&gt;     [filename name="differentpathfrombarto/file2"/]&lt;br /&gt;    [/or]&lt;br /&gt;  [/fileset]&lt;br /&gt;[/copy]&lt;/pre&gt;&lt;br /&gt;Though it still takes an age to process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115636168016132081?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115636168016132081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115636168016132081'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/copying-list-of-files-in-ant.html' title='Copying a list of files in Ant'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115617046332281626</id><published>2006-08-21T15:09:00.000+01:00</published><updated>2006-08-30T17:31:18.853+01:00</updated><title type='text'>Weekly Summary 30/8/06</title><content type='html'>&lt;ul&gt;&lt;li&gt;Guy has created a new community with password change facility - passed I&amp;R and ready to install.&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Tried to install, but it won't self-register: see bug &lt;a href="http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1789"&gt;1789&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Guy has put a fix on the merge queue for this...in the meantime we can hack the reg entry....done...appears to work well.  Except.....you can change your password with any &lt;a href="http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1793"&gt;old password.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Mark to reinstall when it passes I&amp;amp;R?  How did this error slip through I&amp;amp;R in the first place?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Submitted abstract to ADASS 2006 http://www.adass.org:8080/Conferences/2006/Venue/people/participants/abstract?abstract_id=82&lt;/li&gt;&lt;li&gt;Planning: using Open Workbench http://www.openworkbench.org/ to create GANTT charts and managed dependencies between tasks.&lt;/li&gt;&lt;li&gt;Downloaded and installed Eirik http://wiki.eurovotech.org/twiki/bin/view/VOTech/EirikDemo on a Debian machine. Plastic and AR functionality appear fine. Couldn’t test further due to Window size issues. Installation straightforward - install debian version of R first, then hand edit the Eirik startup script to find the location or libR.so. &lt;ul&gt;&lt;li&gt;Tried to install Eirik on Shuna (Bob’s machine). Since I’m not root this involved building R from source using ./config and make. This is fairly easy to do, following the instructions, but care must be taken in the config stage to request a shared library libR.so to be built, and also to set &lt;span class="option"&gt;–with-readline=no on Shuna. Unfortunately getting Eirik to run on Shuna wasn’t do-able due to assorted missing shared libs on this machine.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="option"&gt;However, following several iterations, did get a windows version running.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;Hardened the hub to concurrency problems and clients passing shit values.&lt;/li&gt;&lt;li&gt;Jeff and others are experiencing some AR problems - AR is refusing RMI connections. I also have the same problem from time to time and it’s usually cured with a reboot. Mark’s Plaskit hub doesn’t suffer from this. Suspect it’s something to do with the way the AR deals with IP addresses - a network outtage is enough to screw it up.&lt;/li&gt;&lt;li&gt;Finished Anomaly Detection pipeline&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Looking at deploying stilts at the same time.  There are problems with the existings STILTS deployments discussed &lt;a href="http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1791"&gt;here&lt;/a&gt;.  (Fixed by Kona).   Get Kona/Mark to install?&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Standard and Advanced interfaces now done, and registered.  All works smoothly, but not very robust to errors in data since fastem locks up waiting for a user response....not a great idea for a CEA app.&lt;/li&gt;&lt;li&gt;Created an applet to allow users to simply change their workbench registry settings.  This was also a learning exercise for creating a plastic-applet.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Instructions for use are &lt;a href="http://wiki.eurovotech.org/twiki/bin/view/VOTech/AnomalyDetection"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Finished a prototype &lt;a href="http://plastic.sourceforge.net/tupperware/PlasticApplet/ShowApplet.html"&gt;Plastic-compatible web page&lt;/a&gt;...this is aimed at our own WSA, but also to get DataScope on board.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Received request from Noel to smarten up our metadata - we need to discuss logos.&lt;/li&gt;&lt;li&gt;Checked &lt;a href="http://star-www.rl.ac.uk/Download/"&gt;Son Of GAIA&lt;/a&gt; for Nigel, and found that I can’t run the webstart version either due to missing classes. Probably due to the 1.5 java libraries having renamed some classes. Reported to ussc@star.rl.ac.uk...address is defunct...emailed Mark Taylor...apparently you need to install the JAI package first (not documented!).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Assisted Brian getting his weka cea apps deployed to our test registry. We encountered a lot of out-of-memory errors in the registry, and also a particularly annoying &lt;a href="http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1784"&gt;bug &lt;/a&gt; necessitating the reconfiguration of the registry and changing its authority Id.&lt;/li&gt;&lt;li&gt;Assisted Brian changing the registry his workbench uses.&lt;/li&gt;&lt;li&gt;Realised that if we have a test registry, we need a test JES, so installed one &lt;a href="http://hempriggs.roe.ac.uk:8081/test-jes/"&gt;here&lt;/a&gt;.  The official release of JES is lacking an astrogrid-security jar, which you have to add by hand to WEB-INF/lib.  Catherine has now released a new build, which Mark should test.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Thanks to Brian, reproduced the mysterious "Found Resource Document, but had no AccessURL" that has been plaguing systems that harvest from our publishing registry and try to access our date sets.  &lt;a href="http://www.astrogrid.org/bugzilla/show_bug.cgi?id=1787"&gt;Bugzilla report&lt;/a&gt;.  It appears to be due to our use of Java 1.5.  I've found that most of our old datasets suffer from the problem, but that it doesn't occur in the latest snapshot build of the workbench.  Hence we could ignore it - it will go away when we reregister our new services anyway.  Left it in Mark and Kevin's capable hands.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Republished Plastic site with google analytics code throughout&lt;/li&gt;&lt;ul&gt;&lt;li&gt;mvn 2.0.5 not yet released, and the bugs in 2.0.4 make site publication a painful process as&lt;/li&gt;&lt;ul&gt;&lt;li&gt;site:deploy doesn't work in windows&lt;/li&gt;&lt;li&gt;site:stage doesn't copy the contents of directories, effectively making multiproject site deployment useless&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actions&lt;br /&gt;(68.2) JDT to give an ROE coffee talk with a demo of AstroGrid&lt;br /&gt;- maybe also including access to UKIDSS data.&lt;br /&gt;pending...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(69.1) JDT and KEA to produce a plan for providing password-changing&lt;br /&gt;functionality for ROE account holders registering for AG.&lt;br /&gt;DONE - see above&lt;br /&gt;&lt;br /&gt;(69.2) JDT to pass this up to Noel Winstanley and/or Kevin Benson.  DONE - see above&lt;br /&gt;&lt;br /&gt;ACTION (70.1) MSH to install the new version of Community.&lt;br /&gt;done by JDT&lt;br /&gt;&lt;br /&gt;ACTION: (70.4) JDT to contact Guy Rixon to check that their plans for wrapping&lt;br /&gt;STIL(TS) as CEA services are consistent.&lt;br /&gt;DONE - see above&lt;br /&gt;&lt;br /&gt;Thoughts:&lt;br /&gt;Need better cover for MSH's absence&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115617046332281626?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115617046332281626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115617046332281626'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/weekly-summary-30806.html' title='Weekly Summary 30/8/06'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115616816704850671</id><published>2006-08-21T14:39:00.000+01:00</published><updated>2006-10-05T23:07:18.143+01:00</updated><title type='text'>Creating the Anomaly Detector CEC</title><content type='html'>I'm installing Andy Connolly's Expectation Maximization/Anomaly Detection algorithm into an AstroGrid CEC (Common Execution Connector) to make it available to the VO.  Along the way I've been using the splendid &lt;a href="http://www.star.bris.ac.uk/%7Embt/stilts/"&gt;STILTS &lt;/a&gt;utility to do all the VOTable conversions.&lt;br /&gt;Things I've learned along the way&lt;br /&gt;&lt;ul&gt;&lt;li&gt;STILTS is sufficient to take a table in assorted different formats, and extract a user-defined set of columns (specified by position or name), and export the results as an EM-friendly space-separated text file.  It is also smart enough to take the generated list of row numbers and p_values and do an exact cross match on the original table...thus generating a clone of the original table, sorted by p_value and with the p_values attached as an extra column.  In short, it does all the table manipulation needed to transform a VO-standard table into a proprietary format and back again, with only a little help from awk.&lt;/li&gt;&lt;li&gt;Any processes started by the CEC must NOT ask the user for input.  The current EM-algorithm prompts the user for input if it fails for some reason...this seriously screws up your CEC.  The solution is to add a test on the return value from the STILTS preprocessing step, before the EM-algorith is called:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;#echo $?&lt;br /&gt;#Try to protect fastem from bad data&lt;br /&gt;if [ "$?" -ne "0" ]; then&lt;br /&gt;echo "STILTS failed to prepare data.  Aborting"&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;You can only specify a registry template for a single CEA application.  This means that if you're CEC supports several applications, you need to edit the registry description by hand after it's been generated.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can specify an optional argument in the CEC-CL config with (insert)&lt;/li&gt;&lt;li&gt;The CEC-CL only supports the following kinds of parameters:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;-key value&lt;/li&gt;&lt;li&gt;positional&lt;/li&gt;&lt;li&gt;key=value&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Unfortunately the em algorithm takes parameters as&lt;/li&gt;&lt;ul&gt;&lt;li&gt;key value&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;You can get round this by pattern matching on the params with something like ${@//=/ } which takes all the parameters in one go and replaces all = with ' '&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115616816704850671?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115616816704850671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115616816704850671'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/creating-anomaly-detector-cec.html' title='Creating the Anomaly Detector CEC'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-32946075.post-115590493412292769</id><published>2006-08-18T13:42:00.000+01:00</published><updated>2006-08-18T14:01:33.233+01:00</updated><title type='text'>New week, new blog</title><content type='html'>&lt;p class="mobile-post"&gt;Still looking for the perfect home for my blog.  All I want is something that's quick and responsive that I can use to jot down notes from work to give my ageing memory a break.  Plus...when you spend all day wrestling maven into submission, it's possible that what you've learned just might save someone else some grey hairs.&lt;/p&gt;&lt;p class="mobile-post"&gt;So, I'm defecting from wordpress: &lt;a href="http://jontayler.wordpress.com/"&gt;http://jontayler.wordpress.com/&lt;/a&gt; to here. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32946075-115590493412292769?l=jontayler.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115590493412292769'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32946075/posts/default/115590493412292769'/><link rel='alternate' type='text/html' href='http://jontayler.blogspot.com/2006/08/new-week-new-blog.html' title='New week, new blog'/><author><name>Jon Tayler</name><uri>http://www.blogger.com/profile/01988179493980724237</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>
