Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Journal of nicholas (3034)

Saturday August 15, 2009
07:38 AM


I currently have mixed feelings about the NHS.

On one hand, I don't know what the cost of having 2 midwives, 4 doctors, an anaesthetist* and assistant, and (IIRC) a couple of others on hand at 06:30 on a Sunday costs, but it can't be cheap.

On the other hand, they're not very good at phoning you back, and there is a lot of waiting around, when your clinical priority is not "must be done right now".

* The anaesthetist was a registrar. I don't know what his assistant was.

Tuesday August 11, 2009
11:11 AM

Dear helpful git-using lazyweb

Dear helpful git-using lazyweb,

Thanks for the answers to the previous question. I have another question. I see this:

$ git fetch -q >/dev/null
From git://camel/perl
   249829c..ba2d061  blead      -> origin/blead

Is there any way to run git fetch such that it produces no summary output to stderr, unless there is an error. I don't want to hack up a parser for "expected noise", and I don't want a cron job mailing me every time if "nothing is wrong". It's not clear from the man page that this is possible, and the "obvious" above doesn't work. Heck, even forcibly ensuring that nothing is a tty still doesn't work:

$ git fetch -q 2>&1 >/dev/null </dev/null | cat
   249829c..ba2d061  blead      -> origin/blead

(That's on a different machine. I don't have a test remote repository where I generate commits to try things out. That feels futile.)

Sunday August 09, 2009
02:30 PM

Orange is not the only fruit have a couple of long but insightful interviews with the creator of a major programming language. I'm not saying who yet:

It is extremely difficult to make major changes to a language in world-wide use. That's probably good: one of ███'s greatest advantages ... is stability.

Compiler/language-design skills are far rarer than library design and implementation skills and the required infrastructure for compiler experimentation is far larger and more expensive.

(from page 2 of the second interview)

The average "voice" in a debate about language evolution seems short sighted, unduly influenced by fashion, and focused on a single feature at a time. Many believe in "simple perfect solutions" for complex issues and few appear to have much respect for existing code (billions of lines of code) and practices (millions of programmers). Few are willing to stay with the design/standardization project for years or to do the massive tedious work involved in getting the details right.

One problem is that there is no agreement as to what constitutes a "badly-needed feature" and some of the loudest voices are in no mood to discuss: They think they know.

Remember Visual Basic? ███ was often criticized for not evolving as fast as VB, but ███ has chosen a model of evolution that precludes massive breaking of existing code.

Secondly, ███ simply cannot follow every fad. To be useful, it must evolve slowly and compatibly. If you want a fashionable language, a language with all the latest bells and whistles ... you know where to find such things. However, if you want a language that's useful for programs with a lifespan of decades ...

(from page 4 of the second interview)

There is always pressure to add features. Many people think that I and the committee are just bloody-minded and/or stupid not to immediately add their favorite feature—typically a feature they have tried or just heard of in some other language. Often, those same people complain that the committee is adding too many features and that we should remove some of those old and ugly "legacy features." Making changes to a widely used language is not easy. There are distinct limits to how many changes we can add with a reasonable hope that they will be widely useful, rarely harmful, or confusing, and not breaking existing code. People really don't like their existing code to be broken and making significant extensions 100 percent compatible and properly integrated with all existing and new features can be quite difficult.

I don't know how to draw a sharp line between worthwhile and frivolous extensions, but I do know that no new feature is really "indispensible."

It happens that it's C++, hence the interviews are with Bjarne Stroustrup, but it resonates with both Perl 5 and Perl 6.

As well as language design, he has also has comments on popularity, perceived or real:

C++ use appears to be declining in some areas and appears to be on an upswing in other areas. If I had to guess, I'd suspect a net decrease sometime during 2002-2004 and a net increase in 2005-2007, but I doubt anyone really knows. Most of the popular measures basically measures noise and ought to report their findings in decibel rather than "popularity." Many of the major uses are in infrastructure ... where programmers don't go to conferences or describe their code in public. Many of the most interesting and important C++ applications are not noticed, they are not for sale to the public as programming products, and their implementation language is never mentioned. Examples are Google and "800" phone numbers. Had I thought of a "C++ inside" logo in 1985, the programming world might have been different today.

I say that C++ use is growing when I see user population grow by 200,000 programmers from 3.1M to 3.3M. However, somebody else may claim that "C++ is dying" because it's "popularity" has dropped from 16 percent to 10 percent of the total number of users. Both claims could be simultaneously true

Most of the popularity measures seem to measure buzz/noise, which is basically counting mentions on the web. That's potentially very misleading.

The State of the Language: An Interview with Bjarne Stroustrup (page 6). The other interview being Bjarne Stroustrup Expounds on Concepts and the Future of C++ . Both worth reading in full, if you're interested in C++.

I wonder what his opinions about SuperCollider programming are.

01:47 PM

webapps may not be the answer

At YAPC Europe this year, dami gave an interesting talk about migrating from COBOL to Perl.

He highlighted something that I'd not heard clearly enunciated before:

One might believe that replacing an existing program (implied legacy, ugly, hard to use) with a a webapp (implied modern, attractive, easier to use), but actually this might not be progress, because webapps can necessitate more people to get the same amount of work done. The actions they can require, such as dragging and closing windows are often actually slower than the keyboard driven apps they replace.

He added we were careful not to do that.

Obvious it may be, but it's worth remembering.

01:25 PM

YAPC::EU backlog, part 1 of about 2

I believe that this year at YAPC Europe, we had the first fully (unpaid-up) conference widower of any European YAPC.

Tara attended, and gave a fascinating talk on manuscript genetics. But this year, her husband Mike was in Lisbon, but not attending the conference. (Previously, in 2007, it was looking like he was going to be a widower, but he ended up attending in his own right after a fellow employee was unable to attend, and he took his place.)

