I'm wearing a bacon bra. [PIC]

submitted by Hayley3AM to reddit.com
[link] [40 comments]

Reddit: What's your best bar joke?

submitted by EnglishTraitor to AskReddit
[link] [72 comments]

The mystery of sudden acceleration: "In the 24 cases where driver age was reported or readily inferred, the drivers included those of the ages 60, 61, 63, 66, 68, 71, 72, 72, 77, 79, 83, 85, 89..."

submitted by lar to reddit.com
[link] [72 comments]

What kind of moron lets a child handle an Uzi?

submitted by shenglong to WTF
[link] [194 comments]

I was told "The Golden Compass" bombed at the box office. It made $372 MILLION DOLLARS.

submitted by KazamaSmokers to WTF
[link] [67 comments]

Noam Chomsky answers your questions (Ask Me Anything video interview)

Noam Chomsky answers your questions (Ask Me Anything video interview) submitted by hueypriest to blog
[link] [154 comments]

I DARE you to find something more WTF than this: 3D CGI Centaur gangbang porn (need I really say it? NSFW, obviously)

submitted by ohstrangeone to WTF
[link] [72 comments]

When you walk towards someone and want to pass, but suddenly you both do the mirrored right-left-right evasive maneuver, what do you call that?

submitted by Targ to AskReddit
[link] [301 comments]

The amazing true story of ZeitounAbdulrahman. Zeitoun is the real-life hero of Dave Eggers's new book. In the aftermath of hurricane Katrina he paddled from house to house in a canoe, offering help to his neighbours. For his trouble, he was arrested as a suspected terrorist

submitted by pinkyflower to politics
[link] [76 comments]

How to make money in your spare time (pic)

How to make money in your spare time (pic) submitted by dizzle67 to pics
[link] [24 comments]

There are more than 425 video game characters on this chart

There are more than 425 video game characters on this chart submitted by SolInvictus to gaming
[link] [274 comments]

You have good reason to be apprehensive.

You have good reason to be apprehensive. submitted by greenRiverThriller to pics
[link] [121 comments]

Monsanto was the largest producer of Agent Orange. Monsanto is the maker of Round-up. Monsanto was the maker of Aspartame. Monsanto is now the world’s largest producers of GM (Genetically Modified) seeds in the world. Aside from trying to play God , Monsanto strong-arms farmers

submitted by EdgerErnst to WTF
[link] [120 comments]

A former Scientologist who says she was a "child slave" and alleges she saw a six-year-old boy chained up in a ship's hold is disappointed the Senate has blocked a full inquiry into the religious organisation.

submitted by LuckyBdx4 to worldnews
[link] [130 comments]

You just got Glenn Becked.

You just got Glenn Becked. submitted by sevvie to pics
[link] [58 comments]

Climategate.com shuts down

By Anthony Watts

From the Facebook page of the Climategate.com operator: Climategate is closing down I am very sorry to bring you the news today that climategate.com is shutting down. It started out as a minor little “hour a day” hobby last December after I purchased the domain name, and it turned into a monster of a site, causing me to [...]

Gallup: Americans’ Global Warming Concerns Continue to Drop

By Anthony Watts

Multiple indicators show less concern, more feelings that global warming is exaggerated by Frank Newport, Gallup News PRINCETON, NJ — Gallup’s annual update on Americans’ attitudes toward the environment shows a public that over the last two years has become less worried about the threat of global warming, less convinced that its effects are already happening, and [...]

Another WWF assisted IPCC claim debunked: Amazon more drought resistant than claimed

By Anthony Watts

Via Eurekalert – New study debunks myths about Amazon rain forests – They may be more tolerant of droughts than previously thought (Boston) — A new NASA-funded study has concluded that Amazon rain forests were remarkably unaffected in the face of once-in-a-century drought in 2005, neither dying nor thriving, contrary to a previously published report and [...]

“Shut-eyed Denial”

By John A

A shout-out for a review of Andrew Montford’s “The Hockey Stick Illusion” by Matt Ridley in Prospect Magazine. Andrew Montford’s The Hockey Stick Illusion is one of the best science books in years. It exposes in delicious detail, datum by datum, how a great scientific mistake of immense political weight was perpetrated, defended and camouflaged by [...]

A UHI Tale of Two Cities

By Anthony Watts

