One of these days I’m going to show my python code to someone who actually programs in python for a living. They’re going to laugh. Laugh and laugh and laugh… and laugh. And then cry.
David’s not the first scientist I know who’s said this, for example, I heard almost the same thing from Cameron Neylon last year when he was presenting to my final-year Web Research group. Cameron (who’s an advocate of Open Science) was demonstrating how he’d hacked up a bit of python to show the growth of Open Access publishing, but at the same time apologising that he’s originally a Bio-Chemist so the code does a job, but doesn’t necessarily do it as well or as ‘beautifully’ or efficiently as it perhaps might.
These are both examples of sharing code after its development. There are big advantages to publishing experimental code such as this during its development:
It encourages peer review of the experimental process earlier in the project which may reduce the potential for errors due code not doing what is intended.
It provides third party developers with the opportunity to be involved in research by actively contributing to the code by improving it, even if they are not specialists in the subject being studied, their specialism in software development adds orthogonal value.
It provides subject specialists with opportunity to see how their code has been improved so they can learn from this and write improved code themselves next time, possibly seeing new solutions and experiment-options as a result.
Historically (however) it’s common that experimental code is published either:
after papers are written and results are published, or
never (even if there are good intentions to do so, time and funding dry up and the code dies alone). There may also be historic reasons why it’s not possible to publish code: often research organisations have little experience with Free Software so IPR fears can inhibit the potential openness of any project, but, the more open projects there are, the more opportunity there is for understanding to grow, fear to wane, and open science to blossom.
So, in the near term, developing non-critical code openly may be the best way forward. If researchers can get in the habit of developing tools, utilities and other small projects openly then that may be the first step to encouraging all scientists to think and solve problems as part of a global ad-hoc developer collective.
Everything is everyone’s collective responsibility. If you see something that seems a bit wonky, it makes sense to ask questions. Peace of mind should be the result, but what if you’re not sure, or what if you ask questions and the answers are unconvincing? So, dear lazyweb, I ask you, where is the best place to put a fire extinguisher? In the following notes, bold emphasis is mine…
The positioning of your fire extinguishers is extremely important as every second counts in an emergency situation and you have to remember that the person trying to find them may be a first time visitor to your premises.
in conspicuous positions where persons following an escape route can easily see them
The Fire Safety Advice Centre observe that extinguishers:
should be fixed where they can be easily seen, fixing them inside cupboards or behind doors will only waste valuable time if a fire breaks out.
Much of this advice appears to be based on BS 5306-8:2012, but that costs £68, so I’m not buying that on the basis of being a mildly concerned citizen.
So, given that this appears to be all common sense stuff, why do so many places hide their fire extinguishers? For example, here’s my local supermarket. Can you see the whole of the extinguisher from top to bottom? Is it easily seen and in a conspicuous position so it will be noticed by a first time visitor to the premesis?
Hint: There’s two, nestled behind the blue drag-baskets, next to the stacked charcoal.
Reflecting the changed landscape of hosting, and the reduced time I have to maintain this site, I’ve switched over to WordPress.com for hosting this site – saving a few hundred quid per year; which is nice.
Technology is gloriously disruptive. Processes change slowly. In the middle, geeks watch, amused.
For example, today I got an MS Word document (and I don't have word on any of my 3 machines). The document was emailed to 20 researchers, saying "here is your new website" please send any modifications by return.
I suppose it's progress… they could have sent it hard copy.
Upgraded from early 2008 MBP to current 2.3GHz i7 model with retina display & SSD. It feels like my laptop has been to the gym. Every thing is just so much more toned. Taut keyboard, crisp text, solid unibody, silent operation. *Surreal.* #apple
So, I have an old iPhone 3GS* that is sitting around unused, and a Bose Sound Dock. Is there an app that can turn these two items into "an Apple TV speaker" so I can have the Soma FMs Christmas Lounge tracks on in the kitchen without making two connections to their server?
On motorways, lowering the speed limit at congested times leads to less congestion because cars don't have to be so erratic in their braking. Would the same policy work in an urban environment. i.e. would average journey times be reduced if the speed limit on main roads were reduced from 30 to something lower at various states of congestion?
/me starts a some background reading and checks out the potential of using our SCIAMA supercomputer.
Free stuff usually goes down well, as do competitions, so my students seem to be lapping this one up. 3GB extra free space if you sign up and confirm you're at UoP – and if you're already a member, just confirm your membership to get extra free space.
I and many others have been working for the last few years on building a large-scale storage system that can manage data across all of Google's datacenters. This system underlies Google's advertising system, among other products. We'll be presenting a paper describing the system (with 26 co-authors!) at OSDI 2012 next month. We've now put up a web page with a link to the PDF of the final version of the paper.
Feedback is welcome, of course.
Here's the abstract of the paper:
Spanner is Google's scalable, multi-version, globally-distributed, and synchronously-replicated database. It is the first system to distribute data at global scale and support externally-consistent distributed transactions. This paper describes how Spanner is structured, its feature set, the rationale underlying various design decisions, and a novel time API that exposes clock uncertainty. This API and its implementation are critical to supporting external consistency and a variety of powerful features: non-blocking reads in the past, lock-free read-only transactions, and atomic schema changes, across all of Spanner.
Spanner: Google's Globally-Distributed Database James C. Corbett, Jeffrey Dean, Michael Epstein, Andrew Fikes, Christopher Frost, JJ Furman, Sanjay Ghemawat, Andrey Gubarev, Christopher Heiser, Peter …
To help discover these leaks, two of my fellow Googlers (+Marja Hölttä and +Jochen Eisinger) have developed a tool that works with the Chrome Developer Tools (specifically, the remote inspection protocol) and retrieves heap snapshots and detects what objects are causing leaks.
Some more info: In case you're wondering why a tool like this isn't already integrated with our Developer Tools, the reason is two fold. It was originally developed to help us catch some specific memory scenarios in the Closure Library and it makes more sense as an external tool (or maybe even an extension if we get a heap profiling extension API in place).
I'm trying out Google Plus for some lazy web-publishing and seeing continued file-permission strangeness. Here's an example in case others are experiencing similar and it's reproducible…
Before I begin, the remote machine looks like this:
rjb@buck-16~/Google Drive/xyz/words $ ls -la total 48 drwxrwxrwx 7 rjb staff 238 8 Aug 15:45 . drwxrwxrwx+ 22 rjb staff 748 8 Aug 15:45 .. -rwxrwxrwx 1 rjb staff 341 7 Jun 10:58 404.html -rwxr-xr-x 1 rjb staff 321 8 Aug 15:34 defaults.php -rwxrwxrwx 1 rjb staff 6462 8 Aug 15:42 index.html -rwxrwxrwx 1 rjb staff 3031 6 Jun 22:25 js.html -rwxrwxrwx 1 rjb staff 115 6 Jun 20:21 menu.html
I then locally edit `js.html`. Note the timestamp and permissions:
rjb-mbp:words rjb$ ls -la total 48 drwxr-xr-x 7 rjb staff 238 8 Aug 15:41 . drwxr-xr-x 22 rjb staff 748 8 Aug 15:42 .. -rwxr-xr-x 1 rjb staff 341 7 Jun 10:58 404.html -rwxr-xr-x 1 rjb staff 321 8 Aug 15:34 defaults.php -rwxr-xr-x 1 rjb staff 6462 8 Aug 15:42 index.html -rwxr-xr-x 1 rjb staff 3119 8 Aug 15:50 js.html -rwxr-xr-x 1 rjb staff 115 6 Jun 20:21 menu.html
Shortly afterwards on the remote machine it appears thus – note how the modification time is updated (and indeed the file is updated) but neither the original permission, nor those on the machine where the file was edited, are used):
rjb@buck-16~/Google Drive/xyz/words $ ls -la total 48 drwxrwxrwx 7 rjb staff 238 8 Aug 15:54 . drwxrwxrwx+ 22 rjb staff 748 8 Aug 15:45 .. -rwxrwxrwx 1 rjb staff 341 7 Jun 10:58 404.html -rwxr-xr-x 1 rjb staff 321 8 Aug 15:34 defaults.php -rwxrwxrwx 1 rjb staff 6462 8 Aug 15:42 index.html -rw——- 1 rjb staff 3119 8 Aug 15:50 js.html -rwxrwxrwx 1 rjb staff 115 6 Jun 20:21 menu.html