So, I'm wondering, is this the first conference widower of any YAPC? Or is it a more common occurrence than one might think?

01:16 PM

The Internet is full of useless, er, full, information.

So, whilst we were test driving cars, we joined the A14 on a junction with a vile slip road, which I commented at the time reminded me of a horrible junction on the M6. Well, it turns out that the Internet knows the reason why J34 on the M6, particularly the slip road joining to the north, is so evil: uphill, wedging you straight onto a road where traffic is travelling at 70mph, without even a hard shoulder to abort onto...

The only road of any importance crossed by the By-pass is the A683, leading from Lancaster north-east-wards along the south side of the River Lune. The emergency services were based in the City and it was decided that a connection should be provided for their sole use, with the County Council agreeing to pay 25% of the cost. The design standards of this junction were lower than those of a normal interchange, with the carriageways of the slip roads separated only by double white lines. Subsequently, however, local representations were made for the junction to be opened for general use and this was eventually agreed. The result is a unique sub-standard interchange on a British motorway.

The Motorway Archive on The Lancaster by-pass

01:02 PM

Dear git-using lazyweb...

Dear lazyweb,

Say one has a git repository, and one would like to produce bi-weekly e-mails summarising activity...

As I understand it, branches in git, whilst first class, don't store history. In that, right now, there is a well defined "head" for blead , but there is no state that tells me what the "head" for blead was yesterday, or even last week. So, if I want my summary to say "activity on blead", and "activity on maint-5.10", "activity on target-the-SuperCollider-VM" etc., I don't have any way from a single current repository to infer the history of the branches.

So, I'm wondering, what happens if I conceptually have two repositories. One current at half-a-week-ago, and one current at right-now. Can I usefully tease apart some semblance of activity on each branch between "then" and "now"? I think that I can - I know the position of blead's head back then, and I know the positions of blead's head right now, so any commit that is both a parent of "head now", and a child of "head then", is somewhere on the web of commits assignable to the branch blead. (Of course, if the web is particularly tangled with merges and branching, it might also qualify by the same means as being on the head of maint-5.10 both then and now. But I can choose an iteration order on branches, and report each commit exactly once on the first position I try it.) And then, for each branch "now", seek out all commits that are a parent of it that are not yet reported. And then, for each branch "then", do likewise. And finally, seek out any orphan commits.

But I wonder - do I actually need two repositories? Because I know that when git itself pulls from the remote, it only transfers the commit objects it doesn't yet have. So is there a way to either do a "dry run" first to get the full list of commit objects? Or a way to determine when commit objects were added to the repository, for example by the time stamp of the file on disk? That way I only need one repository, which feels cleaner.

Or is this already a solved problem? git shortlog isn't the solution, because it groups by author, whereas I want grouping first by branch, and then by time.

This post brought to you by the campaign to give SuperCollider programming the recognition it deserves.

Friday July 31, 2009
01:16 PM

Obama disapproval rating

Mr Obama drank a Bud Light, Mr Gates a Sam Adams Light, Sgt Crowley a Blue Moon, and Mr Biden a non-alcoholic Buckler.

One of these things is not like the other. But I'm not sure which. I initially assumed:

Not Beer <-- Bud Light -- Buckler -- Sam Adams Light -- Blue Moon --> Beer

or even

Bud Light             <-- Not Beer -- Buckler -- Sam Adams Light -- Blue Moon --> Beer

but then it turns out that Buckler is owned by Heineken International, so I'm not sure. Also, whilst I've tried and quite like Sam Adams, I've no idea whether Sam Adams Light is comparable, or vile. And, heck, Blue Moon, it seems, is from Coors, but knows that would damage its credibility, so tries to hide it.

I don't know. There is decent American beer, but why does everyone try hide it?

Thursday July 30, 2009
10:10 AM

this is my receipt for your receipt

So, this morning Elizabeth Sophia Pavlović was officially registered at the Cambridge Registry Office. "'Elizabeth' is a good name", said the registrar, but when she signed the certificate it became obvious that maybe there was a reason why she was biased. :-)

Curiously, we didn't have to do that much data entry as the details had already been sent electronically from The Rosie. The standards for "place of birth" are not quite consistent. She had to look mine up in a ring binder of typewritten pages ("Where is St Pancras now?" - answer, "St Pancras, Camden"), whereas Andrea was simply "Austria", even though we'd said Vienna.

I was quite surprised that they can do accents. Even accents not in ISO-8859-1. Let's see how the rest of the UK's IT infrastructure can cope. However, the registrar explained that accents were important. They've had more than one Polish name registered, but without the accent. The documentation is then sent off to get a Polish passport for the baby, and is rejected, because the name doesn't match - accented letters are not the same as unaccented letters. Austria seems to be more forgiving, but likely in this case it's because it's actually a Croatian surname, ć not being in the German alphabet.

Also, it turns out that "are you married?" is an important question. You might have thought reading out legal disclaimers came in with the F.S.A., but this one dates from 1973. However, she did joke "do you want to get married? I can do you a double." Unlike registering a birth, I don't think that that's free, though.

Next up, a passport.

Wednesday July 29, 2009
09:03 AM

encouraging the development of new inventions

"The one you quote sits firmly under the umbrella of 'the strategic patent'. Generic patents help us build different combinations - i.e.: Humans interacting with machines - to prevent any other companies doing similar things in the long term."

James Whatley, Spinvox's head of social media, as quoted by auntie. What a constructive, innovative thing to be doing - we're not doing this (at least, we claim we're not), but we thought of it first, so we want to be able to stop anyone else figuring out how to actually make it work.