By Steven Goddard and Anthony Watts Fort Collins, Colorado is most famous for Balloon Boy, and Boulder, Colorado is most famous for Jon Benet and Ward Churchill. Both are hotbeds of Climate Science, with familiar names like Roger Pielke (Jr. and Sr.) Walt Meier, William Gray, Kevin Trenberth and Mark Sereeze.  Both are of similar size (Boulder [...]

Big G panics

By Anthony Watts

By Harold Ambler A new editorial in Nature is startling for what it reveals, especially the fact Paul Ehrlich is a go-to figure about how hard scientists have it when it comes to media access. Ehrlich is an individual who became an international celebrity by spinning one frightening story after another (about the death [...]

The global economy carbon yin yang

By Anthony Watts

Anybody who has watched the march of jobs overseas already knows this, but it is nice to see science has finally caught up with what we already knew years ago. Look for more of this if a Cap and Trade bill passes in the U.S.. Senator Kerry says it has a “short fuse”. I don’t [...]

Paleo-clamatology

By Anthony Watts

There’s a new article at Nature News where they report on an amazing new paleoclimatology breakthrough with temperature reconstructions using clamshells. The Nature article reports on a  new paper in PNAS from William Patterson at the University of Saskachewan. Here’s a short excerpt: The study used 26 shells obtained from sediment cores taken from an [...]

Spencer: Global Urban Heat Island Effect Study – An Update

By Anthony Watts

by Roy W. Spencer, Ph. D. This is an update to my previous posts [here and here on WUWT] describing a new technique for estimating the average amount of urban heat island (UHI) warming accompanying an increase in population density. The analysis is based upon 4x per day temperature observations [...]

IPCC announces “independent” review

By Anthony Watts

A formal announcement was made in a  press conference made at 12:30PM EST by the IPCC, which is getting press,  for example here. But at the time of this writing, there’s no mention of it whatsoever on the main IPCC web page here: UPDATE: They’ve finally added a mention of the press release, click link to [...]

When the IPCC ‘disappeared’ the Medieval Warm Period

By Anthony Watts

IPCC changed viewpoint on the MWP in 2001 – did this have effect on scientific results? Guest post by Frank Lansner Latest News (hidethedecline) A brief check indicates a “warm MWP-consensus” before IPCC published the Mann hockey stick graph in 2001. But after 2001, results on MWP seems to approach the IPCC [...]

Himalayan Hijinks

By Willis Eschenbach

Guest Post by Willis Eschenbach According to an article in the Hindustan Times by someone for whom English is a second language, I find: Senior scientists at the Wadia Institute of Himalayan Geology (WITG) has rejected the Global Warming Theory and told that the Himalayas are quite safer zone on earth, where Global Warming has no role [...]

Wrong way econometricians

By Anthony Watts

People send me stuff. This one reminds me of a famous wrong way: Hi Anthony Today we had some rumour in the Dutch media due to a paper by a couple of econometricians which projected dramatic warming. Ross McKitrick discovered they had used a wrong dataset; We blogged about here: http://climategate.nl/2010/03/09/four-degrees-warming-in-2050-oops-you-used-the-wrong-dataset/ It would be nice if [...]

Former Apartheid Spy Appointed to Head UN Climate Change Effort

By charles the moderator

From the You Just Can’t Make This Stuff Up Department. [update, yeah the headline is inaccurate, it is simply reflecting the original story headline from BIGGOVERNMENT.com ~ ctm] Former Apartheid Spy Appointed to Head UN Climate Change Effort by Joel [...]

Accuracy of climate station electronic sensors – not the best

By Anthony Watts

Given all of the discussions recently on issues with the surface network, I thought it would be a good idea to present this excellent paper by Lin and Hubbard and what they discovered about the accuracy, calibration and maintenance of the different sensors used in the climatic networks of the USA. Pay particular attention to [...]

Error'd: Nobulation Fail

By Alex Papadimoulis

"Working in IT, I see lots of error messages," writes Eric, "this one, however, was unique. Apparently the computer didn't nobulate quite right..."

 

Jamie S got this while installing the Hudson.

 

"Not sure if they sacked IT Support to cover MP's expenses," Mike Davies writes, "so... is that warn or chilly?"

 

"I found this scrolling across a register at a Starbucks," Craig writes.

 

"It looks like the rangers in Volcanoes National Park left their trivia on the old road somewhere," Rob wrote.

 

"Too many choices?" Craig wonders, "then again, can you really ever have too many choices?"

 

"I found this monitor on Amazon," writes David Elder, "not quite sure how good of a touch-screen it is, though."

 

"I was filling form AR-11 on the US Citizen and Immigration Services website, and then went to submit it," Adarsha writes, "it came back with this request, which was somewhat hard to answer. I hit submit anyway, but then got an error saying 'Null is required'."

 

"I was adding XML comments to my .NET 3.5 project when Visual Studio 2008 gave me this error," Matt "Frito" Alline wrote, "I tried to fix the error by getting everyone to switch over to C#, but that didn't fly with management."

 

"Quite the Zen error message here," George S writes, "but hey, at least there was an emoticon on the error message!"

 


A More Permanent Join

By Lorne Kates

"Half the world's IT people hate our company's guts," Aaron told the HR lady. "For once, can we hire someone from the other half?"

"The last round of consultants didn't hate us," she replied.

"Unbridled hatred is the only reason to inflict Crystal Reports on someone."

"There may have been a few bugs, but your team ironed them out."

"If by 'ironed out', you must mean 'hacked in a usable suite of reports', then yes. But maintenance is taking up too much project time. We need a full-timer to take on some of the workload."

"I'll have the usual placement firm send you a contractor," she said.

"Could I have someone competent instead?"

"I can't approve a new full-time position," she stated. "We just made the Fortune 100 this quarter. We have to take steps to maintain our position."

"By not writing checks?"

"By being prudent. Why should we pay a salary when a contract will suffice?"

Aaron frowned deeply. "Because in both cases, we'll get exactly what we pay for."

Join the Team

Aaron asked for a specialist. HR requested a 'guru'. The placement firm sent Stan, a smiling cotton-swab wrapped in plaid.

They spent some time going over the details of the system. Stan nodded happily, and jotted down three lines of notes.

Aaron checked in on Stan on hour six of his two hour introduction project-- politely ignoring the stack of printouts from the 'Intro to SQL' website on the guru's desk.

"I'm having problems setting up the connection in Crystal Reports," Stan said with a smile.

"The QA reports already have the connection settings," Aaron explained-- again. "Just copy one and use it as a template."

"Alrighty," Stan grinned, and resumed pecking at the keyboard.

As Aaron headed out at the end of the day, Stan flagged him down.

"It's working," Stan beamed, swiveling around the monitor to show off his accomplishment.

The layouts looked right, and selecting various date ranges seemed to pull up the right data. Aaron nodded. It wasn't bad, except…

"StatusID is an INT," he mused, pointing out the column. "I'd like to see the actual status text rather than the enumeration number. You can join to the transaction_status table for that."

"Ok," Stan chirped. "I'll stay late and finish that for you."

"Sounds good," Aaron said, appreciating the work ethic.  

Altered States

"It works, see?" Stan grinned, intercepting Aaron on his way to his desk the next morning.

Sure enough, the report displayed the correct text in the Status field. Aaron conceded that Stan might work out after all.

His optimism was quickly annihilated by the deluge of alerts and errors clogging his inbox.

All of QA's automated data-collection and synchronization processes had failed overnight. They were all throwing variations of the same error; invalid type.

Improperly-typed data occasionally snuck into the data processing queue, but not as catastrophically as this. Plus, if there was a data error-- how had Stan's report worked?

Either every batch process had a fluke error, or…

"Does Crystal Reports do type checking?" Aaron asked his co-worker, using Occam's Razor to pick her brain.

"No."

Crap.

He filtered for Stan's queries in yesterday's logs. At 5:36pm, just before the errors started, he saw:

ALTER TABLE transactions ALTER COLUMN StatusID nvarchar(2000);
UPDATE transactions SET StatusID = 'Disabled' WHERE status = '1';
UPDATE transactions SET StatusID = 'Enabled' WHERE status = '2';
UPDATE transactions SET StatusID = 'On Hold' WHERE status = '3';

And so forth, for each of the 50 status values.

While the database recovery scripts ran, Aaron typed up an incident report, and walked it over to HR.

Dropped and Created

"I'm sorry I let you down," Stan frowned, morosely packing his desk.

"Actually," Aaron replied with a grin, "You were a huge help."

Indeed, the sizable early-termination fee Stan's firm demanded had made HR reevaluate the fiscal benefits of gurus.

That, and now Aaron had an excellent technical competency question for those applying to the newly approved full-time position.


Coded Smorgasbord: In A Rush, Properly Handled, and More

By Alex Papadimoulis

"This code was left by the Senior Software Consultant," Michael Wheeler writes, "I'm not sure if it's insurance against 'Return' not returning... or a comment that explained why the line of code was left in."

Public Shared Function GetItemFromValue(ByVal ddlControl As DropDownList) As Integer
    Dim i As Integer
    If ddlControl.Items.Count > 0 Then
        For i = 0 To ddlControl.Items.Count - 1
            If ddlControl.Items(i).Selected() Then
                Return i
                Exit For     'leaving this here cause we're in a rush
            End If
        Next
    End If
End Function

 

"We're aparantly pretty serious about 'properly' handling exceptions," writes Rami, "very, very serious."

public bool Receive( string FilePath )
{
    try
    {
        return true;
    }
    catch( Exception e )
    {
        ExceptionManager.Publish( e, Priorities.High );
        return false;
    }
}

 

"A nice example of ahead planning," Robert writes, "just in case the Earth's mass dramatically changes overnight, we are prepared for a fast, system-wide adjustment."

Public Function Newton()
    Newton = 9.81
End Function

 

"Some developers use JavaScript for validation, others use server-side code," Rio writes, "we, on the other hand, seem to use comments. It doesn't really validate anything, but hey, it's good."

If fromDate < toDate Then
   'it's good.
Else
   'it's not good.
End If

 

"I was going through some obscure code from the developers before me, and something caught my eye," Philippe wrote. "It was a class whose task was to transform data, and this is how it was instantiated."

Transformer optimusPrime = new Transformer();

 

"Gee thanks," Tobias N. Sasse writes, "that's helpful!"

public long getLength() {
  return 1000000;  // no clue
}

 

"I tried to put some italic tags around a bit of text today," writes Derek, "but somehow, it emboldened my text. I did some digging, and I found that our front-end developer has this in our CSS stylesheet."

i { color: #000; font-weight: bold; font-style: normal; }

 

"I guess the comment header is right," Brian M writes, "no po box for you!"

//*******************
//**
//** Function   - POBox
//** Purpose    - no po box
//**
//*******************
 
function POBox(eobj, eid) 
{

	return (true);
}

 

"So that's how you DeUnicode stuff" David Nguyen wrote, "and here I thought it involved a bit more than removing an italics tag."

function DeUnicode($_input){
  //added to strip out italics tag <i> from name
  $_input = str_replace('<i>', '', $_input);
  $_input = str_replace('</i>', '', $_input);
  return $_input;
}

 


The Single Sign On

By Alex Papadimoulis

“It’s impossible,” Gerald said in a matter-of-fact tone, “simply impossible.”

“Now just so we’re clear,” Craig responded, “by ‘impossible’, you actually mean ‘a big pain in the ass’, but you’re a smart guy who can make it happen, right?” That drew a few chuckles from the handful of other coworkers who joined them in the conference room, but Gerald just sighed. “No, Craig, by impossible, I mean impossible. Not doable. Can’t be done. Im-poss-i-ble. Well I mean, unless you can somehow change the underlying structure of the way everyone communicates on the Internet.”

“But we don’t need to change it for everyone,” Craig jumped in, “just one client. Surely, you can do that!”

The situation at hand was not an uncommon one. Craig, one of the company’s top producing sales reps, had once again sold a client on a feature they did not have. He certainly didn’t lie about having the feature, but instead proposed an offer the client couldn’t refuse: if you buy it, we’ll build it.

Management, not being the type to turn down booked sales, couldn’t refuse the offer either. And thus, they sided with Craig on what ‘impossible’ actually meant. They also assigned Gerald and team to develop the much-needed feature: an IP-based authentication system that would allow users of their Software-as-a-Service product to access the system without ever needing to log in.

Gerald’s main objection with IP authentication was that the majority of users – and in fact, all of the users at the client site – were behind a router. Though they’d certainly each have an internal IP address assigned, they would all share the same public IP, making one computer indistinguishable from the next.

To make matters even more tricky, their application was used by hospitals to track certain kinds of patient data, which meant that HIPAA – the regulatory framework that defines how patient data must be stored and accessed – needed to be followed. And not just followed, but followed, tested, certified, re-certified, and double-tested. Any change to the HIPAA-related functions – authorization included – would need to go through a painful internal and external QA process.

Given the impossibility of getting the end-users internal IP address from the outside, Gerald figured that using cookies would be the next best thing. Have the user log-in once, and then store an authentication cookie on the computer for as long as possible. Sure, that meant clearing cookies would trigger a new login, but it seemed to be a fair and easy work-around. Well, not so much: the client vehemently rejected the idea, saying that their employees couldn’t be bothered with having to remember yet another login, even if only temporarily.

After going back to the drawing board, Gerald came up with another idea: configure the firewall proxy server on the client’s side to add a custom HTTP header (X-Forwarded-For) that included the original IP address. That idea went over just about as well: HTTP headers could be forged, and a malicious employee inside of the company could hack in too easily.

Gerald’s third proposal to the client involved a site-to-site VPN connection. The application server would be exposed access via the client’s internal network, which would not only allow them to use IP authentication, but Windows-integrated authentication as well. It was his best idea yet, and made things that much easier, as the client would be able to configure which username has access instead of which IP address. Unfortunately, the IT folks at the client weren’t a big fan of the approach, as “a VPN connection is inherently insecure.”

At wits end, Gerald came up with yet another idea: a “Single Sign On” approach of sorts. When the end-user would access their application, the system would look for an “authentication ticket” cookie. When not present, the user would be redirected to another server – which lived inside the network – whose sole purpose was to generate a secure authentication ticket that included the private IP address. The ticketing server would then redirect to hosted application, which would then verify the authenticity of the ticket and give the user access.

The client absolutely loved the idea. “This is exactly what we’re looking for,” the client’s project manager said, “no need to remember logins, plus solid security.” The sales contract was signed, and the project was officially a go.

And finally, three months later, the new feature was finished. It took three solid weeks of development time, two weeks of QA testing, several thousand dollars in new hardware, and tens of thousands of dollars for an external HIPAA assessment, but the sales rep and the client’s project manager said it’d be worth it: no more remembering logins. Now, all that was needed for implementation was a list of IP addresses that were allowed to use the computer.

“Hi Gerald,” the client’s project manager wrote in an email, “please provide the following IP with access to the system: 10.1.23.97.”

Gerald confirmed, and reconfirmed: only one user needed access to the system. And apparently, she really hated remembering logins.


CodeSOD: Unit Tested

By Alex Papadimoulis

“I was hired as a ‘best practices consultant’ to help bring a 300-developer company’s development practices into the 21st century,” wrote Ian, “and after six months, I had failed.”

“Our first objective was to introduce automated unit testing. They had all sorts of horribly interconnected code, and the tests would help reduce the fix-here/break-there problems. However, after many, many tutorial sessions with developers, and quite a few long meetings spent trying to convince them of the benefits, no tests emerged. The developers stubbornly held that testers should test code, not them.”

Ian continued, “Adding some teeth to our policies, we set-up a continuous integration server that emailed everyone reports of unit test code coverage. This way, managers could take responsibility for getting their teams to write unit tests. That seemed to do the trick: the number of unit tests and code coverage started to steadily climb on all projects.”

“I finally felt that all my efforts were worthwhile,” he added, “the overall health of the team’s code would now increase immeasurably. Less bugs, less time manual testing, and all that good stuff. And then I started to look at the unit test code.”

public class StaticDataRequestTest {

    @Test
    public void startClientReqest() {

        try {
            new StaticDataRequest().onData(null);
            assertEquals(
                " processing client static data request  ",
                true, 
                true);
        } catch (Exception ex) {
            assertEquals(
                " processing client static data request  ",
                true, 
                true);
        }
    }
}

Ian added, “I guess we got what we asked for.”


Error'd: Verified By Fail

By Alex Papadimoulis

"I've heard about verified by Visa, but this is something new," writes Velmu.

 

"Well then," Simon Timms wrote, "it might take some time to fill in all those arguments."

 

"I guess a 25% price increase is a good reason to be wowed," Steve Frein writes.

 

"I was recording some drums with my keyboard, and all of a sudden this came up," Jonathan Flusser wrote, "apparently it has to do with the Trash, and it's very hard to do!"

 

"I cancelled my free trial," notes Frederick Ding, "but I'd love to be paid $10/month for using 0 MB."

 

"I saw this at a pay station in a parking in Barcelona, Spain," Riccardo Zanussi writes, "I don't know if I really want to put my credit card in this machine."

 

"I found this in a book about iPhone programming," writes Mike Kerley, "the rest of the book seems to have received an equal amount of attention to detail."

 

"At first I thought this was just another way to ask me to enter 1," Nick S. W. noted, "but then it popped up when I entered 1. Is there another integer I'm forgetting about?"

 

Ryan Schlesinger writes, "I went looking for information about the iPhone release for Telus and found this instead."

 

"This left me in a bit of a quandary," wrote Dominic, "to install, or not to install?"

 


More Best of the EmaiL

By Alex Papadimoulis

It's time once again for Share Your Bizarre Email day! mail in or post your favorite emails in the comments. Here's three to get started...


"My company takes safety very seriously," Adam wrote, "and here is a partially illustrative message. What's especially funny about it is that we receive examples and protips like this on a routine basis."

Colleagues,

While on travel last week a member of our staff got up at 3AM to go to the
bathroom. He tripped over a chair and fell into a coffee table, hitting
his head. He suffered a significant head injury and blood loss. He was
taken by ambulance to a local hospital emergency room. He had surgery at
the hospital at his travel site last Thursday. He came home Friday.
Sutures were removed Monday and he is due back to work tomorrow. He is
doing well and in fine spirits.

He and we have done a root cause analysis and make the following
recommendation to travelers: before retiring for the night review the
path to the bathroom in new hotel rooms and move any tripping hazards, if
possible. Further, consider leaving a light on in the bathroom with the
door slightly open or packing a portable night light in travel gear to use
in your hotel room.

Evin L-------
Safety Directory

 

"I work for a firm that is all about getting the most from their employees," Dan wrote.

Hi Dan,

You are correct. There is a discrepancy between the vacation time 
(2 weeks / 80 hours) and the newly-instituted 45-hour workweeks. 
At this time, we are not planning on increasing employee vacation 
benefits, so in order to meet the 45-hour requirement, you will 
need to either:

(a) use an hour from your sick/personal time for each vacation day

(b) work an additional hour for each vacation day

Note that, if you chose to work the extra hour, it must done 
within the same two-week pay period. Also, keep in mind that this 
policy will apply to company holidays as well.

Thank you,

Amber J------------
HR Generalist

 

"This email was sent by one of the company directors," wrote Brett M, "we have a good 300 employees, with 100 or more in IT."

Hi All, 

Yesterday there was a flood which luckily only damaged some ceiling
tiles in the downstairs loos and messed up the wall paint. It could 
potentially have damaged expensive computer equipment and the systems
our business relies on. 

The flood (of clean water from cistern) happened due to a blocked 
toilet so please follow these simple instructions  to avoid it 
happening again. 

1/ From time to time we all need to use a lot of toilet paper. On 
these occaisions use a little paper then flush, then use some more 
and flush. This can be repeated as many times as you need.  

2/ Do not flush anything apart from toilet paper (a little at a 
time) or something which has been eaten first. 

For those considering asking 'how much is a little paper', lets call 
it 12 sheets. 

Any further queries, don't hesitate to ask. 

Gerald F. ---------
Director (VP)

 

"At just about any office," writes Hansel Johnson, "there are some coworkers that you certainly wouldn't mind seeing nude, and subset of those who you certainly wouldn't mind seeing bouncing while nude."

From: Debbie A----
Sent: Wednesday, April 08, 2009 8:51 AM
To: IT_OPS
Subject: Bouncing New Dev in 5 Minutes
 
Please be advised- I will be bouncing Nude in 5 
minutes.   Please let me know if this presents an 
issue.

"I'm sure many in the office would rush to find a trampoline and some lawnchairs, and you can imagine their disappointment upon receiving the following email not more than a minute later..."

From: Debbie A----
Sent: Wednesday, April 08, 2009 8:52 AM
To: IT_OPS
Subject: RE: Bouncing New Dev in 5 Minutes
 
My apologies- Spell Check got me on this one-
 
“I will be bouncing NewDev in 5 minutes!”


CodeSOD: October Road

By Alex Papadimoulis

“Our codebase is a bit... backwards, to say the least,” writes Aaron Silver, “things that should go up don’t go up or down... instead, they’re painted orange .”

“The postProcessAddress address method is a good example of all of this.”


string[] months =
{
 "Jan", "Feb", "Mar", 
 "Apr", "May", "Jun", 
 "Jul", "Aug", "Sep", 
 "Oct", "Nov", "Dec"
};

if (processingClient.StreetAddress != null
  && string.IsNullOrEmpty(processingClient.StreetAddress.Line1))
{
  for (String month : months)
  {
  if (processingClient.StreetAddress.Line1 != null
    && processingClient.StreetAddress.Line1.Contains(month))
  {
    writeError(processingClient,
      errorList,
      "Street address line 1 is in date format ("
        + processingClient.StreetAddress.Line1 + ").");
  }
  if (processingClient.StreetAddress.Line2 != null
    && processingClient.StreetAddress.Line2.Contains(month))
  {
    writeError(processingClient,
      errorList,
      "Street address line 2 is in date format ("
        + processingClient.StreetAddress.Line2 + ").");
  }
  if (processingClient.StreetAddress.Line3 != null
    && processingClient.StreetAddress.Line3.Contains(month))
  {
    writeError(processingClient,
      errorList,
      "Street address line 3 is in date format ("
        + processingClient.StreetAddress.Line3 + ").");
  }
  }
}

Aaron adds, Aaron adds, “I’m not exactly sure what thought process lead to this, but the powers that be aren’t too keen about changing it, leaving our end users to adding random hyphens and spaces for those unfortunate enough to live on ‘October Road’.”


Alex's Soapbox: Patterns of Failure

By Alex Papadimoulis

Not too long ago, I was at a client site, working to understand and improve their development process. From a birds-eye view, their development organization was a lot like many other Corporate IT set-ups: they had a sizable portfolio of proprietary applications that were built for and used by different business groups. Some of these applications were “mission critical” and had highly formalized promotion and deployment processes, while others were ancillary and were hardly ever used. <shameless_plug>This, along with the medley of technologies and platforms, was why they sought our help in managing and automating their development processes with BuildMaster.</shameless_plug>

But as I dug deeper, I noticed that a significant portion of their applications weren’t applications at all. They were – for lack of a better word – “modules” that glommed together to form an ÜberApplication. Completely unrelated business functions – paid time-off tracking and customer mailing list management – lived side-by-side, sharing authorization principals, navigation controls, and even a “business workflow engine.”

Digging even further, I learned that most of these module-applications were derived from a “one-size-fits-all base application” of sorts. For example, the back-end paid time-off system was nothing more than a calendar with a custom UI for manipulating “events” (i.e. PTO requests). The front-end consisted of simply displaying these events to anxious employees who were gladly counting down the remaining days until a vacation from maintaining this amalgamation of a system. Other module-applications were “document managers”, “news posters”, or some other universal sounding name.

The whole thing may as well have been replaced by a pre-alpha version of Sharepoint or Google Docs. It was as if they had tried to build a skyscraper with Erector Sets. And not real Erector Sets, but some poorly-made knock-off.

The developers absolutely hated the ÜberApplication. It took longer to “customize” a template than to build an application from scratch, it was harder to test and deploy, and they never quite fit the business requirements The architect (who was the second successor since the original architect)  despised it as well, and eventually convinced management to ditch it for constructing new applications from scratch.

Sadly, this was not the first time I’ve seen this set-up/architecture. At one of my first jobs, we had something comparable, except much less formalized and much more disorganized. And there are all the examples I’ve shared through The Daily WTF, but this recent experience got me thinking: how exactly do well-intentioned development organizations end up with horrible systems like this?

I See a Pattern Here

We human beings are quite remarkable at recognizing patterns. Take clouds, for example. A cloud dog looks nothing like a real dog, yet no matter how hard we try, once we see the dog in the cloud, that’s all we can see.

While this ability has clear evolutionary advantages, it’s often a disservice in today’s modern world. Pattern recognition yields many false positives, leading towards Gamblers’ Fallacy, prejudice, and can even extend to really poorly-written software.

Now, recognizing patterns at the micro level (i.e., code) is almost always a Good Thing. Code often does repeat itself, and consolidating repetitive code into subroutines tends to help throughout development and especially when it comes to maintenance. The real problem – and the one behind the aforementioned systems – is recognizing patterns at the macro/application level.

A Pattern of Failure

As completely different as Paid Time-Off tracking and Customer Mailing List management may seem on the outside, they do share quite a bit in common.

In fact, if we kept going, the list of similarities between applications would grow much larger than the list of differences. But that doesn’t mean that they’re basically the same thing. Just as our canine friends share an astonishing amount of DNA with us, it’s our differences that make us so unique. The same holds true in software, and forgetting that fact will inevitably lead towards the dreaded Inner-Platform effect.

This is precisely how so many organizations end up with their own ÜberApplication. Consider, for example, that same portfolio of applications I described earlier. At one point, the applications evolved normally: i.e., they were built from scratch following development guidelines to suit the specific needs of the business client. And they looked something like this.

It’s hard to describe that portfolio as anything but chaotic, let alone accept that it’s actually how things should be. Let me repeat that last bit. A disparate application portfolio is a good thing. Proprietary software has a high strategic value to the organization, and building it in a manner that doesn’t meet the requirements largely defeats the purpose.

Still, it’s so easy — and so tempting – to forget that last part. Each new application built felt like reinventing the wheel, especially when they all had some variation of the same components: authentication, authorization, navigation, databases, etc. The rules for each of these applications were vastly different — a simple password required for one application, Active Directory group-based authorization for another — yet the designers had that overwhelming urge to abstract and “simplify” the process of creating new applications. This started at the requirements level by simply mandating that all applications share a universal set of requirements for certain things.

The uniformity was found in the UI: the layout must feature a header, a sidebar, and a footer, but the business customer can pick out the background color. It also was in the form layout: labels should be placed above form fields, and lists should always be sortable. And the database: there was to be a users table, groups table, roles table, etc.

Eventually, the applications started to blend together. Worse, the requirements conversation shifted from “how can we build software to meet these needs” to “how might we adapt the needs to meet our pre-determined requirements.”

Once the universal requirements had been defined, the next logical step was to abstract them into some sort of framework. After all, Duplication Is Evil, and it doesn’t make sense to re-implement the same User-Group-Principal-Role-Task-Operation security in each and every single application. Now, in addition to being uniformly developed, the applications were all dependent upon yet another in-house built codebase: the Global Application Framework. Granted, the GAF was little more than a wrapper on top of a framework (.NET), but somehow, it was perceived to be better.

The leap from here to the ÜberApplication wasn’t far. After all, application metadata was duplicated across several points: source control, server configuration, global navigation, and so on. Removing these points of duplication, along with consolidating all of the applications in one location, brought us to where we started.

Avoiding the Path to Inner Platform

The Road to WTF is almost always paved with good intentions, and there are few intentions more noble than making developers’ lives easier. Of course, given that developers’ lives are pretty easy as is, and there are a whole bunch of companies who build developer products, it’s pretty hard to improve, especially when your development department is just a cog in a large corporate machine. In fact, all too often, the opposite effect happens, and the “innovation” becomes one of the biggest obstacles.

Most of us developers embrace the Don’t Repeat Yourself/Duplication Is Evil principle, and we apply whenever we can to the software we create. But one of the deadliest pitfalls we can make is waving the wand of abstraction too quickly and too broadly, and we often forget that the consequence of unnecessary duplication is far less than the consequence of unnecessary consolidation.


CodeSOD: Injection Proof'd

By Alex Papadimoulis

“When a ‘customer’ of ours needs custom-developed software to suit their business requirements,” Kelly Adams writes, “they can either ‘buy’ the development services from the IT department, or go to an outside vendor. In the latter case, then we’re supposed to approve that the software meets corporate security guidelines.”

“Most of the time, our ‘approval’ is treated as a recommendation, and we end up having to install the application anyway. But recently, they actually listened to us and told the vendor to fix the ‘blatant SQL-injection vulnerabilities’ that we discovered. A few weeks later, when it came time for our second review, we noticed the following as their ‘fix’.”

internal static string FQ(string WhichField)
{
   string expression = "";
   int num2 = Strings.Len(WhichField);
   for (int i = 1; i <= num2; i++)
   {
      string str = Strings.Mid(WhichField, i, 1);
      if (str == "'")
      {
         str = str + "'";
      }
      expression = expression + str;
   }
   return Strings.Trim(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
      Strings.Replace(Strings.Replace(Strings.Replace(Strings.Replace(
         expression, 
            "xp_", "", 1, -1, CompareMethod.Text), 
            "sp_", "", 1, -1, CompareMethod.Text), 
            "--", "-", 1, -1, CompareMethod.Binary), 
            "alter table", "", 1, -1, CompareMethod.Text), 
            "drop table", "", 1, -1, CompareMethod.Text), 
            "create table", "", 1, -1, CompareMethod.Text), 
            "create database", "", 1, -1, CompareMethod.Text), 
            "alter table", "", 1, -1, CompareMethod.Text), 
            "alter column", "", 1, -1, CompareMethod.Text), 
            "drop column", "", 1, -1, CompareMethod.Text), 
            "drop database", "", 1, -1, CompareMethod.Text), 
            "1=1", "", 1, -1, CompareMethod.Text), 
            "union select", "", 1, -1, CompareMethod.Text), 
            "/*", "", 1, -1, CompareMethod.Text), 
            "*/", "", 1, -1, CompareMethod.Text), 
            "boot.ini", "", 1, -1, CompareMethod.Text), 
            "../", "", 1, -1, CompareMethod.Text), 
            "%27", "", 1, -1, CompareMethod.Text), 
            ";dir", "", 1, -1, CompareMethod.Text), 
            "|dir", "", 1, -1, CompareMethod.Text), 
            "<script", "", 1, -1, CompareMethod.Text), 
            "</script>", "", 1, -1, CompareMethod.Text), 
            "language=javascript", "", 1, -1, CompareMethod.Text), 
            "language=\"javascript\"", "", 1, -1, CompareMethod.Text));
}

Kelly adds, “of course this time, when we told them the application was still vulnerable so long that a hacker typed ‘1 = 1’ instead of ‘1=1’, they told us were beeing too picky, and had us install the application anyway.”


Souvenir Potpourri: Salmiak Attack

By Alex Papadimoulis

Ever since the first Free Sticker Week ended back in February '07, I've been sending out WTF Stickers to anyone that mailed me a SASE or a small souvenir. More recently, I've been sending out the coveted TDWTF Mugs for truly awesome souvenirs. Nothing specific; per the instructions page, "anything will do." Well, here goes anything, yet again! (previous: Surprise!).


Finland, I surrender.

Ever since you sent me that vomit-inducing, garbage-infused, ash-like, disgustingly-terrible, and nightmarishly-awful delightful salmiakki two years ago, I've mocked you, your people, and your food every chance I got. You were an easy target, after all. I mean, there's just something seriously sick, twisted, and demented awesome about voluntarily subjecting yourself to that "candy" that smells like foamy bathroom cleaner and tastes even worse delicacy.

I can't say that I wasn't warned. "Do not anger the Finns," a Finlandite once told me, "for they have strange ways and a twisted sense of humor!" Well, it's true. Especially when the Finns are named Pekka and Toni.

"We remembered how 'disappointed' you were when there was no Salmiak products in a care package from Finland," they wrote, "and we decided that we had to undo this injustice that had been inflicted upon you. Thus, we embarked on a quest to gather all Salmiak products available in Finland. After two months spent on this quest, we found about 80 different kinds of this delicacy for you to enjoy." Now in case you're wondering what my reaction upon receiving so much Salmiak was, it was something like this.

Pekka and Toni continued, "although this is still far from the full assortment available in Finland, we believe this might 'satisfy' you for the time being. Bon appétit!"

Normally, I'd estimate that this amount of Salmiak would last me for a lifetime. Several lifetimes, in fact. Well, stellar lifetimes. You know, a good 15-30 billion years or so? But I'm going to try something a little different.

I registered Salmiyuck.com, and will chronicle my adventures in tasting Salmiak. I will of course attempt to get as many (unwitting) tasters as possible. So, here's to Salmiak!

 

 

As if all the Salmiak wasn't enough, Pekka and Toni (Finland) also enclosed "a hands-free appliance which actually needs to be held in hand to operate."

 

And finally, our friends from Finland also gave this "Billiardion (or whatever) dollar note from Africa."

 

Matt Lutton (Brookline, NH) sent some interesting finds from the past.

 

"At the end of 2009," wrote Andreas Reich (Hamburg, Germany), "I returned from a summer of travels, and was about to empty the stuff in my pockets in the trash, but then I remembered there was a guy who will happily take all kinds of souvenirs." This is true, Andreas, especially when the souvenirs are accompanied by a piece of Toblerone. Fun fact: the Holiday Inn key card was completely blank on both sides; no magnetic strip or anything.

 

"Enjoy your status as a new trillionaire," writes Bryan R (Sterling, VA).

 

"Here are some random tradeshow stuff," writes J Schwartz (Boca Raton, FL), "there is a citrus lip balm tube, some small mints, a USB hub (that may or may not be 2.0), a press-up calculator, a mini flashlight, and a weird pen/calculator object."

 

"Here's some stuff from London," wrote Martin Deutsch (London), "including some goodies from the Docklands Light Railway, Custom Haribo from one of our supplies at work, a free lollipop handed out to keep clubbers quiet, and some Ben+JErry's Post-it notes."

 

I'll let Scott Blackard's (Timerlake, NC) note explain, though I'll add ewwwwwwwwwwwwwwwww. That is, unless it's really old and not from like a deer or something. Then I should say, sweeeeeeeeeeeeeet.

 

S Lindehan (Netherlands) sent this Bassie en Adriaan DVD and a picture of a local Dutch church.

 

"I was going to buy an International Reply Coupon," writes Michael Landis (Ramat-Gan, Israel), "but then again, I had these in my pocket."

 

And finally, a small handful of random stuff.

 


Don't forget to snail-mail in your own souvenirs for some TDWTF stickers. Ultra-awesome souvenirs (like, say, steak) could even get you a TDWTF mug.


Problematic Problem, Problem supply, and a Text-Destroying Problem

By Alex Papadimoulis

Problematic Problem (from Ben)
Way back when, I was responsible for doing on-site support for a fairly complex ERP solution that our company sold. My support radius was 100 miles, which meant I was on the road a lot and traveled to places I wasn't all that familiar with. My trusty navigation aide was a compass and a Rand McNally map book. Fancy, online mapping services weren't around yet, let alone super-fancy GPS units.

One day, I was assigned to visit a customer on the far end of my region (99.9999999 miles), first thing in the morning. It meant that, not only would I need to battle rush-hour traffic through the city, but then drive another 60 miles once that cleared. I was not a fan of early mornings, and getting that client on that wintry day meant a 5:30A departure with a 2.5 hour commute.

That morning, traffic was even worse than I anticipated. And to make matters worse, I had a terrible time finding the place. Fortunately, a kind fellow at the gas station pointed me in the right direction, and I was able to ring the client from the nearest pay phone to let them know I was running behind.

When I arrived, everything seemed to be downhill from there. I went to the receptionist, tacked on my visitor badge, headed over to the server room, set my briefcase down, and got to work. Before I could even try logging in, someone walked up to me and said, "hey, I know this isn't really your thing, but I'm desperate, and reeeeaaaallly need some help getting this report for our PM meeting."

It certainly wasn't my thing, but given that I was 30 minutes late, a little goodwill towards helping a company executive could only help. So I followed her to her office and helped troubleshoot the problem. An hour-and-a-half later, we had the report running, no problem. She was thrilled, and I headed back to the server room.

For some reason, I couldn't log-in to the server console, but the generous IT guy helped me past that hurdle by logging in with his credentials. But then I had another problem: I couldn't access any of the servers listed on my sheet. In fact, I couldn't even find a server that looked anything like ours.

I called the IT guy over again and asked him where our ERP server was. He shot a confused look to me, and said that he's pretty sure they don't have an ERP server. I assured him that they did, so he went back and looked into things on his end. Thirty minutes later, he assured me that they absolutely, positively, definitely don't have an ERP server.

We were both utterly confused. And then something dawned on me, and I silently prayed it wasn't true. I pulled out my sheet, showed it to the IT guy, and pointed towards the customer address heading. "That's you guys, right?"

As it turned out, not so much. Our actual customer was down the street, in another un-marked office building.

 

Problem supply (from Brendan)
Working as a coder for a small company that operates worldwide, I was on the team that deployed a project to China. Now I realize that my English is far from perfect, but dealing with Chinese customers in English has been quite the experience. One day, four months after going live with the new system, I received this mail from our Chinese client:

From: Louis Chang
To: Brendan ******
Subject: Problem supply
_____________________________________________________

Hi Brendan,

Sorry disturbing you. There is a problem with supply programme on the
button. Please advice?

Regards,

Lou Chang
 

Ah, the lingo of the busisness... I can imagine that you'd have the faintest idea what he was talking about... but don't worry, neither did I. So I replied to him, hoping to get a better description of his issue:

From: Louis Chang
To: Brendan ******
Subject: RE: Problem supply
_____________________________________________________

Hi Lou,

Could you please state your problem more clearly?

Thanks,
Brendan

I didn't have to wait long for his clarification, as his problem seemed to be really urgent.

From: Louis Chang
To: Brendan ******
Subject: RE: Problem supply
_____________________________________________________

There is a problem
with supply
programme on
the button.
Please advice?

Yup. Much better. Thanks.

 

A Text-Destroying Problem (from Esko Tanakka)
Back in 1999, I was just beginning my career and worked at a small store that built and configured computers for the public. Occasionally, I'd have to answer customer calls and help people with general computing problems.

One day, a man called in and immediately started complaining about how we sell utter crap, that we should take responsibility for our problems, and that he was owed money back because of the problems we caused.

I begged him to calm down and explain specifically what was wrong. He told me that our computer is destroying his text, and that something had to be done. At first, I thought his files were disappearing, but after more investigation, I discovered what his actual problem was: typing text in Microsoft Word overwrote previous text.

I told him that he simply had the INSERT key on, but he insisted that he never pressed that key, and that pressing the key did nothing. Running out of phone-support options, I told him he’d need to bring in his computer. But first, I needed his warranty information.

Well, it turned out that he bought the computer seven years earlier, then had another company install Windows 95 and the Corel Office Suite. After hearing that, I told him that I obviously couldn't take the machine in. That just made him more angry, and he accused me of working for "Satan and his minions", and threw all sorts of other ridiculous insults at me. But then all of a sudden, he calmed down. Apparently, he actually tried pressing the INSERT key (as I asked him to do before), and his computer stopped destroying his text.


CodeSOD: Rendered Pointless

By Alex Papadimoulis

"The mastermind behind our system is the Senior Developer," wrote Daniel, "he's naturally an expert at all things code, but he especially excelled at back-end systems. After all, true geniuses always value function over form."

"The Senior Developer liked to do things a little differently, but we got over his quirks. Take, for example, this handy dandy function to ease the pains of those complicated cast operations we all hate."

   public T Cast<T>(object obj) { return (T)obj; }

"Why?" Daniel added, "so we can write 'someNumber = CastdataObject' instead of 'someNumber = (int)dataObject)'!"

"Of course, the real problems always camein when our super-experienced developer 'optimized' for performance. Because his concept of caching wasn't too strong, we'd often end up with code like this."

public List<OutstandingApproval> GetApprovals(List<Guid> clientList, Guid userId)
{
    List<OutstandingApproval> approvals = new List<OutstandingApproval>(GetApprovalsDAO(clientList));
    System.Web.HttpRuntime.Cache.Insert(userId + "approvals", approvals);
    return approvals;
}

"In addition to inserting but never retrieving from cache, the code uses userId as a cache key... which is nice and all, except that the data is not at all user-specific. But the real inspiration for sending this in is in the webpage optimization. According to the Senior Developer, this tweak reduces the page size, which makes things more optimal all around."

protected override void Render(HtmlTextWriter writer)
{
    using (HtmlTextWriter htmlwriter = 
       new HtmlTextWriter(new StringWriter()))
    {
        base.Render(htmlwriter);
        string html = htmlwriter.InnerWriter.ToString();
        html = Regex.Replace(html, 
          @"(?<=[^])\t{2,}|(?<=[>])\s{2,}(?=[<])|(?<=[>])\s{2,11}(?=[<])|(?=[\n])\s{2,}", 
          string.Empty);
        html = Regex.Replace(html, 
          @"[ \f\r\t\v]?([\n\xFE\xFF/{}[\];,<>*%&|^!~?:=])[\f\r\t\v]?", 
          "$1");
        html = html.Replace(";\n", ";");

        writer.Write(html.Trim());
    }
}

Daniel added, "sure, we could have told him that the regex replacements aren't exactly that fast. We could have also mentioned that the caching enabled in IIS rendered this entirely pointless. But be didn't; he knew he was right, and who were we to question the Senior Developer?


Testing the Path to Pain

By Mark Bowytz

from user'Jinx!' on FlickrTest plan development. Regression analysis. Systems documentation creation. Test case execution. Regression testing.

If you're anything like me, then those words may as well have been boring, tedious, mind-numbing, tiresome, dreary, and the-worst-thing-in-the-world. Sure, they're all important and necessary, but you found out that, due to budgetary constraints, you couldn't personally do any of those things and could only focus on coding, you probably wouldn't complain. Julien G. certainly didn't mind, especially since the "drudge work" would still get done by the overseas team while everyone state-side was fast asleep.

Naturally, many of the other developers were upset that their work was being sent overseas. Emotions ranged from annoyed to absolute outrage, and some were angered to the point of resignation. Eventually, things cooled down and developers bought management's pitch that "the world-class, high-quality engineers" would be good for "synergizing and strategizing the bottom line."

Grouped Together

The offshore developers were split apart into different teams. There was one for infrastructure, one for database and data integrity, and another for working with the application's User Interface. This latter group was the one that Julien worked with.

Their job, in part, was to act as any dull, average customer and regression test the application. If at any point the application crashed or behaved strangely, they were to document the conditions leading up to the crash and send them back to with details of how the problem was recreated.

At first, things were rough. Julien spent many a late night with the offshore team, walking them through their hellishly complex application. But Julien felt it was worthwhile, as it forced him and his group to be more organized and provide more exact specs and concrete test cases. Soon enough, the offshore team was able to jump into the application and provide the right information back to developers, and the developers were sending back recompiled libraries to test with as quickly as possible.

As a result of the growing synergy, productivity was way up, morale was up, and — to the delight of management — the bottom line cost was way down. From all angles, everything looked like puppies and rainbows. That is, until it was time for Offshore Integration Phase 2.

Phasing Fail

With all the initial pains of getting the offshore team trained on using their software, it was time to put their "world-class" engineering skills to use. In addition to running loads of manual regression tests, the offshore team would be responsible for developing automated unit and regression tests. This, of course, meant that they'd need to be given access to the code and set up a testing environment at their location.

Being as large and complex as it was, their application wasn't the type with "run the installer and follow the wizard" installation instructions. In fact, there were 85 steps necessary to complete the installation, ranging from installing the database to editing configuration files. It wasn't all too difficult, as installing the application on a local workstation was often the first task given to newly-hired developers.

Julien sent these instructions to the offshore team and, the following morning, arrived to find a disappointing email.

Hi Julien,
After the program start-up reaches 45%, it quits unexpectedly.
Please confirm that latest code is the most recent.

Regards,
Ravi M.
Implementation and QA Lead
Hyderabad Group Inc. 

After some re-verification, Julien confirmed that he had, in fact, sent the latest code. Just to make sure the install instructions were valid, he spent a good two hours installing the application on a brand-new server. The only thing he could guess was that some third-party component wasn't properly installed, so he sent an email back to Ravi to verify all components.

Hi Julien,
All components installed as per instructions. We followed instructions
three times, each time with a freshly formatted server. 

It still quits when the program start-up reaches 45%. Please advise.

Regards,
Ravi M.
Implementation and QA Lead
Hyderabad Group Inc. 

The email routine continued, each time with the offshore team insisting that every instruction was followed perfectly. After a few weeks, the offshore managers had their weekly conference call with state-side managers and in doing so, accused the developers — specifically Julien — of blocking the offshore team's progress. With things getting heated up, Julien was charged with the task of watching the offshore group perform the install and configuration step-by-step, via a shared desktop across a sluggish network connection... at 3:00AM his time.

Just Following Orders

It was only about 4:30am when Julien was on his third cup of coffee, asking the offshore team to confirm step number 32 of 85 on the install and setup list. Julien was in the midst of wondering how feasible it might be to set up a recording of him saying "un-huh - confirmed' to go off at set intervals when he noticed something amiss in their copy/pasting of environment variables from the setup document.

"Hey guys," Julien jumped in, "did you do anything different this time with the setup? Like right now?"

"No," the offshore engineer responded, "we executed the steps exactly as prescribed."

"Okay, Julien said, "can you scroll back up a little bit in the configuration file?"

The offshore engineer complied and, located near the top, the following code stuck out:

' Environment variable for test provider
' 
set PATH_TO_TST_ENV=Path to the test environment (absolute, such as C:\TestEnv) 

The line was exactly as it had appeared in the setup document — copied verbatim — beneath a heading that read: "Please recreate the application configure file precisely as listed below"

At this point, Julien could have died from shock if he weren't so tired. Baffled, he asked why they didn't substitute the path with the directory they had created in the previous step. "This is what you instructed us to do," the offshore engineer replied, "we followed exactly what was in the documents to avoid making any mistakes."

It was an unfortunate "ah-hah moment" for Julien; not only did the offshore engineer's response explain the issue at hand, but it explained a whole host of otherwise unexplainable and unreproducible bugs. After that day, Julien learned to be a lot more specific and careful with what he wrote. And while his days are no longer filled with running test cases, he's found he spends an awful lot of time testing and "debugging" the test cases, which, somehow, takes several times longer than executing them.


CodeSOD: isValidNumber()

By Alex Papadimoulis

"When my company, a large financial corporation, decided to outsource overseas," Ned wrote, "they went for the best: CMMI Level 5. Not Level 3 or Level 4, but Level 5. 'Heck,' the CTO told us half-jokingly, 'the offshore team will make us look bad!'"

"It's hard to describe the 'high quality' code that gets checked-in to our repositories. 'Bloat' just isn't quite strong enough, nor is 'incredibly horrible mess that makes me want to smash everything in sight'. There were a lot of issues with the code, but this one is my best short examples: isValidNumber()."

    public static boolean isValidNumber(Integer number) {
        methodName = "isValidNumber";
        Logger logger = LoggingHelper.getLogger(LOGGER);
        logger.entering (CLASS, methodName);
         
        // parse this number. If you get an NFE, then its 
        // not valid, return false
        try {
            Integer.parseInt(number.toString());
        } catch(Exception ex) {
            logger.fine(methodName + " returns false");
            logger.fine("Number Format Exception when parsing");
            
            return false; 
        }

        logger.fine(methodName + " returns true");
        logger.exiting(CLASS, methodName); 
        
        return true;      
    }

Ned added, "no, it wasn't broken. No, it didn't produce incorrect results. No, in spite of the programmer’s best effort and it getting invoked literally thousands of times per second under full load, it wasn't really that big of a CPU hit. But it is just hard to understand how anyone could look at this and consider it a job well done. Or for that matter... necessary for it at all."

"At least it's CMMI Level 5 strong, though!"


Lunel on Sunday

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

I left a long gap - sorry folks, too much to do and I kept feeling uninspired about writing. But this morning we walked into Lunel as usual on Sunday. The town is always buzzing - market day, most shops open, cafés full to bursting and friends meeting each other in the street. Mondays are by contrast almost dead.

Our regular routine is to buy vegetables at our friends Christine and Martial Vanvooren's stall (untreated produce from their market garden on the way to Marsillargues) by the Halles, then to get cheese at the magnificent stall in the Halles (maybe also fish, or duck sausage, from other stalls there), then meat at the Halal butcher Encas and bread at one of the central bakeries, after which it's time for our coffee or beer. We almost always end up at the Bar des Sports on the corner opposite the Pescalune statue (see previous post on Lunel).

This morning we met our neighbours there and 6-year-old Rémi was chattering away about his life and his friends - and rushing off to meet them - while his dad Bruno drank a coffee with us en route to their lunchtime engagement. Mum Christine was there in passing, but had already met up with friends in other cafés, so only said a quick hello in passing. And several of their friends stopped to say hi too, so we were well entertained for over half an hour before we set off back through the flower market towards home.

There we found the little drama of the morning - the pompiers (firemen) were there lights flashing rescuing a lady who'd fallen down the steps from the main market and apparently broken her ankle. In France you always call the firemen rather than ambulance first of all for an accident and it's they who are trained in first aid.

Then as we walked back down the avenue des Abrivados I remembered to take a photo of the completely blocked footpath - the Mayor here is very keen on keeping footpaths for pedestrians, but each Sunday as you can see the path by the carpark is occupied by cars to you have to walk in the road, and it's about time someone did something! And for autumn colour nothing beats the pyracantha just along the road from our house!



Bed & breakfast

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

When we came to France we found ourselves in a house with spare bedrooms and we decided to offer B&B. To begin with it was mainly for our UK friends and acquaintances, but in 2007 France passed a law requiring all publicly advertised accommodation to be formally registered. The Lunel Tourist Office noticed our website, and we decided to register rather than remove the details.

It turned out to be a fairly simple process. We were offered the chance to register with accommodation agencies, but decided to remain 'hors label'. So some Tourist Office staff came with a local Councillor whom, as it happened, we knew. M Moysan is a neighbour and the Member responsible for cultural affairs and we'd already met him to discuss music in the town. Apparently they usually bring an elected Member with them, and in this case I think it satisfied a natural curiosity to see how his English neighbours lived, which we well understand. Anyway, we apparently passed with flying colours and duly completed the paperwork. Now we appear in tourist guides and pay the very modest taxe de séjour which helps fund tourist publicity.

Lunel is not crowded with B&Bs - it's not really a tourist town, but a lot of people pass through or find it convenient between Nîmes and Montpellier, hills and sea, vineyards and Camargue. So it's not really surprising that almost immediately people (mostly French) started to phone with requests for rooms. Several were pilgrims, starting from Arles via Saint Gilles and Vauvert towards Montpellier on one of the many routes across France to the shrine at Compostela in north-west Spain. One of these was a young Korean man spending the last of his savings on a life-changing journey having lost job and girlfriend all at once. Others have been people visiting friends and relatives nearby, or coming to a wedding in Lunel, or taking work-related exams which start bright and early in the morning. Just now we have a young man, Gabriel, who is with us 5 nights a week for 3 months while he takes an arduous heavy lorry-driving course; and Theresa, a young Englishwoman, as just left having been over for a fortnight to train French franchise owners how to run a Bagel outlet in a new shopping centre in Montpellier.

We still welcome friends and family from the UK and elsewhere, though visits have tailed off in the past year because of the fall in the value of the pound though we still welcome all who can make it. For the rest we try to cover costs, not really to make a profit. We have other English friends who have run their B&B as a fully-fledged business and have scarcely had a moment to call their own between March and October. We try to balance our life and other commitments here with our efforts to offer a comfortable and enjoyable stay for our paying guests, but in any case our French guests have offered us a glimpse of the country and culture we've joined and an opportunity for us to practise and develop our language skills!

The silence of the bees - Le silence des abeilles?

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

This week 10,000 bee specialists from all over the world have gathered here in the south of France for the 41st Apimondia conference. I hadn't heard of this until our local newspaper published an article today highlighted the event and the work of Vincent Tardieu. He is a French journalist who writes a blog (and has published a book) called L'étrange silence des abeilles, about the often mysterious disappearance or reduction of bee populations. Of course this is deeply worrying because much fruit and vegetable production depends on bee pollination.

As the newspaper says, the problem is that although they disappear by the thousands or millions, nobody really knows why, and Tardieu has attempted to find out through enquiries in the USA, in France and elsewhere. He says: "beekeepers think the problem is pesticides, virologists think it's definitely a virus, some entomoligists think it is a parasite, while other researchers blame some kind of genetic decline or competition with foreign immigrant insects.

One of these is the Japanese hornet (voir aussi article en français), a fearsome beast 5 cm long with a violent sting and no natural predators. As a wasp-hater since childhood I'm particularly worried about these because their huge nests have been spotted in the south west of France. Apparently they kill ordinary honey bees by hovering outside their hives and decapitating the workers as they pass. Ugh!

The article refers to the industrial-scale pollination practised in the USA with huge trailers of beehives being towed round orchards from Florida to California. There, bees are disappearing though nobody has found carpets of corpses. In a murder mystery, it goes on, if there are no corpses then there isn't a mass murderer, but Tardieu is convinced that reductions in bee population are due to a cocktail of ills, parasites and chemicals which threatens their very survival. He ends "these extraordinary insects preserve our delight in food and in the beauty and diversity of the countryside, so keeping them alive is very much our business."

Two footnotes. Our friends Christine and Martial Vanvooren who have a market garden here in Lunel use other insects to pollinate their crops inside poly-tunnels - this is obviously practicable if you have an enclosed space but not in the open. And I was relieved to discover that grape flowers are pollinated by wind so it seems our wine supplies will survive threats to the bee population.

Wirksworth to the fore

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

As I write, the Wirksworth Festival is about to start and the latest issue of Community Fayre has just arrived in the post. Those who thought this blog would be about our life in France need to adjust their sets, but only slightly - it is about our life, and occasionally that will include our life before France, including 27 years in Wirksworth, the little Derbyshire town that still means a lot to us. Among other things we still have family and friends there.

Community Fayre is the community newspaper. It has just reached its 150th edition and is full of interest for those like us who have Wirksworth connections. Apart from the Festival, of which more below, it has articles on Elliott Rennie promoting his Ellympics (slow motion sprint, paper plane javelin and invisible curling) from the 4th plinth in Trafalgar Square - Elliott is son of our architect friends Rosie and Graham and also a colleague 'cellist of Mary's in the community orchestra (a genuinely inclusive musical group that's been going for many years).

The word community appears a lot in Wirksworth life, and there it is not an empty word. Long before we arrived there Anthony Gell School had been a beacon for town activity as well as secondary education, and for a time the whole of Derbyshire imitated Wirksworth's Community Education Council. The Town Council supported community efforts, as it doubtless still does, despite its own slender resources. (We have often bemoaned the way English local government takes away funds from local initiative whereas the French commune system leaves even small towns and villages with much more local control). The paper, the orchestra, the twinning with Die, the festival and much more sprang from this sense of sharing resources and working together. Small as the town is, it punches well above its weight.

The Festival has become a real artistic beacon, both in performances of all kinds and through visual arts - the Art & Architecture Trail is extraordinary, preceded only at the beginning by a few events in much larger places like Brighton, and both visual arts and music have both retained a local element as well as attracting talent from much further afield. It will, undoubtedly, be a great success, and we are proud of all our friends including the current Chair Bill Lounds who put so much effort into making it so.

Community Fayre this time is full of nostalgic memories and touching reminders of old friends - the Sam Taylor award set up by his parents Judie and Paul and brother Tim in his memory (he was killed in a road accident 11 years ago) for an outstanding pupil at the secondary school; our old neighbour Lester Simpson who has brought his huge musical talent into the life of the town, a memory of Ken Wilson who died this year and helped our sons among many others in Wirksworth Cricket Club, Lee Bowyer from our son Sam's year in school now following in his father's footsteps in the family paving and aggregates business. It also recalls the beginnings of Community Fayre itself in the early 80s, shortly after we arrived in Wirksworth. For those of us who have lived there it's a proud product of a real town community.

We can and do keep in touch with those, friends and family, who are still alive and well and living in Wirksworth, so there is special poignancy in remembering some of those who have died. Some of them are mentioned above, and other special friends included Mike Pegg who shared my enthusiasm for wine and passed on to me his home-made wine racks; Maggie Riddle whose friendship reinforced our involvement in twinning and our developing interest in living in France; and Peter Hoon, whose lovely black and white prints of Wirksworth were so often Christmas cards or little gifts we still treasure. His widow Jenny is curating an exhibition of them in the Festival this year, and I have used some to illustrate this post.

French Quakers

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

I was brought up a Quaker (member of the Society of Friends), worked for many years in the British Quaker headquarters and, although I'm no longer a member I still have sympathy with Quaker principles and admiration for many Quakers. Long before we came to live in France I also knew that there was a place called Congénies, the original seat of the French Société des Amis but I had no idea that it was just along the road from Lunel and that the old 19th century building had been restored as an active Meeting House. We quickly made contact with local Friends.

The origins of French Quakerism are romantic, told in full on the Congénies website where you can also find details of current activities. In brief the original group was part of the widespread protestant dissent in the Cevennes in the early part of the 17th century, but unlike many other such groups which fought a guerilla campaign against government forces, this group was pacifist. So in a sense the French group predated the birth of British Quakerism in the 1650s. But because of language barriers (at that time they spoke Occitan, not French) and poor communications, the French group did not learn about or identify with Quakers elsewhere for over a century.

But they did eventually become Friends or Quakers in name. Even now the Society in France is very small, with only around 500 adherents, and apart from a Centre in Paris, the Meeting House Congénies is their main building. We found we had friends in the Meeting already and we soon began to attend Meeting from time to time and to help out with the considerable job of running the Congénies Centre and its activities.

Just as churches in England are charities, so here they are associations. But religious associations are complicated here, and it has been interesting for us as sympathisers but not members to find that there is a role for us in the 'lay' association which has to exist to run nonreligious Quaker activities (upkeep and letting of the Meeting House for instance) alongside the 'church' or religious association (which has its own Law of 1905). In such a small group people are of course glad of any help they can get but it is at least a comfort to me that, thanks to this strict separation of the secular and the religious in the French state, there is a natural place for someone like me who no longer believes in a religious sense but who is a sympathiser.

Further information about Quakers on these sites - France, Britain. These sites and the Congénies one above have links to further sites.

La vie associative

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

I've just met a British man who has lived in northern France for a few years and is gradually improving his French. Like me he finds this hard work, and nowhere more so than in meetings - also like me he had spent years training people to run meetings well and in the end he has given up the struggle of going, and with it given up some of the friendly contacts you make through belonging to local associations.

In France associations are part of everyday life and, like many British clubs, an ideal way of finding social life, so many expats in France join them and find themselves involved in the unique French meeting. In the UK these are usually relatively orderly affairs in which there is a Chair(person) steering the business, a secretary taking minutes, and a written agenda. I have never encountered the latter in France, and almost all the meetings I've been to have taken place in a constant buzz of talk, after the long flurry of bises and handshakes at the start. Since even French people find it difficult to hear what's being said, it's no wonder foreigners feel left out if they are uncertain of their French.

In England, we both spent much of our lives working in voluntary organisations, at different times as paid workers and as volunteers. I spent most of my working life employed to improve the voluntary sector, so I'd tried to understand how the 'voluntary sector' worked in France, without much success. Some years ago a French friend used the expressive phrase le tissu associatif to describe the voluntary sector in France, but it was only after our move that I discovered how important the association is to everyday life here. The idea that people should be able to band together to do things for mutual and/or community benefit is at the root of the modern state: the right to form associations is enshrined in the law of 1901 which everyone knows about.

Of course many people belong to clubs and societies in the UK, but many of these are not really seen as part of the voluntary sector. Here everything from sports clubs to arts festivals, small local choirs to national charities, environmental organisations and campaigning groups are Associations Loi de 1901. They have a status in and alongside every commune and alongside the local and national state and commercial sectors. And they have advantages in exemption from taxation and in access to local communal resources, meeting rooms and so on. Above all they are in most people's minds as part of everyday life, whereas in the UK many people who belong to clubs don't really think of the voluntary sector or know what it is.

Because the association is such an engrained part of French life people here do jobs as part of the bureau (committee) of the association, and presumably enjoy the even more frequent meetings involved! Otherwise France and England are nearer when it comes to willingness to volunteer - never enough pairs of hands for some jobs, some members who are content to enjoy the group activity but don't offer to help out, and plenty of people who'd never think of doing work without pay. However, I think the UK is a long way ahead in organising volunteers through local volunteer bureaux and I think in training programmes and so on. (committee) of their favourite

I think la vie associative is a healthy and positive part of French life and we really enjoy our voluntary work here - I just wish meetings were less chaotic!

Why Lunel?

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

This was the question we were asked often by French friends when we first arrived in France, and are still asked at regular intervals by French and English friends and acquaintances alike. We've been here over 2 years now and have no cause to regret our decision, so I thought we should try and explain both our reasons and the varied motives of the questioners!P

We started to come to France regularly in the early 90s following the twinning of our UK town Wirksworth with Die in the Drôme. After numerous visits we decided we'd like to live in the south of France when we retired, but that we'd prefer open skies to mountains. Unlike many people we know, we also wanted to live in a town with services we could walk to, not a remote village to and from which we'd have to drive to get food or medical attention. We wanted a fairly modern house, not one we'd have to restore or maintain a lot.P

Some of the French people we met found our decision to live in a place with a fairly high north African population hard to understand, but our experience of London, Nottingham and the UK in general had accustomed us to multi-cultural populations. Lunel has a mosque, some halal butchers and you often hear Arabic spoken in the streets and cafés. In many ways though, the more traditional culture - Occitan influences, everything connected with bulls and horses, the Spanish influence - seemed more unusual to us, but we have been fascinated to discover it all.P

For others, whether French or English, it is our choice of a comparatively urban setting that has been difficult to understand. This is of course just a matter of taste, but while we admire the beautiful rural retreats of many of our friends, we have already had many occasions to be thankful for the convenience of medical services at hand, and get more exercise walking or cycling around town every day than I think we would driving everywhere. We also know people who have struggled in emergencies through their relative isolation, and we wonder if in 20 years' time lifestyles which depend on cars will be sustainable, let alone environmentally sound.

Lunel is not a smart town, and many of our friends have I think consciously chosen prettier surroundings or more attractive local markets and shops. But this is a functional town, much of it quite old if still rather down-at-heel, growing fast and so with life and resources even in a recession, and new resources like the Médiatheque about to open on our doorstep. It's convenient for 2 (you could argue 3 or 4) airports, the Autoroute and the railway. But most of all, in a short time it has become home and we have good friends and neighbours here. No regrets, in other words.
P
The symbol of the town is the man fishing in the canal, the Pescalune. Only people born and bred here can describe themselves as 'pescalune', while we incomers are known as Lunellois. But I like to describe myself now as 'presquelune', hopefully becoming more identified with the town as the years go by!

Music outdoors

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

Each 22 June is the Fête de la Musique in France. All over the country, in halls and theatres and most of all outside there is music of all kinds. I was spoilt for choice of photos of this year's offerings in Lunel and in the end chose the South Highland Pipers, a versatile crew who did not only Scottish but Irish numbers with appropriate changes of instrument. Now, as I write, it's the Lunel Jazz Festival with 4 evenings of late concerts under the trees in the park.
P
All through the summer in the south of France there are outdoor concerts. When we were in England we went to a few, notably a performance of Don Giovanni in the beautiful gardens of Tissington Manor. Indeed there are opera companies which specialise in outdoor performances - but they have to be prepared for rain. When we went, with our French friend Françoise on her first ever visit to England, we took a picnic (bubbly, smoked salmon etc.) which we ate under umbrellas with 100 or so others in the rain, and Françoise was already amazed; but when the performance started it poured down at least twice and the musicians had to stop and scurry for cover, while we sat in soggy rows, umbrellas deluging water each into 2 neighbours' laps. Then we left, before the opera was finished, and we heard afterwards that they had sung the final arias huddled undeer a little hut which was the only covered part of the set. Judging from the weather reports from the UK this year people will not have had an easier time.
P
The French experience is much more reliable, apparently. Thank goodness, because people pay mega-euros to watch grand opera in the Roman theatre in Orange or in the courtyard of the Palais des Papes in Aix-en-Provence (as we did a couple of years ago to hear our all-time-favourite Marriage of Figaro). There is an odd performance cancelled because of a thunderstorm, but usually the rain stays away and the warm late evenings are ideal for sitting and listening. And although the acoustics are variable, and amplification almost essential even for classical music, and although insects sometimes home in on the bright lights to plague audiences and performers, it's preferable to the stuffy interiors of concert halls in a hot summer. A few weeks ago we went to 2 indoor concerts here in Lunel - the Cheltenham Ladies College choir and string orchestra, and the Bucks County Youth Orchestra. They were in the Salle Georges Brassens, an impressively refurbished concert hall, and it was comfortably cool, but the sound of the air conditioning did not add to the enjoyment of the music!
P
The only slight blip in our enjoyment of the jazz this week has been the appearance of one of the local policemen ejecting people from the small patches of grass where they were sitting, near the main seating. We had our chairs on the paths, which was fine, but it seemed to be unnecessarily officious. His colleagues strolled by without commenting or intervening, it was just him!
P
Now we look forward to the start of the new season of music with rehearsals of our choir Crème Franglaise and then at the end of October the (definitely indoor) Mandoline Festival, almost unique in the world and with music of terrific quality and variety.

Wine

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

It's time I wrote about wine on this blog. It's one of the reasons we are in France, and a continual interest and pleasure. There is plenty about it on our website too but this adds another dimension.
P

Living in England we enjoyed the benefits of an international wine market - plenty of choice from Europe, but also from the Americas, South Africa, Australia and New Zealand. Also the supermarkets took (still do take I think) their wine buying seriously, employing reputable experts to select their wines, and we could always select with the aid of tasting columns in the weekend papers and of websites like Tom Cannavan's excellent Wine Pages. And in Wirksworth we had a wine tasting circle which met regularly over many years, a group of friends who enjoyed evenings together but also explored different kinds of wines - grape varieties, countries, supermarket favourites and so on.

All the time (since the early 1990s) we'd been coming to France and visiting vineyards. The photo shows me recently in one of the first I ever visited, Cave Didier Cornillon in Wirksworth's twinned area of the Diois (a group of communes around the town of Die in the Drôme départment). The pictures in the background are by our artist friend Ali Benyahya who lives nearby and is building his gallery next to Didier's caveau.
P
To begin with on holidays we explored the Die area and its delicious sparkling Clairette de Die, and so met Didier soon after he had branched out on his own from the cave coopérative in the area (now known as Jaillance, with an output of 6 million bottles of bubbly a year and an impressive website - take a look). Didier has also prospered, making an impressive range of still wines as well as Clairette and, for a few years now, also running a good winery in Tunisia. Then we branched out down the nearby Rhône Valley, into Provence and the Languedoc, and of course we could not resist calling in on Bourgogne, Beaujolais, the Loire Valley and indeed Champagne on our journeys to and from England.
P
The contrasts with the UK are striking. Although wine is much more part of everyday life for many French people, most only know the wines of their own region. Exclude Champagne from that - everyone drinks it on festive occasions. Maybe people buy Bordeaux reds on special occasions. But to find people in the Languedoc who know or drink Beaujolais, Bourgogne, Alsace or Loire wines or even Côtes du Rhône, still less know which grapes are used for what, is fairly rare. And as for overseas wines, you find very few on sale and fewer French people who know anything at all about them. It was a real surprise to find a local vigneron who had been a consultant in Uruguay and was full of praise for South American wines - but admitted that the experiment of importing them to sell here had failed.

So I've had the pleasure of being accepted quite quickly as someone who 'knows about wine' among French friends, and as a result have extended my researches through introductions to some of the fairly numerous family members and friends of friends who are in the wine business. We have so much to explore still in France - the south-west, the Jura and Alsace, and the whole of Bordeaux - and within driving distance into Spain and Italy too, although we have started to discover the diverse wines and unusual grape varieties of north-east Italy near to the Slovenian border, which are hardly known in England let alone here in France! And we're hoping to develop a regular wine tasting circle here too.

Road safety

By norths@mnjenfrance.eu (Jon & Mary in Lunel)


British people often say it must be hard to drive on the other side of the road, but of course when you move to another country you get used to it after a bit, and we'd already had plenty of practice on holiday. But there are certainly differences between French driving and British - motorways/Autoroutes less crowded, more hair-raising overtaking, even less reliable signalling on or near roundabouts for example.

A few months ago in The Connexion, an English-language monthly for ex-pats I'd recommend to anyone, someone wrote to suggest the paper did an article about bad French driving. The editor rather weakly replied that it was not their job to offend the French. Well, I don't want to do that either, but I did wonder whether there was any substance in the the idea that things were worse here. So I looked up road accident stats (not straightforward, but official websites yielded the answers in the end) and this graph showing road deaths is the result. In 2002 before President Chirac started government initiatives against drink driving and speeding, in countries of almost identical populations, well over twice as many people were killed on French roads each year; even now British road deaths are over 40% lower than here. Injuries seem to follow the relative figures. Official publications say the problems are still mainly too much speed and too much drink, and take very seriously the target of reducing accidents. France is not the worst country in Europe - Ireland is about the same and Portugal much worse, for example - but as French residents now we shall certainly take extra care, and try not to resent the increase in speed cameras!
P
When we arrived here I decided I should know what the equivalent of our Highway Code said. The Code de la route turns out to be a clear, thorough and I think impressive document, well-illustrated and informative: I don't think the British counterpart has for example a description and explanation of ABS brakes. There are some interesting differences - for example single yellow lines in France mean you can neither unload nor park, dotted that you can unload but not park. In a country addicted to fresh bread there are numerous 'arrêt minute' areas where you can hop out to get your baguette at the boulangerie but otherwise, the Code says, dashing into the bakers is parking (stationnement) and not a simple arrêt. While I'm on about French road rules, a very useful one to remember is that 50 km/h (roughly 30 mph) speed limits start automatically when you see the town or village sign (black on white edged in red). That is one reason for the often useful 'you are now leaving such and such a place' signs (no red and with a diagonal line through the place name) - it also signals the cancellation of the town speed limit. For dozy drivers and map readers it's also a handy revision tool - as in 'where the hell are we now - never mind I'll check on the way out'. I've written about this on our website too.
P
So despite my wish for scrupulous fairness I think there is some reason to be wary of other drivers on French roads, and particularly never to try and guess which way they will head on roundabouts (something my French friends also complain about a lot). And it does really seem as if, however fast you are driving, there's always someone behind you wanting to go faster. Never mind, it could be worse - according to a French govt publication it's far more dangerous on the roads almost anywhere in eastern Europe or even in Portugal!

Friendly French

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

This week Mary went to a committee meeting. As in most organisations, whether choirs, churches, sports clubs or whatever, people often rely on them and their meetings for social contact and mutual support. In this case people were feeling upset and perhaps guilty because a member had sadly and unexpectedly died and they wondered if they had done enough, whether they could have helped more and so on. But in the course of conversation it turned out that the person in whose house the meeting took place lived only 3 plots away from another active member, but neither had any idea that the other was a neighbour.

This would not I think happen in our street. When we arrived in late 2006 three neighbours were in the road welcoming us ten minutes after we'd arrived, and we've experienced unfailing friendship and support from our neighbours ever since. We live in a cul de sac (which by the way is technically a French expression but is hardly ever used for a dead-end road - un impasse or voie sans issue on road signs) in which all the houses are fairly close together, and people tend to know what's going on nearby. English friends in towns and villages nearby confirm that neighbours are equally friendly and act as an informal neighbourhood watch!

But there's one feature of French life which is different from what we are used to in England. Both the letterbox and the doorbell are at the front gate, not at the front door of the house. Obviously this makes life easier for post-people and other deliveries. Among other things they don't have to risk life and limb if there are dogs in the front yard. But when someone comes to your house, unless they know you well they ring the bell and wait in the street. Given that many French homes have large solid gates and high walls or hedges, you've no idea if anyone is in or not, especially if the front garden is large. In the case of our committee friend who had not realised who were her neighbours, she lives in an area with large plots round each house and far enough from the centre of town that people use their cars all the time rather than walk, so it's not surprising that she hadn't bumped into them in the street.

When we came to France we carried in our minds somewhere the myth that French people are more private and discrete than English people. We have not found this at all - indeed we've been overwhelmed by kindness and warmth on all sides - and we've also found a similar myth here about how 'the English' are back in the UK. It all confirms us in the resolution we made early on not to generalise about 'the French', but at the same time you realise that simple things like the placing of letter-boxes and doorbells makes a difference to everyone's view of privacy.

There is one final thing - if you know roughly where someone lives but have forgotten the exact address, the letterbox usually gives you a clue - you are supposed to put your name on it. Indeed, when we first came to live in France and borrowed a friend's house for a few weeks, the post woman took back mail addressed to us at first because we'd forgotten to add our name to our friend's letterbox!

Language

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

We've just finished a season of French conversation classes. Well, classes is a bit of an exaggeration - mornings of exploration followed by great lunches more like. It's over two years since we discovered the RERS (Réseau d'Echanges Réciproques des Savoirs) network. This is a national network of associations for the free exchange of information all over France. Its local branch around the town of Sommières a few km north of here has over 140 members.

We'd been searching for French lessons, and Quaker friends suggested we try the Tuesday morning sessions of RERS in Calade, a social centre in Sommières. We discovered a vast echo-ey building (an old school, which like many ex-schools in the UK is well-adapted to adult education, but not to multiple groups of loud pupils and loud teachers competing in close proximity to share their limited knowledge of foreign languages), and soon decided to meet in people's houses instead. Mary and I had steered clear of purely British groups like Britsnîmes (a very popular English-speaking association based around Nîmes - lots of French people like it too) because we wanted to prioritise learning French rather than meeting other Brits. We do this anyway in RERS...

Initially, the conversation group was for English-speakers (British people, a couple of Danes, a couples of Swedes, a German person or two) to brush up their French for an hour from 10-11. Then French speakers who liked to learn English started to arrive at 11 to have an hour's English conversation. Soon, the English conversation became serious enough that Mary began a separate Monday evening group - suitable for people who work as well as us retired folk - here in Lunel: this now has a dozen members, and is very successful. But we still have the Tuesday So now, each week except in August, a group of 15-20 meets in someone's house to converse in French for 2 hours, and in English from 11 on, followed by a shared lunch (delicious and varied - surprisingly there is usually enough of everything and rarely too much of anything).

This only describes a fraction of the activities of RERS, of which more anon. But it has been the start of some wonderful friendships for us as well as helping us improve our French.

Cycling

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

This is a good weekend to write about cycling as the Tour de France reaches its climax. Since we've come to Lunel our bikes have come into their own - nice flat countryside after the serious hills of Derbyshire. We often use our bikes for gentle trips into town, and Jon rides around the local countryside in search of old roads, nice views and good photos. Lunel itself has made some efforts to accommodate cyclists, with green lines on pavements here and there, but these seem to lead to places you don't want to go to, or to peter out or include serious bumps over kerbs that are not really adapted. So I've joined Lunel à Vélo, which is a combination of social cycling group and campaigning organisation. You can see their blog at http://lunelavelo.over-blog.fr/

Cycling is a passion for many in France, and there are few fine weekends when you don't find parties of lycra-clad cyclists pedalling the roads into the Cevennes. That is far more sporting than we, or I think the average Lunel à Vélo members, are. The Tour of course is at another level altogether. Two years ago (amid drug scandals which have frequently marred the race) it passed the end of our road here, and my main memory is of 2 hours of wierdly-shaped publicity vehicles and then two groups of cyclists, two pelotons (the word comes from the same root as platoon) flashed by. This year we have watched most of it on the television, to begin with with curiosity, but with increasing admiration and sense of suspense.

There are some who say that the whole race is bound to be riddled with drugs - how can we know, although there are random tests? But the sheer power and endurance of riders who can ride over 150 km most days for 3 weeks at speeds averaging nearly 50 km/h (30 mph in old money) is awesome, and we have cheered the heroism of the American many times former winner Lance Armstrong who has returned this year after several years recovering from cancer and retained his third place with the most formidable climbs. We have admired the transition of Bradley Wiggins from Olympic track gold medallist to successful Tour rider who found reserves of strength to hang on to 4th place on Mont Ventoux; the amazing and talented Schleck brothers whose performances credit the tiny country of Luxembourg; and the sheer brilliant speed of the Manx Mark Cavendish who bursts through to win more stage than anyone else and hopes to do the same on the Champs Elysées tomorrow. We admire the supreme talent of the winner Contador. And we admire the teamwork of those whos pace-making and sheltering from the wind enables each of these stars to achieve what they do.

Weather

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

The British are supposed to talk about the weather more than most, but we've found our French acquain- tances pretty adept at it! We moved here for the 300+ days of sunshine a year you get in the 'banana' along the Languedoc coast of the Med, even when it is stormy and cloudy over the Cevennes inland. Like today for instance, with a clear lue sky and temperature already 26° at 9 in the morning. One of the few things I remember from our geography teacher Barney Jacob, who had catch-phrases including 'med typ clim' (for Mediterranean-type climate) which we have now learnt means weather like this. Not really surprising when I think about it!

On clear days like today the wind comes either from the north or north-west - Mistral or Tramontane - and the humidity drops well below 50%, so washing dries quickly but you have to water the plants more (and it's never really enough - lots of people have automatic watering systems here). The northerly wind can be quite violent (common motorway sign - VENT VIOLENT SOYEZ PRUDENTS) but usually it's just a pleasant cooling breeze in summer. On the frequent bright winter days it's another matter, positively cold.

Then quite suddenly the wind will switch - anywhere from easterly through southerly to westerly brings humidity and cloud from the sea and just sometimes rain. When it rains it rains. 15-25 mm in an hour is not uncommon, and we once had 50 mm. Naturally the drains cannot cope and if you go out you wade through lakes.

Lunel is prone to flooding, but luckily we are on the good side of town, 11 m above sea level as opposed to 9 on the east side where houses are regularly flooded. This comes partly from flash floods from storms here and partly from the river Vidourle which runs about a km east of the town and brings the accumulated storm waters from the Cevennes. It is one of the most notorious rivers in France for flooding, and the town of Sommières a few km upstream has terrible floods once every 20-30 years, with perhaps 2-3 metres of water reaching up to the first floors of houses in the town centre. Stories of large fish in people's bedrooms are commonplace. This is not new - at the Roman site of Ambrussum on the river between here and Sommières excavations have revealed buildings destroyed by floods and rebuilt each time a little higher above the river at 25 year intervals 2000 years ago. Rivers in France have genders - Le Rhône, La Loire - but Le Vidourle is considered by locals to be almost god-like and so above gender, just Vidourle.

Oh yes, and we sometimes have snow, but not for long!

Le Pic Saint Loup

By norths@mnjenfrance.eu (Jon & Mary in Lunel)

Living as we do in the flat lands near the Mediterranean coast of the eastern Languedoc, the dramatic southern outpost of the Cevennes, the twin outcrops of the Pic Saint Loup and l'Hortus, are visible almost everywhere. Near the coast you see them on clear mornings by the Canal du Rhône à Sète, crouching on the horizon across the wild marshy country of l'Etang d'Or, the grander hills of the true Cevennes just visible beyond.

A little further north, in the vineyards just above Lunel and from the nearby A9 Autoroute, they provide a backdrop and hint at the great wines produced in their shadow.
But you begin to get a sense of the drama of the Pic, l'Hortus and the valley between as you drive west out of Sommières on the D1 through St Matthieu de Treviers towards the pretty and tortuous village of Notre Dame de Londres. All along the road are glimpses of the twin peaks.



Then suddenly you are much closer. The names of famous vineyards of the Pic Saint Loup appellation (still part of the overall Languedoc one, but the vignerons there relegate that to the small print) line the road and you find yourself dramatically between the rocks. They are hard to capture in photographs - trees and nearer hills keep obscuring the view, but here are a couple of pictures which make the link to the all-important vineyards.


Sarkozy and Brown attack US deal

Nicolas Sarkozy and Gordon Brown criticise the US for "protectionism" over an aerospace deal after talks in London.

Vauxhall gets UK loans guarantee

Business Secretary Lord Mandelson announces a 300m euro (£270m) loan guarantee for Vauxhall and Opel, the European arm of General Motors.

Third blast rocks Pakistani city

A third explosion rocks the east Pakistan city of Lahore, hours after suicide bombers kill at least 45 people and injure 100.

No expenses charge for baroness

Labour peer Baroness Uddin says she is "relieved" after being told she will not be prosecuted over her expenses.

BA union announces strike dates

BA cabin crew will go on strike for three days from 20 March and for four days from 27 March in a dispute over pay and staff levels.

Safari update cages numerous security bugs

Code inject and info flaws fixed

Apple published an update of its Safari browser on Thursday that plugs 16 security vulnerabilities.…

The power of collaboration within unified communications

Brown sorry for Hull duo's fracas

Hull manager Phil Brown apologises to the Women's Institute who witness a row between players Nicky Barmby and Jimmy Bullard.

BNP teachers will not be banned

Members of the BNP or any group that might promote racism will not be banned from teaching in England, the government says.

Ex-Tory Euro MP joining Lib Dems

A long-serving Conservative MEP, expelled in a row over the party's new allies in Europe, has joined the Liberal Democrats.

Arrest over Susan Boyle break-in

A 16-year-old is arrested and charged in connection with a break-in at singer Susan Boyle's home in West Lothian.

IPL under way amid security fears

The third season of the Indian Premier League cricket tournament is under way amid heavy security in Mumbai.

Cheese rolls off the menu! Event cancelled due to crowd concerns

The annual cheese-rolling event at Cooper's Hill in Gloucestershire is cancelled due to concerns about crowd safety.

Plea to parents over grass fires

Fire officers are appealing to parents to help prevent children from starting grass fires following hundreds of calls to incidents.

Pope defends celibacy of priests

Pope Benedict XVI defends celibacy for Catholic priests, amid a new controversy about child sex abuse in Germany.

Body of James Brown disappears from family tomb

The hardest working corpse in show business

The body of soul legend James Brown has reportedly been stolen from a family crypt.…

The power of collaboration within unified communications

Phil Brown apologises for 'unsavoury' Jimmy Bullard and Nicky Barmby bust-up

Hull manager Phil Brown has apologised for the "unsavoury" public bust-up between Jimmy Bullard and Nick Barmby.

Iraqi PM Maliki prepares to form government

By Matthew Weaver

Head of supreme council says Nouri al-Maliki's State of Law group is likely victor based on preliminary results

The political grouping headed by Iraq's prime minister, Nouri al-Maliki, today began preparing negotiations for a new coalition government after edging ahead in the latest counts of Sunday's general election.

The poll's outcome is still unclear but Maliki's State of Law group is growing in confidence after preliminary results gave it victory in at least two southern provinces.

Only partial counts have been released from six of Iraq's 18 provinces, excluding Baghdad. Results today from a quarter of votes cast in Maysan province, which borders Iran, showed State of Law trailing to the Iraqi National Alliance, the Shia coalition that includes followers of the radical cleric Muqtada al-Sadr.

But Iraqi officials who have seen nationwide results said Maliki's coalition appeared to have a narrow lead. The head of the Supreme Islamic Iraqi Council, Ammar al-Hakim, said that Maliki's coalition appeared to be winning – the first statement of its kind by high-ranking official since polls closed.

Abbas al-Bayati, a member Maliki's coalition, told Associated Press the alliance had created a committee to open talks with other blocs. Bayati said he expected State of Law would need two or three other coalition partners to form a government.

Iraqiya, the coalition of Maliki's main rival, Ayad Allawi, the former secular Shia prime minister, continued to claim that the election was marred by fraud.

Rend al-Rahim, an Iraqiya candidate, said the group had lodged 32 separate complaints with election officials, including undelivered and dumped ballots.

Results released yesterday showed Allawi and Maliki's rival groups were leading in two provinces each.

Coalition talks are expected to be lengthy and fractious. A credible ballot is considered to be crucial to a planned US troop withdrawal. It follows elections in Iran and Afghanistan, where results are widely considered to have been illegitimate.

More partial results from Iraq's 14 other provinces are expected on Sunday.


guardian.co.uk © Guardian News & Media Limited 2010 | Use of this content is subject to our Terms & Conditions | More Feeds


Hockey World Cup 2010: New Zealand 4 South Africa 4 (NZ win 5-4 on pens)

New Zealand clinched ninth position at Hockey World Cup 2010 after defeating South Africa in a high-scoring thriller.

Former top Tory MEP joins Lib Dems

By Paul Owen

Edward McMillan-Scott accuses David Cameron of 'propitiating extremism abroad' and says he fears that on Europe the Tory leader says one thing in opposition and will do another in government

The former leader of the Conservatives in the European parliament has defected to the Liberal Democrats, the party announced today.

Edward McMillan-Scott accused David Cameron of "propitiating extremism abroad" and said he feared the Tory leader said one thing on Europe in private but would do another in government.

The MEP for Yorkshire and the Humber clashed with Cameron last year over the Conservative leader's decision to remove his MEPs from the centre-right European People's party and set up a new group, European Conservatives and Reformists, with controversial allies from eastern Europe.

McMillan-Scott successfully stood against Michał Kamiński, the Polish MEP chosen to lead the new group, for the post of vice-president of the European parliament, and as a result he had the Tory whip removed.

The MEP said today: "I have been around the higher circles of the Conservative party for long enough to fear that on Europe Cameron says one thing in opposition and will do another in government.

"I have long fought against totalitarianism and the extremism and religious persecution it brings. It was wrong of Cameron to associate with MEPs who have extremist pasts in his new European alliance."

Kamiński has been accused of antisemitism and homophobia, which he denies, while the Latvian party For Fatherland and Freedom, also in the Tories' new coalition, has been criticised for commemorating Latvian Waffen SS soldiers. David Miliband, the foreign secretary, invigorated last year's Labour conference by calling the Tories' ties with such parties "sickening".

In his resignation letter to Cameron, McMillan-Scott told him: "You say that you are against extremism at home, yet you propitiate it abroad."

He added: "My reasons for joining the Liberal Democrats are that in Nick Clegg they have a leader whom I like, admire and respect. They are internationalists, not nationalists. They are committed to politics based [on] the values of fairness and change."

Clegg paid tribute to his new MEP, saying: "For many years he has fought for human rights and democracy worldwide and he is rightly a respected politician across Europe. As someone of principle he has refused to cosy up to rightwing extremists, despite pressure from the Tory machine.

"This flies in the face of David Cameron's claims of change. It shows that people of principle, who believe in fairness and want real change for Britain, are at home in the Liberal Democrats."

The defection will be seen as a boost to the Lib Dems as they begin their spring conference in Birmingham.

A spokeswoman for the Tory party said McMillan-Scott had had the whip removed "months ago" and declined to comment.

Visiting Gordon Brown at 10 Downing Street today, Nicolas Sarkozy, the French president, said he "regretted" Cameron's decision to pull the Tories out of the European People's party.

Edward McMillan-Scott's letter to David Cameron

12 March 2010

Dear David,

I am resigning today from my appeal against expulsion from the Conservative party and from the party itself to join the Liberal Democrats for three reasons:

1. I have been around the higher circles of the party long enough, most recently serving on both the Euro-election and general election strategy committees at CCHQ, to know that Euroscepticism is in the hearts of most Conservatives. Your decision to split from the mainstream EPP and create the new ECR group has been universally condemned, even by rightwing commentators such as the Economist as a "shoddy, shaming alliance". You say you will not "bang on about Europe" and your spokesman make warm noises. But I fear that on Europe you say one thing in opposition and will do another in government.

2. You continue to refuse to accept that Michał Kamiński, who now leads the ECR and against whom I stood and won re-election as vice-president of the European parliament last July, has had "antisemitic, homophobic and racist links". You say that you are against extremism at home, yet you propitiate it abroad.

3. My family, friends and those who work with me will all confirm that I have sought in good faith an amicable resolution of my dispute at all levels in the party. I have written to you on several occasions without a reply and have pursued the appeal process to which you submitted me in the diminishing expectation of fairness. I have stated my case modestly in the media. Last weekend your lawyers made clear that the appeal would continue to be rigged by you, despite your public pretensions to decency and fairness. As my friend Henry Porter put it in the Observer, your response has been "thuggish and panicky". You say one thing in public and do another in private.

My reasons for joining the Liberal Democrats are that in Nick Clegg they have a leader whom I like, admire and respect. They are internationalists, not nationalists. They are committed to politics based [on] the values of fairness and change, but you are committed to power for its own sake.

Yours sincerely,

Edward McMillan-Scott MEP

Vice-president of the European parliament, responsible for democracy and human rights


guardian.co.uk © Guardian News & Media Limited 2010 | Use of this content is subject to our Terms & Conditions | More Feeds


Clint Eastwood: remaking his days

By

Images from a new and exhaustive biography of the American actor and director



President Sarkozy irritated by questions over his marriage

Nicolas Sarkozy angry at journalists asking about his marriage.

Hockey World Cup 2010: Argentina 4 India 2

Lucas Vila scored two goals as Argentina downed hosts India 4-2 to take seventh place in the 12-nation FIH World Cup.

BNP membership policy still illegal, court rules

By Peter Walker

Judge agrees with human rights watchdog that British National party's rewritten criteria for joining are still racist

The British National party (BNP) has been barred from taking new members after a judge ruled today that its constitution could discriminate against non-white people.

Judge Paul Collins issued an injunction ordering the far-right group to comply with race equality laws, adding that "the membership list will have to be closed until then".

Under the injunction, future prospective BNP members will not have to be vetted at home before being accepted.

Last month the BNP scrapped its whites-only policy in an attempt to avoid legal sanctions brought by the Equality and Human Rights Commission (EHRC).

But today at central London county court, Judge Collins ruled: "I hold that the BNP are likely to commit unlawful acts of discrimination within section 1b Race Relations Act 1976 in the terms on which they are prepared to admit persons to membership under the 12th edition of their constitution."

The commission welcomed the ruling, saying it proved that, while it is not unlawful to hold discriminatory views, it is unlawful for such principles to be used for controlled entry to a political party.

Susie Uppal, director of legal enforcement at the commission, said: "The commission is glad that today's judgment confirms our view that both the BNP's 11th constitution and the amended 12th constitution are unlawful.

"Political parties, like any other organisation, are obliged to respect the law and not discriminate against people who wish to become members.

The decision follows weeks of wrangling over the legality of the party's membership criteria as defined in its constitution.

BNP rules had stipulated that only "indigenous Caucasians" and people from ethnic groups "emanating from that race" could join.

After several months of delay, BNP members voted at an extraordinary general meeting a month ago to scrap the clause and replace the party's constitution.

But the EHRC decided to challenge the new document on the grounds that it still amounted to indirect racism.

The new constitution, which has yet to be published, requires would-be members to agree that they are "implacably opposed to the promotion, by any means, of integration or assimilation" that affected the UK's indigenous white population. Another clause expresses opposition to mixed-race marriages.

"It would be jolly difficult for a mixed-race person to join the BNP without effectively denying themselves," Robin Allen QC, representing the EHRC, told a hearing on Tuesday.

The BNP rejected this. "This party has a particular policy," said Gwynn Price Rowlands, representing the party. "It's a matter for the applicant to decide whether they want to join."

The BNP had a waiting list of non-white people wanting to join, he said.

The hearing was told that applicants under the new party rules would be subject to a two-hour home visit by two BNP officials.

Allen said that could operate as a form of indirect discrimination. "One way the provisions could operate would be to intimidate someone who wanted to join the party.

"Of course, it could simply be a greeting."

BNP critics argue the party has no genuine interest in recruiting non-white members and is merely doing the minimum to avoid legal action and potentially crippling court costs.

An internal BNP memo seen by the Guardian this week told members that the party had not "gone soft".

"We don't expect any more than a handful of people of ethnic minority origin to apply to join the party nationally, and we will not let this deflect us from our political objectives of saving Britain and restoring the primacy of the indigenous British people," the memo said.


guardian.co.uk © Guardian News & Media Limited 2010 | Use of this content is subject to our Terms & Conditions | More Feeds


Revised BNP membership rules 'still racist'

The British National Party faced a serious setback in its bid for legitimacy today when a judge ruled that its new membership rules were still likely to discriminate against non-white people.

Six Nations 2010: England reject Scotland's 'blocking' claim

England manager rejects Andy Robinson's claims over use of gridiron-style 'blockers' of Six Nations Calcutta Cup clash.

Footage shows plight of 'tormented to death' David Askew

Haunting footage has emerged showing a man with learning difficulties being abused by a group of hoodies - the kind of abuse which neighbours say ultimately led to his death.

Kyhra Ishaq's mother jailed for 15 years for starving her daughter to death

Mother and stepfather of seven-year-old Khyra Ishaq were jailed for her manslaughter.

No expenses charges against Labour peer Uddin

By Polly Curtis

Labour peer was investigated over claims that she was paid expenses on a flat in Kent that had been unoccupied for years

Lady Uddin, the Labour peer accused of claiming more than £100,000 in expenses for a flat she did not live in, will not face any criminal charges, the Crown Prosecution Service confirmed today.

The Labour peer was investigated over claims that she was paid expenses on a flat in Kent that had been unoccupied for years. Uddin has a second home in the East End of London, just four miles away from parliament.

The inquiry has been suspended with no charges made because there was "insufficient evidence" to bring a prosecution alleging that Uddin did not occupy the home in Kent.

Keir Starmer, the director of public prosecutions, said: "The allegation against Baroness Uddin was that she had claimed 'night subsistence' for overnight stays in London, after attendances in the House of Lords, to which she was not entitled. Although she had nominated a flat she owned in Maidstone, Kent, as her 'only or main residence', it was alleged that her 'only or main residence' was in fact a house in east London.

"Evidence in this case was obtained from neighbours of Baroness Uddin and from companies supplying utility services, such as water, gas and electricity to the flat in Maidstone. But after careful scrutiny of all of the available evidence we have decided that, in applying the definition of 'only or main residence' adopted by the house committee, there is insufficient evidence to bring criminal charges against Baroness Uddin and we have today advised the Metropolitan police to take no further action."

The decision not to prosecute relied heavily on a ruling by the Lords clerk to allow peers to nominate their first and second homes, and that the definition of a primary home was one which the member visited at least once a month. On the evidence prosecutors had, they could not prove she had spent less time there.

Speaking at her home in Shadwell, east London, Lady Uddin said: "I am relieved this ordeal has finally come to an end and I only wish now to say thank you to everyone who supported me through a very difficult time and I now wish to return back to my professional life."

Uddin will now face an inquiry by the sub-committee on Lords' interests, Michael Pownall, the clerk of the Lords, said today.

He defended the rules around peers' second homes, insisting that they had to stay overnight in a property at least once a month in order to qualify for allowance payments and insisted this had been backed by the house committee.

He said: "The house committee's deliberations did not relate to potential breaches of the criminal law. I had agreed with the Metropolitan police service that I would suspend my internal investigations into the small number of members it was investigating until its investigations were complete.

"At the time I made my recommendation, the MPS was still investigating those members, and their circumstances were not a consideration in my recommendation."


guardian.co.uk © Guardian News & Media Limited 2010 | Use of this content is subject to our Terms & Conditions | More Feeds


Time for Democrats to start leading

By Andy Gallagher, Michael Tomasky, Rebecca Lovell

Michael Tomasky calls on elected Democrats to make a stand on healthcare reform



Thailand protests: supporters of former Prime Minister Thaksin Shinawatra turn the streets red

Supporters of Thaksin Shinawatra take to the streets of Bangkok.

RE2: a principled approach to regular expression matching

RE2: a principled approach to regular expression matching. Google have open sourced RE2, the C++ regular expression library they developed for Google Code Search, Sawzall, Bigtable and other internal projects. Unlike PCRE it avoids the potential for exponential run time and unbounded stack usage and guarantees that searches complete in linear time, mainly by dropping support for back references.

Cache Machine: Automatic caching for your Django models

Cache Machine: Automatic caching for your Django models. This is the third new ORM caching layer for Django I’ve seen in the past month! Cache Machine was developed for zamboni, the port of addons.mozilla.org to Django. Caching is enabled using a model mixin class (to hook up some post_delete hooks) and a custom caching manager. Invalidation works by maintaining a “flush list” of dependent cache entries for each object—this is currently stored in memcached and hence has potential race conditions, but a comment in the source code suggests that this could be solved by moving to redis.

Automate EC2 Instance Setup with user-data Scripts

Automate EC2 Instance Setup with user-data Scripts (via). I knew about EC2’s user-data feature—what I didn’t know is that the Alestic and Canonical images are configured so that if the user-data starts with #! the instance will automatically execute it as a shell script as soon as it boots up (after networking has been configured).

grammar.coffee

grammar.coffee (via). The annotated grammar for CoffeeScript, a new language that compiles to JavaScript developed by DocumentCloud’s Jeremy Ashkenas. The linked page is generated using Jeremy’s Docco tool for literate programming, also written in CoffeeScript. CoffeeScript itself is implemented in CoffeeScript, using a bootstrap compiler originally written in Ruby.

Scott and Scurvy

Scott and Scurvy. Did you know that Scott’s 1911 expedition to the south pole was plagued by scurvy, despite the British navy having discovered an effective cure way back in the 18th century? A fascinating tale of how scientific advances can lead to surprising regressions.

Announcing django-cachebot

Announcing django-cachebot. The ORM caching space around Django is heating up. django-cachebot is used in production at mingle.com and takes a more low level approach to cache invalidation than Johnny Cache, enabling you to specifically mark the querysets you wish to cache and providing some advanced options for cache invalidation. Unfortunately it currently relies on a patch to Django core to enable its own manager.

How To Be A Good Participant On A Panel: Disagree

How To Be A Good Participant On A Panel: Disagree. When I’m on a panel, I always try to have lunch or dinner with the other panelists beforehand to figure out in advance what points we disagree on.

Geospatial Indexing in MongoDB

Geospatial Indexing in MongoDB (via). New in version 1.3.3. Handles “order by distance from” queries using a geohash approach under the hood, automatically searching nearby grid squares until the correct number of results have been gathered. Bounding box search is planned for a future release.

Is johnny-cache for you?

Is johnny-cache for you?. “Using Johnny is really adopting a particular caching strategy. This strategy isn’t always a win; it can impact performance negatively”—but for a high percentage of Django sites there’s a very good chance it will be a net bonus.

Some People Can't Read URLs

Some People Can’t Read URLs. Commentary on the recent “facebook login” incident from Jono at Mozilla Labs. I’d guess that most people can’t read URLs, and it worries me more than any other aspect of today’s web. If you want to stay safe from phishing and other forms of online fraud you need at least a basic understanding of a bewildering array of technologies—URLs, paths, domains, subdomains, ports, DNS, SSL as well as fundamental concepts like browsers, web sites and web servers. Misunderstand any of those concepts and you’ll be an easy target for even the most basic phishing attempts. It almost makes me uncomfortable encouraging regular people to use the web because I know they’ll be at massive risk to online fraud.

Running Processes

Running Processes. I’ve been searching for a good solution to this problem (“run this program, and restart it if it falls over”) for years. I’m currently using god which works pretty well, but according to this article I should be learning upstart instead. It never ceases to amaze me how difficult this is, and how obtuse the tools are.

A quote from Jason L. Baptiste

I’m not worried about guys like us. There will always be machines for us (powerful, complex, etc.). Why? Because if for some magical reason there wasn’t all of a sudden, we’re the type that would just make one.

- Jason L. Baptiste

Internet Explorer: Global Variables, and Stack Overflows

Internet Explorer: Global Variables, and Stack Overflows. An extremely subtle IE bug—if your recursive JavaScript function is attached directly to the window (global) object, IE won’t let you call it recursively more than 12 times.

GeoPlanet Explorer

GeoPlanet Explorer. Chris Heilmann’s YQL powered explorer for the invaluable Yahoo! GeoPlanet / WhereOnEarth dataset. Every API deserves an explorer of some sort.

jmoiron.net: Johnny Cache

jmoiron.net: Johnny Cache. The blog entry announcing Johnny Cache (“a drop-in caching library/framework for Django that will cache all of your querysets forever in a consistent and safe manner”) to the world.

Quote of the Day

By Guido Fawkes

Bill Gross, the world’s biggest bond investor says… “I would vote Labour. Favouring employment versus the financial markets is a decent policy; certainly not beneficial for the currency or the gilt market but beneficial for the people,”

Do As They Say, Not As They Do

By guidofawkes

Earlier in the week it was the Staggers that were highlighting their intern-hypocrisy, and now as the Lib Dems head to Birmingham for Clegg’s “return to your constituencies and prepare for government” moment, they too have fallen foul of practising what they preach. The sandalistas are debating “Proposals for Youth Employment” including: “c) Introducing a new ‘Paid Internship’ scheme [...]

Quote of the day

By LFAT

“Anna is liberal and open-minded but politically she supports The Labour Party, for all its sins.” - a note on the website of Anna Arrowsmith, a porn film director and the new PPC for the Lib Dems in the constituency of Gravesham.  Her website also mentions that she is “into all sorts of things, mainly partying [...]

Top 100 on Amazon

By Bishop Hill

I've just crept into the top 100 books on Amazon.co.uk, number two in popular science behind Ben Goldacre. I'm also at number 428 on Amazon.com.

Wow!

 

London Town

By Blue Eyes

The Return Of Depression Economics

By Wat Tyler (noreply@blogger.com)


Stick to something lighter like this

Tyler has been listening on his trusty iPod to a rather depressing collection of ditties. They comprise three lectures given last year at the LSE by Prof Paul Krugman, Nobel laureate, left-leaning NY Times columnist, and author of The Return of Depression Economics. And if it's depression you want, this is for you.

Krugman is immensely well informed, and very persuasive. But his economic prescriptions are based on the never ending growth of Big Government.

One of his key messages is that the world as currently constituted has a structural glut of savings. China and most other points East save far too much, and unless someone else spends to fill the gap, the global economy will sink into the abyss of a new Great Depression.

Of course, until 2007, the gap was filled by high spending punters in the US, the UK, Ireland, Greece and all the other usual suspects. But their spending was fueled by wobbling unsustainable balloons of debt, and when the bubble burst, their spending collapsed.

So governments - essentially western governments - have had to step in. Keynesian deficit spending has been exhumed from the vault, dusted off, and put back to work. Government 1, Markets 0. And a good thing too, suggests Krugman.

But what about all the debt our governments are now accumulating? Isn't he worried about that?

Well, no, not really. Debts on the current scale are entirely manageable, and their interest costs small. Anyway one day, something will happen to get someone else to pick up the spending slack - say, a surge in green investment - and governments can start to reduce their debts. Kind of idea.

Hmm.

As we've blogged many times, the debt interest burden dropped onto us taxpayers by HMG is already starting to look ugly. From a bill of £31.5bn this year, the Treasury itself forecasts it will more than double to £71.5bn by 2014-15. Actually, the Treasury refused to divulge this alarming figure - even when formally requested to do so by the Treasury Select Committee - but the IFS has devised a cunning way to back out the Treasury's debt interest projections from the information that HMT does publish (see footnote 7 on page 192 of the IFS Green Budget).

Here's how it looks right from year zero - the moment Brown took the fiscal helm:


Now, in fairness, for his first decade debt interest costs remained pretty well behaved. Indeed, as Jeff Randall reminds us this morning, Prudence Brown positively used to crow about it. In 1998 he was lambasting his spendthrift Tory predecessors, telling Randall:
"Interest payments on the national debt are £25 billion a year. We're spending more on national debt repayment than on schools or law and order, and that is a situation I don't want as a hallmark of a Labour government... The public borrowing requirement was £23 billion last year. We plan to get it down very substantially."
But as time went by, the continued good behaviour of interest costs was less a reflection of Brown's prudence, and more an automatic response to the big fall in gilt yields since the 70s, 80s and early 90s. That fall meant that when old high coupon debt matured on Brown's watch, it could be refinanced at much lower rates, bringing down interest payments. And yes, Bank of England independence did help that process by reassuring the markets about future inflation, but the key driver was the worldwide fall in yields - partly driven of course by Krugman's global savings glut. It had little to do with Brown's prudence, let alone his financial acumen.

And just so we know, HMT's projected increase in annual debt interest costs of £40bn between now and 2014-15 is the equivalent of 10 pence on the standard rate of income tax. 10 PENCE.

Or to put it another way, it's another £1600 of additional taxes for every single household every single year.

And actually there's worse. The Treasury's debt interest forecast assumes that HMG's borrowing costs stay pretty much where they are now - around 4.5%. But in the real world, that's highly unlikely. Gilt yields (ie the interest rate the goverment has to pay) have already ratcheted up by around one percent from their lows last year, and look set to move higher:


So what happens if yields move higher than HMT is assuming?

According to their own forecasts they are going to borrow a net £700bn between now and 2014-15. Add in the need to refinance £200bn of maturing gilts, and they will be borrowing a gross £900bn. Which means that every one percentage point increase in the interest rate they have to pay will, by the end of the period, add £9bn pa to annual debt interest costs.

Now, of course nobody knows how much gilt yields may rise from their current 4.5%, but as we've mentioned before, during the last real funding crisis back in the 70s they got as high as 17.5%. And even if they only went up to half that level, Tyler's fag packet says debt interest costs would exceed £100bn pa by 2014-15. Which would be a £70bn pa increase from current levels, or an additional £2,800pa tax for every single family.

You see, that's the trouble with listening to Paul Krugman and his fellow Big Government economics laureates. They are so incredibly provocative that you end up being forced to examine the facts again. But all that does is to remind you just how grim our public finances are now looking. And how these guys now hold so much sway in the corridors of power, that we seem powerless to save ourselves before the whole wobbling blancmange implodes again.

Depression economics.

Tyler will be replacing Krugman with something more upbeat. Morrisey maybe. Or Leonard Cohen's Greatest Hits.

Friday Caption Contest (Oink Edition)

By guidofawkes

Tagged: Caption Contest

Regulators have always made judgements

By John Redwood

The FSA says today it will in future monitor more and make judgements about the safety of various financial products and activities. The tripartite regulators led by the Chancellor made some very important judgements 2005-8. Between 2005 and 2007 they thought banks [...]

+ + + Baroness Uddin – No Charges + + +

By Guido Fawkes

This isn’t a surprise.  The Clerk of the Parliaments, Michael Pownall, gave the Lords almost free reign to continue troughing by ruling that there is no definition of main residence for the purposes of expenses.  A ruling almost designed to make a prosecution impossible. Uncharged is not the same as innocent… See Carry On Claiming M’Lords [...]

Guy News Preview : Gordon Will Let You Down

By Guido Fawkes

This week we bring footage of the release from prison of the landlord who lets you smoke, the travails of magazine street sellers and MPs on trial. Here’s a preview excerpt from this week’s Guy News; a mash-up of Gordon Brown and Johnny Cash with a touch of Neil Hepburn. If you haven’t subscribed to [...]

Wokingham Times

By John Redwood

Sometimes people come to see me at my surgery with debt problems. They often have a large mortgage, and on top have borrowed too much on the Credit card and personal loans. The first advice I always give them is to go through [...]

Josh 10

By Bishop Hill

More cartoons by Josh here.

 

Epic Logo Fail

By noreply@blogger.com (dizzy)

Busted!

Doom Quake - Gordon Brown style - play online

By noreply@blogger.com (dizzy)

One of the best first person shooters ever has been re-made online and called "Gordon's Revenge". It means you you can run around going postal with a Doom Quake shotgun as Gordon Brown killing the evil David Cameron, William Hague and crazy Nick Griffin dog draped in the Union Jack.




No doubt lots of Labour gamers will enjoy it, play it at Political Gaming.

Mea Culpa, for some reason I thought it was Doom II but its actually Quake. Ooops.

The New McCarthyism

By Longrider

Dick Cheney’s daughter is engaging on a witch hunt, it seems. Her Keep America Safe campaign is targeting lawyers who had the temerity to represent terror suspects. Now Cheney’s daughter, Liz, has taken up the cudgel by heading what some are describing as a McCarthyite campaign to purge the government of lawyers who dared to defend [...]

BOFH: The PFY Chronicles part 2

Episode 2 A poisoned chalice

Things are quiet at Mission Control. No, quiet would be an understatement. The room seems unnaturally large and cavernous, and there's an echo that just shouldn't be there... I could swear I heard the words "sleep no more" coming from the PC speaker, but I'm sure I'm imagining it. My contemplations are interrupted by two …

Case Study: WhatsUp keeps Legoland turnstyles ringing

Comic for March 12, 2010


GeoIP

'Meet hot young singles in your mom's basement today'? Man, screw you, GeoIP.

Comic for March 11, 2010


03/10/10 PHD comic: 'Campus Day of Action'

Piled Higher & Deeper by Jorge Cham
www.phdcomics.com
title: "Campus Day of Action" - originally published 3/10/2010

For the latest news in PHD Comics, CLICK HERE!

Comic for March 10, 2010


Single Ladies

Using a ring to bind someone you covet into your dark and twisted world? Wow, just got the subtext there. Also, the apparently eager Beyoncé would've made one badass Nazgȗl.

He's so mean he wouldn't light your pipe if his house was on fire.

By the time this blog entry goes live I'll be running upon my new machine. The migration process was mostly straightfoward and followed my plan:

Of course it wasn't that simple in practise, as previously mentioned the whole reason I was looking for a new machine was because the software RAID upon my old desktop was failing - One of the two drives was completely dead.

As I'd feared the second drive failed partway through my migration. But thankfully I'd copied off the important stuff before then, and the backups I have off-site mostly covered everything else. (The things I lost were things I can find again such as ~/Music, ~/Videos. On the one hand they're too large to backup, on the other hand I should probably do it next time as they never change.)

Unfortunately the version of X in Lenny refused to work with the GeForce G210 video card I had. To be more correct using the Vesa driver I could get a picture and a smooth desktop, but when watching videos with xine I got maybe two frames a second. Both the open nv driver and the closed nvidia driver failed to support the card - so I swapped hardware, and I'm now running with the GeForce 7300 GS card from my previous desktop. This allows me to watch videos at full-screen with no issues. (Desktop size is 1600x1200 FWIW).

So now it's just a matter of tweaking the system. I've installed enough to be useful:

I've still got to setup pbuilder, but that'll be done shortly, and I've installed backported packages such that I can watch youtube videos. I'm currently running firefox from lenny but I expect that will change soon enough - not least because that version fails to support "adblockplus", only "adblock".

Two partitions md0 for /boot and md1 used as LVM, from which I've taken /, /home, etc:

Filesystem                      Size    Used    Avail Use% Mounted on
/dev/mapper/birthday--vol-root   9.9G     2.8G   6.6G  30% /
/dev/mapper/birthday--vol-home   22G      4.3G  16G    22% /home
/dev/mapper/birthday--vol-music  127G    43G    78G    36% /mnt/music
/dev/md0                         988M    38M    901M    4% /boot
/dev/mapper/birthday--vol-kvm    22G      8.8G  12G    44% /mnt/kvm
/dev/sdg1                        163G    143G   12G    93% /media/disk
skx@birthday:~/hg/blog/data$

 

skx@birthday:~/hg/blog/data$ sudo pvs
[sudo] password for skx:
  PV         VG           Fmt  Attr PSize   PFree
  /dev/md1   birthday-vol lvm2 a-   464.82G 274.51G

Update: Three irritations with this machine:

  1. As supplied the BIOS was set with "USB Mouse" and "USB Keyboard" set to "disabled". I had to beg the loan of a keyboard from a neighbour.
  2. As supplied the BIOS had virtualisation set to "disabled". Not a huge shock, but it caught me out regardless.
  3. As supplied the system had only a single SATA power connector. Annoying given that the motherboard is advertised as having "onboard RAID" and I'd purchased it with two hard drives. Happily I had a spare adaptor to hand.

I'd still recommend Novatech, but the last point had me swearing for a few minutes until I realised I did have a spare adaptor in the house.

ObFilm: Chitty Chitty Bang Bang

Comic for March 9, 2010


You Greeks take pride in your logic. I suggest you employ it.

Tomorrow, all being well, I'll receive a new computer.

I've always run Debian unstable upon my desktop in the past, partly because I wanted to have "new stuff" and partly because I needed a Debian unstable system for building Debian packages with.

However I'm strongly tempted to just install Lenny. I use that upon my work desktop and it does me just fine for surfing, building tools, and similar.

I can use pbuilder, sbuildd, or similar to build packages for upload to Debian, and if I want to experiment with new-hotness I can use a KVM guest or two.

Providing the hardware works with Lenny (and I have no reason to believe it won't) then there's no obvious downside I can think of.

The only potential complication will be restoring my backups, it is possible that my firefox databases, and similar things, might not work on older version. Still we shall see.

I plan to install software RAID, and run the system on LVM because quite frankly it rocks. Unless my current system fails in the next 24 hours I can use that to do the installation (My current desktop acts as a TFTP/DHCP/NFS server so I can use it to PXE-boot).

Anyway now I need to go eat food, tidy my desk, and decide what to call the machine .. At the moment the choice is between "march.my.flat" and birthday.my.flat, as my 34th birthday is on March 10th.

ObFilm: 300

03/8/10 PHD comic: 'The 2397th Annual Academic Awards'

Piled Higher & Deeper by Jorge Cham
www.phdcomics.com
title: "The 2397th Annual Academic Awards" - originally published 3/8/2010

For the latest news in PHD Comics, CLICK HERE!

Comic for March 8, 2010


Seismograph

The reverse only works if the subject has a nervous twitch.

Charlie Brooker | How to jazz up the party leaders' TV debates

By Charlie Brooker

There are 76 rules broadcasters have to follow for the debates. But I've found a loophole...

So: those televised prime ministerial debates will definitely be happening in the runup to the election. The excitement is hard to contain: three separate primetime shows on Sky, ITV and the Beeb in which Brown, Cameron and Clegg will get the opportunity to talk and talk and talk and talk and talk. And possibly jig. But mainly talk.

Depending on your point of view, this is either a refreshing opportunity for politicians to connect with the electorate, or the least sexy hour of television since that Channel 4 documentary where they chopped up an elephant.

Even though its power and influence are in decline, TV still fascinates and horrifies politicians in equal measure. They're attracted by its potential to hypnotise and pacify millions, but repelled by its laser-like ability to magnify physical flaws or tonal cock-ups. It's like a magic amulet that can sometimes control the masses, but also might explode in the user's hand at any time.

Obviously image is paramount. On TV, no matter how eloquent you are, 75% of the audience can't even hear what you're saying: they're too busy making subconscious judgments about the tone of your voice or the angle of your lips. Conventional wisdom would have it that Gordon Brown is clearly at a massive disadvantage here, since he's slowly come to resemble a lumbering, doomy Mr Snuffaluffagus with all the carefree joie de vivre of the Kursk submarine disaster. But Cameron and Clegg are, if anything, a bit too telegenic, a bit too slick, a bit too clean-cut and heigh-ho. They've tried too hard to appeal in soundbite pop-up form: stretched over an hour, they may start to grate, their smooth appearances unexpectedly conspiring against them.

Cameron in particular looks like a boring dot-eyed "nice" neighbour from an underwhelming Christian soap opera. He's a replicant; an Auton; a humanoid; a piece of adaptive software that's learned to appeal to your likes and dislikes – "customers who bought Tony Blair also bought the following" – but inadvertently creeped you out in the process. Let's face it: if you discovered he doesn't have a belly button or any pubic hair, and spends one night each week lying semi-conscious, face-down, "recharging" inside a giant white laboratory pod filled with amniotic fluid, you wouldn't be entirely surprised. And voters are likely to sense that eerie unearthliness. He'd better stutter or fluff a few times, just to throw them off the scent.

But even if all three manage to flawlessly imitate human beings, defeat may still be snatched from the jaws of victory: if Nick Clegg spends the first 50 minutes rousing the audience with his fiery, lyrical rhetoric – as per usual – only to sneeze unexpectedly five minutes before the end, leaving a giant pendulum of mucus dangling off the end of his conk, the unfortunate mishap would be looped and repeated ad nauseam on every rolling news bulletin for weeks to come. He'd be Mr Snot. And do you want to vote for Mr Snot? No way. What if he sneezed on the nuclear button? He's out of the running. Which leaves you choosing between a haunted elephant or the humanoid.

(There are other parties you could vote for, obviously. But they're excluded from the debates and therefore no longer exist – a terrible blow for Nick Griffin, who was hoping to win over the public with his devilish good looks and impish personality.)

So: mammoth or android. Which is it to be? To help you choose, the news networks will doubtless offer post-match analysis of each nanosecond. Professional Westminster spods will deconstruct each sentence in search of hidden meanings, like scientists translating garbled messages from space. A body-language expert will discuss Cameron's eyebrows for 38 minutes. A fashionista will tell us who wore the best shirt. And every other citizen in the country will be asked to deliver their opinion via vox pop, email, tweet, phone poll or synchronised Mexican wave. Eventually a consensus will form regarding who won, at which point the lucky victor will be given the keys to 10 Downing Street, a fly-drive holiday for two courtesy of Virgin Atlantic, a five-album recording contract with Sony BMG, and an ITV2 reality show of their very own.

So terrifying-yet-alluring is the prospect of the debates, the parties have only consented to take part provided each broadcaster adheres to a series of 76 rules, drawn up in advance. Every aspect will be controlled, from the time allocated to each question, to the layout of the set – even the framing of audience cutaway shots is crucial. Presumably spin doctors from all three parties will be lurking ominously on the sidelines, ready to run in and kick the cameramen to death if their candidate starts looking too sweaty. You can already picture Andy Coulson in the wings, chewing gum and eavesdropping on the gallery audio feed, which has been illegally tapped by a private detective and routed directly into Andy Coulson's earpiece without Andy Coulson's knowledge.

Curiously, one thing that's left open to the broadcaster is the opening and closing credits. Rule 68 states that "each broadcaster [is] responsible for their own titles, music, branding etc". If I was running ITN – which, at the time of writing, I'm not – I'd make the most of this sole crumb of freedom by creating an insanely inappropriate title sequence in which a claymation Brown, Cameron and Clegg take turns performing sex acts on a cow, a kettle and a hole in the ground, all of it backed by the old It's a Knockout theme tune. Then it abruptly cuts live to the studio, where all three leaders have been waiting to speak, watching with mounting horror as this sickening cartoon unfolded on the monitors. As they storm out, a body language expert analyses their facial expressions, and the studio audience waves giant foam hands around. It might not affect the election either way, but who cares: that's entertainment.


guardian.co.uk © Guardian News & Media Limited 2010 | Use of this content is subject to our Terms & Conditions | More Feeds


Comic for March 7, 2010


Foschart: a FOSDEM schedule app for the N900

Hello internet! I am at FOSDEM 2010 in Brussels. I tried the fosdem-maemo schedule application for my Nokia N900, and decided to write an alternative app which is easier to use with my fingers, and looks more like a Maemo application.

screenshot of foschart

The result is foschart. It's just something I knocked together in a few hours yesterday, but it's pretty usable already. It supports showing talks grouped by track, by room, and just in chronological order, and a list of favourites. It's all happily kinetic-scrollable, etc., and is very snappy once it's started.

There's no proper release or package yet; if you want to package it up properly, please do! But for now, apt-get install python-hildon, then copy foschart.py and schedule.xml to /opt/foschart, and foschart.desktop to /usr/share/applications/hildon. Then it should show up in your application list, and away you go. As ever, patches welcome. Enjoy!

Update:

The illustrious Jonny Lamb has made a package!

I'm IPv6 ready

Why I've IPv6 enabled my server and how I did itWe hear the horror stories every now and then. We're running out of IPv4 space and soon the world as we know it is going to end. One day we'll run out of addresses and computers will have to live behind the evil jail of NAT. There is another way, and that is of course IPv6. ISPs are mostly burying their heads in the sand, and won't implement it until there are more IPv6 enabled websites. Webmasters are waiting on IPv6 addresses to be handed dished out by hosting companies who are too lazy to do anything until ISPs dish out addresses to surfers. A vicious cycle indeed. Luckily, we host with Bytemark, who dish out native IPv6 addresses so we don't have to rely on hackish Sixxs tunnels. I have a /56 on my VPS. The first thing to do was to to bring up 2 addresses in /etc/network/interfaces. I tried putting a separate ipv6 stanza (the way you're supposed to do it), so I used post-up commands by placing this under iface ethe0 inet static

  #Bring up additional ipv6 addresses on same if
  up ip -6 addr add 2001:41c8:10a:200::1/56 dev eth0
  up ip -6 ro add default via fe80::1 dev eth0
  up ip -6 addr add 2001:41c8:10a:200::2/56 dev eth0
I saved myself a reboot by also running the up commands on the command line. Just as I did for v4, I planned to use the first address for everything, except lighttpd, because Apache is already using port 80. I added an extra Listen line to /etc/apache2/ports.conf
Listen [2001:41c8:10a:200::1]:80
All of my vhosts listen on *:80, so that's good. Lighttpd's server.bind syntax only supports one bind address and port, but you can bind to multiple addresses like so:
server.use-ipv6 = "enable"
server.bind = "::ffff:212.110.165.233"
$SERVER["socket"] == "[2001:41c8:10a:200::2]:80" { }
Next I turned on ejabberd's IPv6 support by adding the inet6 keyword to thgis stanza in /etc/ejabberd/ejabberd.cfg:
{listen,
[
{5222, ejabberd_c2s, [inet6, {access, c2s}, {shaper, c2s_shaper}]},
...
]}
Next up wasmy IRC bouncer, ZNC. I'd told it to explicitly bind to a certain IP address so I could have a vanity address. That needed disabling so I can connect to IPv6-only IRC servers (which to be honest isn't going to happen anytime soon.) Postfix has IPv6 support since 2.2, and i have 2.5.5 so that should just work, as it currently binds to all addresses. For good measure, i added inet_protocols=all to /etc/postfix/main.cf For Dovecot, I added listen = [::] to /etc/dovecot/dovecot.conf. Note that listen = * refers to all IPv4 only. Bytemark's hosted TinyDNS servers support IPv6 records (prefix 6 for automatic rDNS, prefix 3 otherwise), but I stupidly totally forgot about this and used this generator to cook up some AAAA records to match my A records. A little testing with the SixXS IPv6-IPv4 and IPv4-IPv6 Website Gateway, which is basically an IPv6 -> IPv4 web proxy that refuses to retrieve anything hosted on IPv4, and I confirmed everything was good to. Stop Press! Aren't we forgetting something? In keeping with the tradition set by kame, and followed by Google and many others, I needed a bouncing logo thats only shown to surfers that connect via IPv4. Lucky I had an animated gif that I'd made earlier. In Django, you can do something like
":" in request.META["REMOTE_ADDR"]
to work out if your surfer is an IPv6 surfer. IPv4 users can sneak a peak at using the SIXXS gateway See it's that easy. If your host gives you IPv6 space, then you have no excuse not to be leading the way to the move to adopting IPv6.

Clearing unwanted recent tags from the N900 photo viewer

The camera/photo viewer on the N900 has a pretty nice tag cloud widget, which lets you quickly label your photos before you upload them to Flickr. (The novelty hasn't yet worn off!) But an autocompletion accident left me with a tag in the widget that I'd really prefer not to be there when I'm showing off my nice new phone to people.

I spent a happy¹ few hours trying to figure out where it gets the set of tags from. The viewer asks Tracker for the most commonly-used tags, but this tag wasn't used on any of my photos, so wasn't coming from there. In fact, it didn't appear in any of Tracker's database files! After a bit of investigation, I discovered that the photo viewer keeps its own independent set of recently-used tags, not in Tracker, but in GConf, at /apps/osso/image-viewer/recent_tags. Lest you should find yourself in my position, a quick

gconftool --set --type list --list-type=string /apps/osso/image-viewer/recent_tags '[]'

will expunged your undesired utterances from the cloud. Bug report time. Next stop: finding a tool that lets the user remove typos from the autocompletion database …

1. Grr.

OpenVPN + NetworkManager with Ubuntu

My home machine, on an ADSL line, runs an OpenVPN server, so I can connect remotely and access resources (because otherwise I'd need to use IPv6, or something).  Now, the OpenVPN server pushes various routes to remote clients, because my home network is a little complex.  Today, I finally got my netbook (runing Ubuntu 9.10 Karmic (netbook remix)) connecting properly to the VPN (turns out things are happier if you set comp-lzo consistently), only to discover that network-manager was routing _everything_ over it - not ideal, given the VPN server is on the thin end of the ADSL connection...

Anyway, turns out you can fix this by modifying the VPN connection in Network Manager, going to IPv4 Settings, changing the method to "Automatic (VPN) addresses only", then going to "Routes..." and ticking the box marked "Use this connection only for resources on its network".

And now I have speedy internets again (and a working sixxs tunnel)

Django-powered Snow

During the planning of our Christmas card at work this year, a mad idea came up. Do we ignore mad ideas? No, we tackle them head-on.

The idea was to build an internet-controlled snow machine - you'd hit the button on the website, and watch a member of the Torchbox team get pelted with snow. When we first came up with the idea, we dismissed it as being "too complex", but after a while, we came around.

Cue three days of frantic development and phoning round to get the parts. I'll be posting a full build article, with all our source code, once we're done.

The brief summary is that we have a Django app which handles rate-limiting of snow, and tracking who has clicked the button, which then communicates with our snow machine using Artnet and DMX. Ustream is used to stream the video back to the internet.

Still, I imagine you want to see it in action, so head over to snow.torchbox.com, and have a go. It's only online 10 - 5 UK time, and only until Tuesday (we can't fill our office up with paper snow forever), but it's still very good fun, even if you don't know any of us!

Bustle 0.2.1

A couple of days ago, I released version 0.2.1 of Bustle, someone's favourite D-Bus profiler. As the version number suggests, there aren't really any big new features; most of the changes just make it a bit nicer to use, like showing you all the bus names a service owns, ellipsizing strings, a slightly less spartan UI, etc. Having finally gotten around to cutting a release, I've started wondering what to work on next. There are various small things I have in mind, such as searching, filtering, integrating the various statistic tools (bustle-time and friends) into the UI, and so on, but it'd be nice to have a larger goal to work towards.

One recurring feature request is the ability to see messages' arguments. This isn't currently possible because the simple plain-text logs produced by the monitor (which is a variation on the theme of dbus-monitor --profile) only includes the message header. I've thought for a while that the right thing to do would be to log the raw dbus messages, together with a timestamp, but wasn't sure what the files would look like. (Maybe shove the timestamps into the message headers?) Rob had a nice idea: why not log to pcap files? This avoids inventing a new format—the UI would just use libpcap and feed each message through the dbus parser—and would also let you look at the logs in WireShark, if you're into that kind of thing. I'm hoping to find some time to give this a shot soon. (Maybe on a cold Christmas evening, in front of a fire?)

In the meantime, have a peek at what your D-Bus-using applications are up to, and let me know what's missing!

Hotmail Spam

Or "why your mail from hotmail may not reach me"Lately I've been having a major problem with spam sent from hotmail addresses using hotmail's own SMTP servers. This has evaded sanesecurity's signatures and SpamAssassin, even though I've fed about 100 of these messages to sa-learn and also given some to steveb at sanesecurity. Some of these new spams I've been getting even have a negative SpamAssassin score! They are mostly random waffle (not 411, viagra or sex), with a hyperlink embedded. My email address is never in the To: or Cc: fields.. I have tried contacting Hotmail in the past about issues such as this, and its like talking to a brick wall. Previously, the most obvious spam was rejected by our SMTP servers at SMTP-time, and that which was likely to be spam, but not certain, was delivered to a Junk folder. Now, I am going to configure my server to accept then silently drop all email which is routed via a hotmail.com SMTP server where my name is not in the To: or Cc: fields. (Technical issues with the way the SMTP servers are setup prevent me from rejecting it at SMTP-time at present.) This means that if you use Windows Live mail to Bcc me an email then I will no longer receive it. You will not receive an automated reply, in the interests of reducing backscatter.

Adobe Air UPS Tracking

Track your parcels from the comfort of your linux desktop!Today I noticed that UPS have developed a widget that allows Windows and Mac users to track their parcels. This looked useful, as I would no longer have to sit refreshing a web page to satisfy my curiosity as to where my parcels I send are, but just wait for pop-up notifications from an application that sits in my system tray. First you'll need Adobe Air. Adobe's Linux installer doesn't perform all of the steps required for 64-bit systems, and their guide is a bit lengthy, so I've transcribed it into a shell script which you can download: install-adobe-air-ubuntu-64bit.sh The UPS site claims that Linux support is "coming soon", and they seem to do some user agent sniffing with Flash, so I downloaded it in a Windows and placed a copy here The first thing to do once you've made an account is to click Options at the bottom and untick "Show Widget Character", "Show News Ticker" and "Show News Flashes" to make these annoying resource-hungry bits go away. Now you're left with the bare window. Alas it has a huge black surround (which is transparent on Windows and Mac), it and consumes a fair amount of CPU power just idling, but it does appear to work. You can even minimize it to the system tray. Hopefully the Linux version is indeed coming soon, and will address these issues. At least UPS recognize that use Linux users exist, and chose a cross-platform technology. Now I can send my parcels from the comfort of my workplace, with a guarantee they'll be picked up between 10am and 5.30pm next day (when I'm at work; DHL/HDNL through Parcels2Go can't guarantee this timeframe) without having to take time to visit the post office, I can track and get progress alerts from this widget, and if the parcel is over 2kg, its cheaper than Royal Mail anyway, when booked through Interparcel. Despite the Economy service being advertised as non-guaranteed next-day, all of the parcels I have sent have arrived next day. What could be better than that?

South 0.6.2

In my neverending quest to save the time of those using RDBMSen, South 0.6.2 is released.

It mostly contains bugfixes, but there's now support for extending introspection to third-party apps without having to edit their source.

I'll probably start working full steam on South 0.7 soon - there's a refactor of the migration engine (mostly done), of startmigration (not started), and a few changes to command names to make them nicer (the old ones will still work), and to the behaviour of default values.

I'm hoping 0.7 will be the last release before 1.0, at which point I will claim I've been working in an octal version numbering sequence all along.

Empathy 2.27.0's Private Mode

An oft-requested feature in Empathy and Telepathy is support for OTR (Off The Record) encryption of messages, interoperating with the OTR plugin for Pidgin and other popular IM clients. We've been resisting implementing it so far, mainly because we think there are better ways to do end-to-end encryption of messages and audio and video calls over XMPP, which we hope to implement in the not too distant future.

However, a nice aspect of OTR as compared to other encryption solutions is that it allows you to plausibly deny having taken part in a conversation. We believe this to be an example of a wider trend towards deniability on the internet, a position which is backed up by the growing popularity of Tor, and by several modern browsers allowing you to cover your browsing tracks out of the box.

As a result, we've been working hard to help secure your privacy while you're using Empathy. We've had to do this quietly for various legal reasons, but we're proud to announce Empathy's new Private Mode. When enabled, your contact list will be anonymized, as will your entry on your contacts'. Thus, you can conduct conversations with anyone without fear of repercussions from their discovering your identity, or of anyone else knowing the conversation took place:

It's not obvious how to bring these privacy benefits to Jingle video calls. We came up with a technique we refer to as Kitten Secrecy (patents pending in all relevant countries), and managed to integrate it with Empathy with the help of our friends at Collabora Multimedia, who constructed a fantastic GStreamer element using only two leaky queues!

We think the results speak for themselves. The source is not quite ready for release yet, but (lawyers permitting) we hope it'll be public by the end of the month. Hope you can wait until then!

the Telepathy and Empathy teams


If you're about to leave an angry comment:

At the Boston Gnome summit, Robert McQueen, Sjoerd Simons and I sketched out a plan for the API for end-to-end encryption of communications (implemented using XTLS, OTR or anything else) and how we'd implement this API for OTR. Work's just started on a challenge-response authentication API, which is a prerequisite. Stay tuned; or, jump onto the Telepathy list or #telepathy on Freenode if you're interested in helping out!

Telepathy BOF at the Boston Summit

Jason's hands were tired after typing two days of excellent notes on sessions at the Gnome Summit, so I took over writing up the Telepathy BOF (which was largely about Telepathy integration in Gnome Games).

Gnome Games's tubes code is broken because of Empathy moving to Mission Control 5, which broke the contact chooser they were using (which used Mission Control 4). A Canonical person (your scribe did not catch who it was) has written a contact selector in C which just uses telepathy-glib, which Gnome Games will use and then start working again. This widget could form the basis of the long-anticipated telepathy-gtk.

Rob pointed out that it's currently a bit of pain to request a channel for yourself: you can't just call one D-Bus method and get a channel back, you also have to implement a Client.Handler object on which MC will call the HandleChannels() method. Sjoerd noted that Empathy has helper code for doing this in simple cases, which could be moved to tp-glib (it's under the LGPL).

Jason wants a way to share high scores with your contacts. (Digression about a gnome-games high score server on gnome.org ensued, the notes of which your scribe lost in a kernel panic. One main point is that global high scores end up just featuring incredibly good scores and people setting their name to obscenities.) Jason wonders if g-g could publish your high scores to your contacts in the background?

J5 wondered if any g-g people are documenting how they're using tubes, because he was always confused by them, and he reckons this is a very important thing for app developers. Rob suggested pushing this into tp-book, and Sjoerd noted that Danielle has a helper which lets you say "give me a stream to this person" and get a GIOChannel back branch with methods to convert between telepathy address GValues and GSocketAddresses, which could conceivably be extended to set up a socket automatically. J5 thinks that if patterns for using tubes were really well documented, people would jump on the chance to use them.

Jason mentioned that people were discussing having a help option which jumps you to #gnome-games-$lang. J5 said that Ximian tried that, but found that people would just end up in empty chatrooms or paste goatse at each other. Integration with DevHelp would be nice to let people post examples etc.

J5 suggested that another good way to improve documentation is to make writing it a requirement for SoC. Rob noted that Telepathy hackers know that you need to use, eg., a Handler and a Tube, but it's hard for people really immersed in the stack to remember which prerequisites people need to learn in order to understand that stuff. Sandy said they'd been discussing documenting requirements and standards for SoC students, and thinks it's a great idea to ask students to blog stream-of-consciousness "this is what i did" updates. People have to make sure that they do this as they go along, because you forget the learning process after a few weeks.

Advantage of peer-to-peer high scores: you don't get the problem of one incredibly good person dominating. [info]ajaxxx suggested that you could make high scores decay over time, or once you reach a particular level, to address this problem.

Tetrinet is latency-sensitive: will that be a problem with Telepathy, particularly using MUC tubes? Rob said just try it and if it's too slow it'll get faster as the implementation of Tubes improves. Sjoerd noted that for tetrinet you probably want to just export the Tetrinet server over a multi-user stream tube, rather than using d-tubes.

Telepathy should use UPnP to make FT and tubes fast in more cases. This is on the TODO list.

Boston Gnome Summit and Maemo Summit

I'm just getting ready to fly away to Boston for the Gnome Summit. I'm looking forward to meeting people and seeing MIT, as well as getting the chance to spend more than a few hours in Boston (unlike every other time I've been there).

Inevitably, I haven't been organised enough to propose a Telepathy- or Empathy-related session, but Rob McQueen, Sjoerd Simons, Andres Salomon, Dafydd Harries, Shaun McCance (when he's not busy running a pair of interesting-sounding documentation sessions!) and myself will be around if people are interested; maybe something will coalesce. If window manager theming is more your kind of bag, Thomas Thurman's running a session on CSS in Metacity/Mutter. It'd be great to talk about integrating IM with the Gnome Shell; Moblin's people panel and many parts of Maemo make interesting use of Telepathy, and it'd be nice to have something similar on the desktop.

Speaking of Maemo, going to Boston means I'm not at the Maemo Summit in Amsterdam, which is a real shame: I'd love to meet more of the Maemo community, hear what people have up their sleeves for the N900, and discuss how Telepathy could help. Happily, Marco Barisione's giving a talk about how Telepathy's used on Maemo, and how you can use it too; relatedly, Travis Reitter and Mathias Hasselmann will speak about the address book, one of the heaviest users of Telepathy. Also, Marc Ordinas i Llopis is hosting a BoF on extending the (frankly stunning) Hildon desktop, and Ian Monroe is giving a talk with Sergiy Dubovik about preparing Qt4 applications for Fremantle and Harmattan. I hear Philippe Kalaf is also floating around somewhere. ☺

See you in (the wrong) Cambridge!

Announcing Heechee

In my opinion, there's just not enough Subversion servers on the internet.

That's an opinion you'll probably never hear me express - I much rather everyone move over to a DVCS (*ahem* mercurial) - but Subversion has, some would say quite rightly, earned its place as the dominant VCS for nearly every part of the IT community (apart from big, lumbering, financial companies).

Recently, I've been slowly switching away from subversion for my personal projects into Mercurial. This, in itself, a painless process, but with my public projects - particularly South - this has the unintended effect of slightly alienating some of my users. Most are alright with adapting - after all, it's quickly becoming the norm to use a DVCS - but there's still a few people left out.

One of the particular issues I have is with svn:externals. A lot of apps - including some we have at work - rely on svn:externals to pull in external dependencies into a libs folder along with the project itself. Externals is one of the few features of subversion that I thought was pretty much perfect, and it was sad to see my move to Mercurial break it.

This week, at DjangoCon, Chris Wanstrath did a nice talk on DVCSen. One of the questions led him onto hg-git - the awesome git backend plugin for Mercurial, that the GitHub guys wrote - and how they first investigated the idea of an svn gateway to expose their repositories transparently to subversion users. From what I gathered, subversion's wire format proved too tricky to deal with, and so they turned elsewhere.

However, the idea of a subversion gateway intrigued me greatly. What better way to transparently serve South so people can still pull it using svn:externals while still developing in Mercurial? With that in mind, I started looking into Subversion's wire protocols and their delta format (svndiff) sometime yesterday afternoon.

After some digging, reading an obscure academic paper and liberal application of Wireshark, I grew confident enough that I could at least implement something. A day later, and I'd like to present the very first version of what I'm calling Heechee (if you get the pun, ten nerd points).

Heechee is a transparent mercurial-as-subversion gateway. It serves a Mercurial repository as a Subversion WebDAV-based repository. It's still in the early stages, but at the moment it will serve its own mercurial repository to subversion in such a way that you can check out the repository, and update to various revisions within it.

You can check it out at BitBucket. It's pretty alpha code, and make sure you have the dependencies mentioned in the README, but it works, which greatly surprises me. I plan to much improve the code to support more 'advanced' features, like being able to do more than checkout and update, as well as exposing tags and branches correctly. There's even the chance I'll stick Git support in, when I've had a play with Dulwich.

Still, hopefully I'll soon have it so it can serve South's code via svn, and thus restore harmony to my land of VCS users.

So, please, take the code and have a play with it. It's not formally licensed and released yet, but it will probably be Apache licensed. Feedback and suggestions for features, as well as how to linearise trees into svn histories, much welcomed!

Cycle lanes on pavements

Why I almost never use cycle lanes painted on pavementsYou know the cycle lanes I'm referring to. A white line painted down the middle of the pavement, so that cyclists and pedestrians can share it. Some of them are quite good, but the inner-city ones are generally a waste of time The main problem is that these lanes give way to every side road, so you have to slow down and look over your shoulder at every side road. It is also annoying if traffic is waiting to pull out the side road. Other annoyances are limited space to overtake slow cyclists or pedestrians spilling over from their side of the pavement, and a bumpier road surface than the main carriageway, tight corners and "Cyclists Dismount" signs. Luckily, in the UK "use of these facilities is not compulsory and will depend on your experience and skills" (The Highway Code for cyclists (61)), so you don't have to use them. They are sometimes useful as a legitimate way to bypass red traffic lights though. I recommend that you instead use bus lanes instead. "Most bus lanes may be used by cyclists as indicated on signs ” (65), so if there is a picture of a bicycle on the blue sign at the start of the bus lane, you can use it, and it'll be a smoother, faster ride.

Verbal Nagios Alerts

Have verbal nagios alerts with festivalHere's a fragile script I cooked up to do it Verbal Nagios