Sam Wilson's Journal


News From Everywhere

News feeds from all of the sites listed in the side bar.

Monday, July 14

Scripting News:

Minimal code for reading a river.

Technology | The Guardian:

Stuart Dredge: 20 best iPhone and iPad apps and games this week

Posted on the 14th of July at about 3PM.

Astropolo, Pyramid Solitaire Saga, Ingress, Spruce, Nike Football, Sonic Jump Fever, Take, Capo Touch and more

Continue reading...


johnmiedema: QA Architecture: Initialization. The solution is in the question.

Posted on the 14th of July at about 2PM.

The Question and Answer Architecture of Whatson can be divided into three major processes. The first process may be called Initialization, and is shown in the chart to the left. It involves the following steps: Accept the Question. A user asks a question, “Who is the author of The Call of the Wild?” Everything flows ...

Technology | The Guardian:

Samuel Gibbs: Android Wear: the nine best free apps for Google's smartwatch

Posted on the 14th of July at about 2PM.

Developers have already released dozens of official apps for Google's three Android-powered smartwatches, but which of those are really worth downloading?

Continue reading...

Technology | The Guardian:

Stuart Dredge: 20 best Android apps and games this week

Posted on the 14th of July at about 2PM.

Flavourit, Leo's Fortune, Fish Out of Water, Lost Toys, Climatology, Wayward Souls, Pyramid Solitaire Saga and more

Continue reading...

Scripting News:

A new feature in Happy Friends, the mailbox-style reader for Twitter users, helps you manage the flood of tweets.

Posted on the 14th of July at about 1PM.

A new feature in Happy Friends, the mailbox-style reader for Twitter users, helps you manage the flood of tweets.

Scripting News:

This is the serious platform stuff I was talking about

Technology | The Guardian:

Matt Weiner: Artificial intelligence powers Anki Drive to pole position on the indoor racetrack

Posted on the 14th of July at about 12PM.

A new car racing game uses robotics to bring the thrills and spills of Formula One into the home Continue reading...

Scripting News:

Fargo 1.64 is out. A new style of outline rendering, exemplified in yesterday's post about JavaScript memory management. And a major additio

Posted on the 14th of July at about 11AM.

Fargo 1.64 is out. A new style of outline rendering, exemplified in yesterday's post about JavaScript memory management. And a major addition to the Scripting News feed, the full source of the outline the post was rendered from. You'll see this show up in some innovation in the River of News format, coming soon (knock wood).

Technology | The Guardian:

Keith Stuart: Player one: the gamers who only want to play with themselves

Posted on the 14th of July at about 11AM.

The games industry is shifting inexorably toward a multiplayer future where every experience is shared with others. But some gamers don't want to be a part of it

Continue reading...

Technology | The Guardian:

Observer and Guardian readers: Tech Monthly readers' photography project: scale

Posted on the 14th of July at about 11AM.

Tech Monthly asked readers to join in the GuardianWitness photography project and share their scale photos. Here are some of our favourites.

You can share your photos on this month's theme of 'energy' on GuardianWitness

Continue reading...

Technology | The Guardian:

Simon Parkin: Activision CEO: 'We deal in big budgets and gambles'

Posted on the 14th of July at about 10AM.

Call of Duty publisher Activision's CEO Eric Hirshberg about the reality of working on giant, billion-dollar projects

Continue reading...

Technology | The Guardian:

Guardian Staff: Apple denies iPhones are a national security threat to China

Posted on the 14th of July at about 10AM.

Chinese state broadcaster labelled iPhone a location tracking threat that could expose state secrets

Continue reading...

Technology | The Guardian:

Samuel Gibbs: UK computer Raspberry Pi launches version three

Posted on the 14th of July at about 10AM.

Updated 'Model B+' board shrinks design and adds more ports as it approaches overall sales of 3m

Continue reading...

Technology | The Guardian:

Naomi Alderman: Role-playing games: all human life is there or so it sometimes seems

Posted on the 14th of July at about 10AM.

Games such as Dungeons and Dragons could help to solve some of the greatest technological challenges of our time Continue reading...


Sunday, July 13

Cory Doctorow's

Cory Doctorow: Homeland wins the Prometheus award!

Posted on the 13th of July at about 10PM.

I am delighted and honored to announce that my novel Homeland has won the Prometheus Award for best novel, tying with Ramez Naam's excellent novel Nexus. I am triply honored because this is the third Prometheus I've won -- the other two being for Little Brother and Pirate Cinema. My sincere thanks to the Libertarian … [Read more]


johnmiedema: Hammering out the Question and Answer Architecture. The big picture.

Posted on the 13th of July at about 9PM.

I settled on the Tankless option for the overall architecture — see diagram and discussion. In that architecture, the Question and Answer piece was one major component. I need to hammer out the details of that component because it has the most complexity, naturally. The following is the complete picture of the Question and Answer ...

Scripting News:

Scripting News: Why Little Card Editor is so much fun!

Scripting News:

Scripting News: JavaScript memory management question.


Saturday, July 12

PEAR Blog:

cweiske: PEAR 1.9.5 is out

Posted on the 12th of July at about 7PM.

The PEAR installer version 1.9.5 has been released today. The new version – three years after the last stable 1.9.4 and 2 weeks after the preview – is a bugfix only release. 13 bugs have been fixed. Among them are … Continue reading

Scripting News:

Some interesting places to go

Posted on the 12th of July at about 5PM.

Western states




Mid-Atlantic states

New York




New Jersey

Scripting News:

This is a test

Scripting News:

The requisite tease

Posted on the 12th of July at about 3AM.

Lately I've been working on software snacks. But there's some serious platform stuff coming too, soon.


Friday, July 11


johnmiedema: I met Watson in Austin Texas. And Watson’s female alter-ego, Willow.

Posted on the 11th of July at about 2PM.

I visited Austin Texas this week for training on the latest release (v3.5) of IBM Watson Content Analytics. Had a tour of Watson Lab. Was introduced to Watson’s lesser known female alter-ego, known on that day as Willow.

Scripting News:

Today's background image is a section of a mural by Diego Rivera.

Posted on the 11th of July at about 11AM.

Today's background image is a section of a mural by Diego Rivera.


Thursday, July 10 » Blog:

Alex: Wearing Android

Posted on the 10th of July at about 10PM.

I agree with most of this, but I get a lot of utility from seeing notifications on my wrist. Note that I already severely limit what notifications I receive, so when my wrist buzzes, it’s pretty much always for something I care about.


Cory Doctorow's

Cory Doctorow: How to save the CBC, making it a global online participatory leader

Posted on the 10th of July at about 5PM.

In my latest Guardian column, What Canada's national public broadcaster could learn from the BBC, I look at the punishing cuts to the CBC, and how a shelved (but visionary) BBC plan to field a "creative archive" of shareable and remixable content could help the network lead the country into a networked, participatory future. The … [Read more]


Adam: I am the Mapillary King of Pennsylvania!


Wednesday, July 9 » Blog:

Alex: The Pitchforks Are Coming… For Us Plutocrats

Posted on the 9th of July at about 9PM.

The only way to slash government for real is to go back to basic economic principles: You have to reduce the demand for government. If people are getting $15 an hour or more, they don’t need food stamps. They don’t need rent assistance. They don’t need you and me to pay for their medical care.…

# » Blog:

Alex: Custom Taxonomy as “Post Meta”

Posted on the 9th of July at about 9PM.

I found this post while sorting through my old drafts and decided to go ahead and publish it rather than trashing it. Hopefully the code samples don’t break too badly in WordPress 3.9. I’ve talked a bit about when to use custom taxonomies and when to use custom fields/post meta (and how they can be… » Blog:

Alex: Speaking up every. F*cking. Time

Posted on the 9th of July at about 6PM.

Fascinating read. (thanks Justin)

# » Blog:

Alex: Making Tweedy’s “Summer Noon” video (or how I went from designing apps to directing a music video)

Posted on the 9th of July at about 3PM.

Awesome project retrospective. And I’m always pleased to read something like this on someone’s own site rather than on Medium, etc.



johnmiedema: “… until the fingers let go of their numbers …”

Posted on the 9th of July at about 3AM.

I wish to grow dumber,to slip deep into woods that grow blinderwith each step I take,until the fingers let go of their numbersand the hands are finally ignorant as paws.Unable to count the petals, I will not know who loves me,who loves me not.Nothing to remember, nothing to forgive,I will stumble into the juice of ...


Tuesday, July 8

Cory Doctorow's

Cory Doctorow: OECD predicts collapse of capitalism

Posted on the 8th of July at about 11PM.

The Organization for Economic Cooperation and Development -- a pro-establishment, rock-ribbed bastion of pro-market thinking -- has released a report predicting a collapse in global economic growth rates, a rise in feudal wealth disparity, collapsing tax revenue and huge, migrating bands of migrant laborers roaming from country to country, seeking crumbs of work. They proscribe … [Read more]

James Bridle: Homo Sacer

Posted on the 8th of July at about 9AM.

Changelogs, holograms, and who gets killed.


Monday, July 7 » Blog:

Alex: A wrist-worn doohickey for health tracking and not…

Posted on the 7th of July at about 4PM.

A wrist-worn doohickey for health tracking and notifications will become commonplace if a compelling product can hit the $199 price point.


Sunday, July 6


johnmiedema: The “Tank-less” architecture is better suited to dynamic adaptation, to learning

Posted on the 6th of July at about 7PM.

Quick recap. The Hot Water Tank architecture for a Question-Answer system saves external content in a massive internal index along with Natural Language Processing (NLP) tags. The alternative Tank-less architecture does not have an index. It looks up external content on the fly, using a lightweight data source catalog. NLP is also performed on the fly. Here’s a ... » Blog:

Alex: Siri, Still Not a Competent Digital Assistant

Posted on the 6th of July at about 4PM.

So I tried Siri again today. I figured maybe it had improved since I tried it last a year or so ago. Me: What is a good place for lunch between here and {my destination}? Siri: This restaurant is near you: {restaurant info} (double-check, uh yep, that isn’t on the way – it’s actually in…


Friday, July 4

James Bridle: On the Rainbow Plane

Posted on the 4th of July at about 1PM.

On seeing through satellites, and catching them out.


johnmiedema: “Tank-less” architecture of a Cognitive system. Search and analyze on demand.

Posted on the 4th of July at about 1PM.

As I move to the end of this iteration of Whatson, I am stalling on the final step involving Answer Type computation. In the Hot Water Tank architecture of a Question-Answer system, all the source data gets crawled and indexed internally. During indexing, Natural Language Processing (NLP) is applied to the data, tagging Person entities ...


Thursday, July 3 » Blog:

Alex: On Good Enough Code

Posted on the 3rd of July at about 9PM.

An old link post I never published back in 2012, but it definitely still applies. Yes, this is also true: Finally, a complete and concise definition of "Legacy Code" by @chancancode at @CodeCoreYVR — Philippe Creux (@pcreux) June 23, 2014 But do we want to get stuff done or spend all day rewriting everything?



johnmiedema: “Hot Water Tank” architecture of a Question-Answer system. Crawl and index all content in advance.

Posted on the 3rd of July at about 4PM.

What I have built so far is really a Question-Answer (QA) system. Whatson can crawl and index content. It uses Natural Language Processing, even a custom model to recognize book titles. It can analyze queries and fetch matching search results. My build has followed the lines of the QA system in Taming Text by Ingersoll, ...


Wednesday, July 2 » Blog:

Alex: Camping at Golden Gate State Park

Posted on the 2nd of July at about 4PM.

Views from the trail Views from the trail Views from the trail Views from the trail Views from the trail Happy Hiker Sunset

No, not that Golden Gate – it’s a state park near Golden, Colorado. We spent a weekend camping there a few weeks back – beautiful area. Here are a few photos. » Blog:

Alex: Standing in the Shadows of Motown

Posted on the 2nd of July at about 3PM.

I watched this documentary a little while back and loved it. Check it out if you haven’t already caught it.


Tuesday, July 1

The Open Library Blog:

Jessamyn West: Open Library Scheduled Hardware Maintenance (completed)

Posted on the 1st of July at about 3PM.

Open Library will be down from 5:00PM to 7:00PM SF time (PDT, UTC/GMT -7 hours) on July 8, 2014 due to scheduled hardware maintenance. We’ll post updates here and on @openlibrary twitter. Thank you for your cooperation. UPDATE: 5:50PM PDT – the hardware maintenance is complete and is back online.  


Monday, June 30


johnmiedema: Whatson vs Watson. Next iteration of the basement build: Physika version 0.3, codename Wilson.

Posted on the 30th of June at about 4PM.

I started my basement build of a cognitive system in March. The idea was prompted by Tony Pearson’s article, originally entitled, “IBM Watson – How to build your own Watson Jr” in your basement.” The title was recently changed to “IBM Watson — How to replicate Watson hardware and systems design for your own use ...

Cory Doctorow's

Cory Doctorow: Coming to SLC and PDX

Posted on the 30th of June at about 10AM.

I'm heading to Salt Lake City this week for Westercon, followed by an appearance at the SLC Library on Monday. Next week, I'll be in PDX for three library gigs: Beaverton, Tigard, and Hillsboro. See you there!


johnmiedema: “Call me Ishmael.” Extracting response data from a Solr query.

Posted on the 30th of June at about 2AM.

Things are coming down to the crunch with this iteration (0.2) of my ‘Whatson’ basement build of a cognitive system. I have shown how to crawl and index documents using OpenNLP and Solr; this step internalizes public domain book content in readiness for user questions. I have shown how to create a custom model for ...


Sunday, June 29

James Bridle: Spectacular Sports Visualisations

Posted on the 29th of June at about 9AM.

On football, machine vision, sports and surveillance.


Friday, June 27

The Open Library Blog:

Jessamyn West: The Internet’s Own Boy premieres today

Posted on the 27th of June at about 9PM.

The Internet’s Own Boy, the documentary about Aaron Swartz, premieres online and in theaters today. You can watch it on the Internet Archive. From the film’s website The Internet’s Own Boy follows the story of programming prodigy and information activist Aaron Swartz. From Swartz’s help in the development of the basic internet protocol RSS to […]

PEAR Blog:

cweiske: PEAR 1.9.5dev1 released

Posted on the 27th of June at about 5PM.

I’ve just released a preview of the upcoming PEAR installer version 1.9.5: PEAR 1.9.5dev1. Version 1.9.5 will be the first release of the PEAR installer since 3 years, and thus needs quite some testing before declaring it stable. Instead of … Continue reading


Thursday, June 26


johnmiedema: Identify Character entities by the ‘colorfulness’ of their names. An investigation.

Posted on the 26th of June at about 2PM.

I’m working on NER in the domain of literature. Using standard NER I can pull out People names, authors like “Robert Louis Stevenson” and character names like “Long John Silver”. But of course there is no distinction between real-life authors and fictional characters. I built a custom model to identify Book Titles, a quick implementation for ...


Monday, June 23

Cory Doctorow's

Cory Doctorow: Podcast: How Amazon is holding Hachette hostage

Posted on the 23rd of June at about 5PM.

Here's a reading (MP3) of my latest Guardian column, How Amazon is holding Hachette hostage, which examines how Hachette's insistence on DRM for their ebooks has taken away all their negotiating leverage with Amazon, resulting in Amazon pulling Hachette's books from its catalog in the course of a dispute over discounting: Under US law (the … [Read more]

Cory Doctorow's

Cory Doctorow: My talk at the Edinburgh Publishing Conference

Posted on the 23rd of June at about 9AM.

Here's my talk at last week's Edinburgh Publishing Conference, called "Information Doesn't Want to Be Free."


Friday, June 20

Cory Doctorow's

Cory Doctorow: How Hachette made the rope that Amazon is hanging it with

Posted on the 20th of June at about 3PM.

In my latest Guardian column, "How Amazon is holding Hachette hostage," I discuss the petard that the French publishing giant Hachette is being hoisted upon by Amazon. Hachette insisted that Amazon sell its books with "Digital Rights Management" that only Amazon is allowed to remove, and now Hachette can't afford to pull its books from … [Read more]


Thursday, June 19

FSF News:

US Supreme Court makes the right decision to nix Alice Corp. patent, but more work needed to end software patents for good

Posted on the 19th of June at about 9PM.

BOSTON, Massachusetts, USA -- Thursday, June 19, 2014 -- Today the United States Supreme Court unanimously ruled a prominent software patent invalid in the case of Alice Corp. v. CLS Bank, saying that implementing an abstract idea on a computer does not make that idea patent-eligible.


Wednesday, June 18


Adam: Sauerkraut


Tuesday, June 17

Cory Doctorow's

Cory Doctorow: My Tedxoxbridge talk: How to break the Internet

Posted on the 17th of June at about 2PM.

I gave a talk last month in Cambridge at the Tedxoxbridge event called How to break the Internet, about how urgent it is that the Internet is fundamentally broken, and why we should be hopeful that we can fix it.


Monday, June 16

Cory Doctorow's

Cory Doctorow: Homeland shortlisted for the Sunburst Award

Posted on the 16th of June at about 4PM.

I'm honoured and delighted to learn that my novel Homeland has been shortlisted for Canada's Sunburst Award, a juried prize for excellence in speculative fiction. I've won the Sunburst twice before, and this is one of my proudest accomplishments; I'm indebted to the jury for their kindness this year. The other nominees are a very … [Read more]

Cory Doctorow's

Cory Doctorow: Podcast: News from the future for Wired UK

Posted on the 16th of June at about 2PM.

Here's a reading (MP3) of a short story I wrote for the July, 2014 issue of Wired UK in the form of a news dispatch from the year 2024 -- specifically, a parliamentary sketch from a raucous Prime Minister's Question Time where a desperate issue of computer security rears its head: Quick: what do all … [Read more]

Linode Blog:

caker: 11th Linode Birthday / $10 Linode plan

Posted on the 16th of June at about 2PM.

Linode opened its doors 11 years ago today, offering virtual servers with great service, and ultimately pioneering a new industry. It’s hard to believe it’s been that long. It’s been fun to reminisce through the old forum posts from those formative years like this one and this one. Many of the old posts echo the same sentiments […]


Thursday, June 12


Adam: Tuscarora in Tuscarora Part 2

Posted on the 12th of June at about 11PM.

As part of my continuing quest to hike all 798 miles of the Pennsylvania State Forest Hiking Trails System, I drove out to the Tuscarora State Forest to pick up where I left off on the Tuscarora Trail. My plan was to hike from Cowpens Road to Fenton Knob, and then turn around and hike […]

Linode Blog:

Stormy Mayersky: Summer Conferences 2014

Posted on the 12th of June at about 1PM.

Linode will be exhibiting at several upcoming conferences this summer. Stop by our booth, chat up our crew and learn all about what’s new at Linode. Check out the full list below of where our team will be and we’ll see you there!   SouthEast LinuxFest | Charlotte, NC | June 21-23 Started in 2009, […]


Sunday, June 8


Adam: Wildflowers on the AT


Saturday, June 7


Adam: Picking Strawberries


Friday, June 6


Adam: Photos From the Appalachian Trail Museum


Thursday, June 5

FSF News:

To help Reset the Net, FSF launches guide to email protection

Posted on the 5th of June at about 2PM.

BOSTON, Massachusetts, USA -- Thursday, June 5th, 2014 -- The Free Software Foundation (FSF) today released Email Self-Defense, a how-to guide for setting up and using email encryption.


Wednesday, June 4


Adam: Started reading “Letters” By Gaius Plinius Caecilius Secundus

Posted on the 4th of June at about 9PM.

Started reading Letters By Gaius Plinius Caecilius Secundus #harvardclassics


Adam: Finished reading “All for Love; Or, The World Well Lost: A Tragedy” by John Dryden and rated it two stars out of five. ★★☆☆☆

Posted on the 4th of June at about 8PM.

Finished reading All for Love; Or, The World Well Lost: A Tragedy by John Dryden and rated it two stars out of five. ★★☆☆☆ #harvardclassics


Monday, June 2

Open Maps:

Chris Hill: Local radio

Posted on the 2nd of June at about 10AM.

Just got a plug for OSM on BBC Radio Humberside. Maybe there's scope for more info there ...


Sunday, June 1


Adam: Pine Flats Road Vista


Thursday, May 29


Adam: Tuscarora in Tuscarora: Part 1

Posted on the 29th of May at about 12PM.

My recent trip on the AT has re-igniting my interest in hiking. I decided to take advantage of this unexpected gust of motivation, and try to log some miles toward the DCNR State Forest Trails Award. My plan for the moment is to try to complete as many miles as I can on out-and-back dayhikes. […]


Wednesday, May 21

FSF News:

Tehnoetic wireless USB adapter now FSF-certified to respect your freedom

Posted on the 21st of May at about 9PM.

BOSTON, Massachusetts, USA -- Wednesday, May 21, 2014 -- The Free Software Foundation (FSF) today awarded Respects Your Freedom (RYF) certification to the Tehnoetic TET-N150 wireless USB adapter.


Sunday, May 18

The Open Library Blog:

Jessamyn West: Resolved: Open Library unexpected downtime

Posted on the 18th of May at about 12AM.

Update: This should now be resolved. 6 pm PDT. Adobe had an unprecedented license server outage for most of the day on May 15th (PDT). Users have experienced issues checking books out of our lending library, mainly getting various Adobe errors. We are still trying to resolve the issues resulting from Adobe’s server outage and […]


Friday, May 16

Coding Horror:

Jeff Atwood: The Infinite Space Between Words

Posted on the 16th of May at about 8PM.

Computer performance is a bit of a shell game. You're always waiting for one of four things:

  • Disk
  • CPU
  • Memory
  • Network

But which one? How long will you wait? And what will you do while you're waiting?

Did you see the movie "Her"? If not, you should. It's great. One of my favorite scenes is the AI describing just how difficult it becomes to communicate with humans:

It's like I'm reading a book… and it's a book I deeply love. But I'm reading it slowly now. So the words are really far apart and the spaces between the words are almost infinite. I can still feel you… and the words of our story… but it's in this endless space between the words that I'm finding myself now. It's a place that's not of the physical world. It's where everything else is that I didn't even know existed. I love you so much. But this is where I am now. And this who I am now. And I need you to let me go. As much as I want to, I can't live your book any more.

I have some serious reservations about the work environment pictured in Her where everyone's spending all day creepily whispering to their computers, but there is deep fundamental truth in that one pivotal scene. That infinite space "between" what we humans feel as time is where computers spend all their time. It's an entirely different timescale.

The book Systems Performance: Enterprise and the Cloud has a great table that illustrates just how enormous these time differentials are. Just translate computer time into arbitrary seconds:

1 CPU cycle0.3 ns1 s
Level 1 cache access0.9 ns3 s
Level 2 cache access2.8 ns9 s
Level 3 cache access12.9 ns43 s
Main memory access120 ns6 min
Solid-state disk I/O50-150 μs2-6 days
Rotational disk I/O1-10 ms1-12 months
Internet: SF to NYC40 ms4 years
Internet: SF to UK81 ms8 years
Internet: SF to Australia183 ms19 years
OS virtualization reboot4 s423 years
SCSI command time-out30 s3000 years
Hardware virtualization reboot40 s4000 years
Physical system reboot5 m32 millenia

The above Internet times are kind of optimistic. If you look at the AT&T real time US internet latency chart, the time from SF to NYC is more like 70ms. So I'd double the Internet numbers in that chart.

Latency is one thing, but it's also worth considering the cost of that bandwidth.

Speaking of the late, great Jim Gray, he also had an interesting way of explaining this. If the CPU registers are how long it takes you to fetch data from your brain, then going to disk is the equivalent of fetching data from Pluto.

He was probably referring to traditional spinning rust hard drives, so let's adjust that extreme endpoint for today:

  • Distance to Pluto: 4.67 billion miles.
  • Latest fastest spinning HDD performance (49.7) versus latest fastest PCI Express SSD (506.8). That's an improvement of 10x.
  • New distance: 467 million miles.
  • Distance to Jupiter: 500 million miles.

So instead of travelling to Pluto to get our data from disk in 1999, today we only need to travel to … Jupiter.

That's disk performance over the last decade. How much faster did CPUs, memory, and networks get in the same time frame? Would a 10x or 100x improvement really make a dent in these vast infinite spaces in time that computers deal with?

To computers, we humans work on a completely different time scale, practically geologic time. Which is completely mind-bending. The faster computers get, the bigger this time disparity grows.

[advertisement] Stack Overflow Careers matches the best developers (you!) with the best employers. You can search our job listings or create a profile and even let employers find you.


Thursday, May 15


Clare Davies: Interior Scene Abbotsford Sculpture Gallery 117 Vere Street Abbotsford Residency  – April/May 2014 Showing  – Friday 9th ̵

Posted on the 15th of May at about 9AM.

Interior Scene Abbotsford Sculpture Gallery 117 Vere Street Abbotsford Residency  – April/May 2014 Showing  – Friday 9th – Sunday 17th May 12-5pm  


Wednesday, May 14

FSF News:

FSF condemns partnership between Mozilla and Adobe to support Digital Restrictions Management

Posted on the 14th of May at about 10PM.

BOSTON, Massachusetts, USA — Wednesday, May 14th, 2014 — In response to Mozilla's announcement that it is reluctantly adopting DRM in its Firefox Web browser, Free Software Foundation executive director John Sullivan made the following statement:


Tuesday, May 6

FSF News:

Global community rallies for International Day Against DRM

Posted on the 6th of May at about 3AM.

BOSTON, Massachusetts, USA -- Tuesday, May 6th, 2014 -- Today a wide variety of community groups, activist organizations and businesses are taking part in the 8th International Day Against DRM ( The groups are united in envisioning a world without Digital Restrictions Management, technology that places arbitrary restrictions on what people can do with digital media, often by spying on them. As the largest anti-DRM event in the world, the International Day Against DRM is an important counterpoint to the pro-DRM message broadcast by powerful media and software companies. The Day is coordinated by Defective by Design (, the anti-DRM campaign of the Free Software Foundation.


Friday, May 2

FSF News:

FSF seeks full-time senior GNU/Linux systems administrator

Posted on the 2nd of May at about 5PM.

The Free Software Foundation (FSF), a Boston-based 501(c)(3) charity with a worldwide mission to protect freedoms critical to the computer-using public, seeks a full-time senior systems administrator.


Friday, April 25

Coding Horror:

Jeff Atwood: What Can Men Do?

Posted on the 25th of April at about 8AM.

(The title references Shanley Kane's post by the same name. This post represents my views on what men can do.)

It's no secret that programming is an incredibly male dominated field.

  • Figures vary, but somewhere from 20% to 29% of currently working programmers are female.

  • Less than 12% of Computer Science bachelor's degrees were awarded to women at US PhD-granting institutions in 2010.

So, on average, only about 1 out of every 5 working programmers you'll encounter will be female. You could say technology has a man problem.

In an earlier post I noted that many software developers I've known have traits of Aspergers. Aspergers is a spectrum disorder; the more severe the symptoms, the closer it is to autism. And did you know that autism skews heavily towards males at a 4:1 ratio?

Interesting. I might even go so far as to say some of those traits are what makes one good at programming.

That's the way it currently is. But is that the way it should be? I remember noticing that the workforce of the maternity ward at the hospital where our children were born was incredibly female dominated. Is there something inherently wrong with professions that naturally skew heavily male or female?

Consider this list of the most male and female dominated occupations in the Netherlands from 2004. It notes that:

In higher and academic level positions, men and women are more often represented equally. This pattern of employment has hardly changed over the last years.

Is programming a higher and academic level occupation? I'm not so sure, given that I've compared programmers to auto mechanics and plumbers in the past. And you'll notice squarely where those occupations are on the above graphs. There's nothing wrong with being an auto mechanic or a plumber (or a programmer, for that matter), but is there anything about those particular professions that demands, in the name of social justice, that there must be 50% male plumbers and 50% female plumbers?

For a counterpoint, here's a blog post from Sara J. Chipps. When I've e-mailed her in the past with my stupid questions on topics like this, she tries her best to educate me with empathy and compassion. That's why I love her.

This is an excerpt from a blog post she wrote in 2012 which answered my question:

Many people I meet ask me a variant of the question “I understand we want more women in technology, but why?” It’s a great question, and not at all something we should be offended by. Often men are afraid to ask questions like this for fear there will be backlash, and I think that fear can lead to stifling an important conversation.

Frankly, the Internet is thriving without women building it, why should that change? Three reasons:

1) Diversity leads to better products and results

As illustrated in this Cornell study along with many others, diversity improves performance, morale, and end product. More women engineers means building a better internet, and improving software that can service society as a whole. Building a better Internet is why I started doing software development in the first place. I think we can all agree this is of utmost importance.

2) The Internet is the largest recording of human history ever built

Right now the architecture for that platform is being built disproportionally by white and asian males. You’ve heard the phrase “he who writes history makes history”? We don’t yet know how this will affect future generations.

How can architecture be decidedly male? I like to refer to the anecdotal story of the Apple Store glass stairs. While visually appealing, there was one unforeseen consequence to their design: the large groups of strange men that spend hours each day standing under them looking up. As a woman, the first time I saw them I thought “thank god I’m not wearing a skirt today.” Such considerations were not taken in designing these stairs. I think it’s probable, if not easily predictable, that in a few years we will see such holes in the design of the web.

3) Women in 10 years need to be able to provide for themselves, and their families

Now, this reason is purely selfish on the part of women, but we all have mothers, and sisters, so I hope we can relate.

This year there are 6 million information technology jobs in the US, up from 628,600 in 1987 and 1.34 million in 1997. Right now jobs in technology have half the unemployment rate of the rest of the workforce. There is no sign this will change anytime soon. If growth continues at the current rate, it will not be long until women will not be able to sustain themselves if not involved in a technical field.

We have to start educating young girls about this now, or they may ultimately become the poorest demographic among us.

These are good reasons. I'm particularly fond of #1. Diversity in social perspectives is hugely valuable when building social software intended for, y'know, human beings of all genders, like Discourse and Stack Exchange. Also, I get really, really tired of all the aggressive mansplaining in software development. Yes, even my own. Sometimes it would be good to get some ladysplaining all mixed up in there for variety.

I suppose any effort to encourage more women to become software engineers should ideally start in childhood.

boy toys vs girl toys

Dolls? Pshaw. In our household, every child, male or female, is issued a regulation iPad at birth. You know, the best, most complex toy there is: a computer. And, shocker, I'm kind of weird about it – I religiously refer to it as a computer, never as an iPad. Never. Not once. Not gonna happen in my house. Branding is for marketing weasels. So the twin girls will run around, frantically calling out for their so-called "'puter". It puts a grin on my face every time. And when anything isn't here, Maisie has gotten in the habit of saying "dada chargin'". Where's the milk, Maisie? "dada chargin'".

But not everyone has the luxury of spawning their own processes and starting from boot. (You really should, though. It will kick your ass.)

What can you do?

If you're reading this, there's about an 80% chance that you're a man. So after you give me the secret man club handshake, let's talk about what we men can do, right now, today, to make programming a more welcoming profession for women.

  1. Abide by the Hacker School Rules

    Let's start with the freaking brilliant Hacker School rules. This cuts directly to the unfortunate but oh-so-common Aspergers tendencies in programmers I mentioned earlier:

    • No feigning surprise. "I can't believe you don't know what the stack is!"
    • No well-actuallys. "Well, actually, you can do that without a regular expression."
    • No back seat driving. Don't intermittently lob advice across the room.
    • No subtle sexism via public debate.

    Does any of this sound familiar? Because it should. Oh God does this sound familar. Just read the whole set of Hacker School guidelines and recognize your natural tendencies, and try to rein them in. That's all I'm proposing.

    Well, actually, I'll be proposing a few more things.

  2. Really listen. What? I SAID LISTEN.

    Remember this scene in Fight Club?

    This is why I loved the support groups so much, if people thought you were dying, they gave you their full attention. If this might be the last time they saw you, they really saw you. Everything else about their checkbook balance and radio songs and messy hair went out the window. You had their full attention. People listened instead of just waiting for their turn to speak. And when they spoke, they weren't just telling you a story. When the two of you talked, you were building something, and afterward you were both different than before.

    Guilty as charged.

    My wife is a scientist, and she complains about this happening a lot at her work. I don't even think this one is about sexism, it's about basic respect. What does respect mean? Well, a bunch of things, but let's start with openly listening to people and giving them our full attention when they talk to us – rather than just waiting for our turn to speak.

    Let's shut up and listen quietly with the same thoughtfulness that we wish others would listen to us. We'll get our turn. We always do, don't we?

  3. If you see bad behavior from other men, speak up.

    It's not other people's job to make sure that everyone enjoys a safe, respectful, civil environment at work and online.

    It's my job. It's your job. It is our job.

    There is no mythical men's club where it is OK to be a jerk to women. If you see any behavior that gives you pause, behavior that makes you wonder "is that OK?", behavior that you'd be uncomfortable with directed toward your sister, your wife, your daughter – speak up. Honestly, as one man to another. And if that doesn't work for whatever reason, escalate.

  4. Don't attempt romantic relationships at work.

    Do you run a company? Institute a no-dating rule as policy. Yeah, I know, you can't truly enforce it, but it should still be the official company policy. And whether the place where you work has this policy or not, you should have it on a personal level.

    I'm sorry I have to be that guy who dumps on true love, but let's be honest: the odds of any random office romance working out are pretty slim. And when it doesn't, how will you handle showing up to work every day and seeing this person? Will there be Capulet vs Montague drama? The women usually get the rough end of this deal, too, because men aren't good at handling the inevitable rejection.

    Just don't do it. Have all the romantic relationships you want outside work, but do not bring it to work.

  5. No drinking at work events.

    I think it is very, very unwise for companies to have a culture associated with drinking and the lowered inhibitions that come with drinking. I've heard some terrifyingly awful stories that I don't even want to link to here. Men, plus women, plus alcohol is a great recipe for college. That's about all I remember from college, in fact. But as a safe work environment for women? Not so much.

    If you want to drink, be my guest. Drink. You're a grown up. I'm not the boss of you. But don't drink in a situation or event that is officially connected with work in any way. That should absolutely be your personal and company policy – no exceptions.

There you have it. Five relatively simple things you, I, and all other working male programmers can do to help encourage a better environment for men and women in software plumbing. I mean engineering.

So let's get to it.

(I haven't listed anything here about mentoring. That's because I am an awful mentor. But please do feel free to mention good resources, like Girl Develop It, that encourage mentoring of female software engineers by people that are actually good at it, in the comments.)

[advertisement] How are you showing off your awesome? Create a Stack Overflow Careers profile and show off all of your hard work from Stack Overflow, Github, and virtually every other coding site. Who knows, you might even get recruited for a great new position!


Monday, April 21


James Ward: BERLIN


Thursday, April 17

Linode Blog:

caker: The New Linode Cloud: SSDs, Double RAM & much more

Posted on the 17th of April at about 2PM.

Over the last year, and very feverishly over the past five months, we’ve been working on a really big project: a revamp of the Linode plans and our hardware and network – something we have a long history of doing over our past 11 years. But this time it’s like no other. These upgrades represent […]


Wednesday, April 16

Open Maps:

Chris Hill: Images to map overlays

Posted on the 16th of April at about 7PM.

I have been working on a project that needs maps to make sense of it, more of that in a later post. It is a history project for my village so I wanted to overlay maps from the 19th century and early 20th century with the modern map. The modern map is easy, I know a good contemporary map I can use. For the historical map layers I need maps laid out as tiles so I can use Leaflet to display them.

I was given a scanned map of the village dated 1824 and found another set of maps dated 1910. All of these are out of copyright, so I can comfortably use them. Scans of the 1910 maps and a lot of fiddling and joining gives me a .jpg file for the village. Now the two scans need aligning to be the same projection as the OSM map.

I chose to use Mapwarper to rectify the scans to match OSM. The process is straightforward. I uploaded the .jpg file and the site overlays it on the OSM map. You can add control points on the uploaded image and matching ones on the OSM map. The more control points you add, the better the final alignment. I used road junctions mostly as the control points, though the 1824, pre-enclosure map has far fewer roads and I had to make the most of what I could find. The image is then rectified and a GeoTIFF is available to download. A GeoTIFF is a bitmap with georeferencing information added. Once this has been downloaded it can be turned into tiles.

GDAL has a set of utilities to work with geo-data. One of these is which is a python program to turn a GeoTIFF into a set of tiles. It creates TMS tiles, TMS stands for Tile Map Service which I think was intended to be a standard. The numbering of the Y-axis tiles is inverted compared to OSM tiles. It is easy to rename the tiles to match the OSM convention, but Leaflet (and OpenLayers) supports TMS and none-TMS layers and can use them interchangeably. 

Running gdal2tiles (e.g. -z13-19 xxxx.tif tiledir) gives set of tiles from the GeoTIFF (xxxx.tif) for the zoom levels specified (13-19) and stores them in the directory specified (tiledir). These are now ready for use with leaflet.

I want to overlay the older maps on the modern map. All of these layers are opaque, so if the three layers are just stacked then only the last one will display as it will hide the other two. Leaflet lets you specify the opacity of a layer, so by altering that the details of each layer can be visible simultaneously.  These can then be used as the base to show an extra layer of detail, but more that another time.

I have created a simple page to show these layers. There are sliders to control the opacity. I spent a bit of time aligning the 1910 map and I'm fairly happy with the result. The 1824 map was a bit crude so I used fewer control points and the result is not as good. It is still interesting. I'm looking for any more maps of this era for my village.

Coding Horror:

Jeff Atwood: Three Things

Posted on the 16th of April at about 5PM.

I've expressed my disillusionment with to-do lists before.

But let's try something simpler, a little experiment. What do you use to keep track of what you need to do? Hold it up, so I can see it. Humor me.

Seriously! No no no, hold it closer, near the screen here. Let me look at it. Let me get a good, long look at it.

Now imagine me slapping this thing out of your hand.

don't go there

I just want to make a point, not break your fancy whatchamacallit. So pretend I slapped it into a soft fluffy pillow on the ground, not the hard concrete of the sidewalk. Though I probably should have.

Whatever that thing is, it's a crutch. You don't need it. It's hurting you more than it is helping. Get rid of it.

Instead, ask yourself this:

What three things do you need to do today?

You should be able to instantly answer this simple question, each day, every day, for the rest of your life. Without any tools other than the brain you were born with.

If you don't have this skill, develop it. Practice, starting today. Right now.

What are you doing right now? Is it going to somehow result in one of those three things getting done today? Will this you get you to where you need to be by the end of the day?

I'm not asking you to admonish yourself or to make any changes to your routine. Just keep it simple, focus on the important things, and add a little layer of awareness.

So. Two items left. I'm doing pretty good today.

[advertisement] Hiring developers? Post your open positions with Stack Overflow Careers and reach over 20MM awesome devs already on Stack Overflow. Create your satisfaction-guaranteed job listing today!


Wednesday, April 9

Linode Blog:

caker: Introducing Hourly Billing

Posted on the 9th of April at about 6PM.

Introducing hourly billing. Now you can enjoy Linode services billed in hour increments, add services to your account without needing to pre-pay, and be invoiced at the end of each month only for the hours you used. We’ve made this as simple as possible: resources are still bundled together so it’s clear what you’re getting, […]


Tuesday, April 8


jonny: Custom terminal titles in Ubuntu

Posted on the 8th of April at about 11PM.

Having fully switched from OS X to a proper Free operating system, I’m finding there’s a few things that the new environment doesn’t quite do as I’d like. One of them is the ability to name terminals per tab in gnome-terminal, but there’s no immediate provision for it. So, I’ve written a simple PHP script […]

FSF News:

Free Software Foundation statement on Heartbleed vulnerability

Posted on the 8th of April at about 10PM.

Today, news broke of a major security vulnerability in OpenSSL. The bug, which is being referred to as "heartbleed", allows unauthorized access to information protected, under normal conditions, by the SSL/TLS encryption used to secure much of the Internet. In response to the news, Free Software Foundation executive director John Sullivan made the following statement:

Linode Blog:

admin: Heartbleed OpenSSL Vulnerability

Posted on the 8th of April at about 7PM.

On April 7, 2014 a vulnerability (CVE-2014-0160, also known as “Heartbleed”) was released that could allow attackers to view sensitive information in a server’s memory such as secret keys and passwords. Given the severity of this problem, Linode has taken the necessary steps to keep our customers and their information safe from potential attacks. Am […]


Saturday, April 5


jonny: Fully virtualising the desktop environment

Posted on the 5th of April at about 8PM.

Introduction Last year I tried running Fedora on a MacBook Pro (Intel i5 processor) to see how much pain was involved in switching to Linux completely. I was also interested to see whether using virtual machines for day-to-day tasks was feasible, via Oracle’s VirtualBox. In the end I didn’t make the switch: an idle guest […]


Thursday, April 3

Dave Robertson:

Dave Robertson: Sandy, Juan and I

Posted on the 3rd of April at about 6PM.

On a Monday, her basement filled with water from one of the most polluted canals in New York City. Four days earlier, Talia had been taking me on a nighttime bicycle tour of the Red Hook area of Brooklyn, on which I took this snap of the lower Manhattan skyline. At this stage we had […]

The post Sandy, Juan and I appeared first on Dave Robertson.


Tuesday, April 1

The Open Library Blog:

Anand Chitipothu: Open Library Scheduled Hardware Maintenance (Completed)

Posted on the 1st of April at about 7PM.

Open Library will be down from 5:00PM to 6:00PM SF time (PDT, UTC/GMT -7 hours) on April 1, 2014 due to a scheduled hardware maintenance. We’ll post updates here and on @openlibrary twitter. Thank you for your cooperation. UPDATE 5:23PM PDT - is back online now.

Mostly Harmless:

rob: Soylent Announces New Line of GMKs

Posted on the 1st of April at about 6PM.

Soylent Announces New Line of GMKs

It gives me great pleasure to announce the first public release from Soylent X, our research arm focused on “solving the unsolvable”. After solving physical health with Soylent, we sought to tackle the elephant in the room of America’s healthcare system: mental health. Americans suffer from the highest levels of anxiety in the world. Research […]


Sunday, March 30



Posted on the 30th of March at about 12PM.

An extended version of Chas & Dave’s 1980 hit Rabbit:


Tuesday, March 25

The Open Library Blog:

Anand Chitipothu: Open Library Scheduled Maintenance (Completed)

Posted on the 25th of March at about 5PM.

Open Library will be down from 4:00PM to 4:30PM SF time (PDT, UTC/GMT -7 hours) on March 25, 2014 due to a scheduled hardware maintenance. We’ll post updates here and on @openlibrary twitter. Thank you for your cooperation. UPDATE 4:45PM - is back online now.


Saturday, March 22

FSF News:

Matthew Garrett, GNOME Foundation's Outreach Program for Women are Free Software Award winners

Posted on the 22nd of March at about 11PM.

BOSTON, Massachusetts, USA — Saturday, March 22nd, 2014 — Free Software Foundation president Richard M. Stallman announced the winners of the FSF's annual Free Software Awards at a ceremony on Saturday, March 22nd, held during the LibrePlanet 2014 conference at MIT, in Cambridge, Massachusetts. Two awards were given: the Award for the Advancement of Free Software, and the Award for Projects of Social Benefit.


Wednesday, March 19

Coding Horror:

Jeff Atwood: Please Read The Comments

Posted on the 19th of March at about 9PM.

I find the Don't Read The Comments movement kind of sad.

Comments sections are frequently misogynistic, homophobic, racist, and very often POORLY WRITTEN. Why bother reading them?

— Don't Read Comments (@AvoidComments) March 8, 2014

In 2006 I said that a blog without comments is not a blog and I stand behind that statement. There have been brief periods where my own blog has been temporarily without comments, but they will always come back as long as I'm in charge here.

I'm a fan of comments, warts and all. They're noisy, sure, but in my experience they reliably produce crowdsourced knowledge in aggregate. I understand being pressed for time, but if you want the complete picture, in the same way that you should follow all those little citation links in Wikipedia articles, you should read the comments.

I empathize with the complaint, believe me:

I used to believe that as an online writer, I had an obligation to read the comments. I thought that it was important from a fact-checking perspective, that it somehow would help me grow as a writer. What I’ve learned is that if there’s something wrong or important or even, sometimes, good about a story, someone will let you know. I’ve over the years amassed an amazing community of Salon readers who engage via email, who challenge me, who inspire new stories, who are decent people and treat me like one in return. What I was getting in the comments was a lot of anonymous “You suck, bitch.”

I admit it’s depressing for one who’s invested almost her entire career in online community to throw in the towel on it in this way. I want it to be better. But it’s just not. As a colleague once observed, “I just can’t take another letter from Angry Bad Divorce Guy.”

But that's so many pesky words, isn't it? TL;DR. Allow me to illustrate with a graph that your brain can absorb in milliseconds:

comments and esteem for humanity

What is wrong with people, amirite?

I humbly submit that this is asking the wrong question.

What is wrong with us?

I agree with Anil Dash. If your website is full of assholes, it's your fault.

As it turns out, we have a way to prevent gangs of humans from acting like savage packs of animals. In fact, we've developed entire disciplines based around this goal over thousands of years. We just ignore most of the lessons that have been learned when we create our communities online. But, by simply learning from disciplines like urban planning, zoning regulations, crowd control, effective and humane policing, and the simple practices it takes to stage an effective public event, we can come up with a set of principles to prevent the overwhelming majority of the worst behaviors on the Internet.

If you run a website, you need to follow these steps. if you don't, you're making the web, and the world, a worse place. And it's your fault. Put another way, take some goddamn responsibility for what you unleash on the world.

In other words, if you are unwilling to moderate your online community, you don't deserve to have an online community. There's no end of websites recreating the glorious "no stupid rules" libertarian paradise documented in the Lord of the Flies in their comment sections, from scratch, each and every day. This ends exactly as you would expect it to.

Libertarians make bad lifeguards

However, demanding that every online community, every comment section, have active moderation is a tough sell:

  • Skilled moderators are difficult to find. A bad moderator is often worse than no moderator.
  • Do you have the budget to pay full time moderators?
  • Are your moderators around 24/7?
  • If you have a single moderator making unilateral decisions, who appeals their decisions? If you have multiple moderators, how do they resolve disagreements?
  • What happens when your moderators inevitably burn out or move on?

One of the reasons I launched the Discourse project was due to the utter lack of understanding of how you build software to help online discussion communities moderate themselves. Their survival depends on it.

What I learned building Stack Overflow, more than anything else, is this: the only form of moderation that scales with the community is the community itself. We became quite skilled at building systems for self governance of online communities, and one of the things I'm proudest of is that – if we did our jobs well – decades from now Stack Exchange will still be a network of viable, functioning, entirely self-governing communities.

It's always a people problem. This is absolutely true. But it's also true that software can profoundly affect people's behavior, and provide tools for encouraging positive behaviors while modifying and mitigating negative behaviors. All that stuff Anil Dash described as your responsibility? Discourse handles it automatically, even if the owner installs and then walks away forever.

These are the principles of civilized discourse that Discourse is founded on, that our discussion software is designed around. Civilization begins with software that actively works to help you create safe environments for having reasonable conversations with other human beings. On the Internet, even!


This is all a very long winded way of saying that effective immediately, Coding Horror is using Discourse to power its discussions.

You may have questions, so I will attempt to answer them:

  • This blog is now hosted on Ghost, which doesn't natively support comments. All previous TypePad comments were converted into Discourse. To the best of our ability, nothing was lost.

  • Discourse is still beta, but late beta. Expect changes and improvements as we make our way to 1.0.

  • Discourse is a companion area to this blog, a clubhouse for the community. You can visit there directly at

  • Every new blog post here results in a corresponding topic being automatically created in the Discourse discussion area.

  • I do not, and will not, offer in-page commenting here. If you want to reply with a comment, you go next door to the community clubhouse. There's a fairly strong, but permeable, membrane between the editorial area here and the community area there. This is intentional.

  • At the bottom of each blog entry here you will find read only versions of all replies to the Discourse topic associated with this blog entry. I might eventually switch that to a "best of" algorithm so readers see the best comments without having to wade through dozens or hundreds of replies.

If you like what you see, Discourse is 100% free open source software, so you can easily set up the same system for your own blog. We even have a WordPress plugin to assist.

Now who's ready for some dogfooding?

[advertisement] Stack Overflow Careers matches the best developers (you!) with the best employers. You can search our job listings or create a profile and even let employers find you.


James Ward: AIRFIX

Posted on the 19th of March at about 1PM.

Never go on holiday with the people from Airfix, they don’t seem to go to very nice places.


Monday, March 17

Coding Horror:

Jeff Atwood: The Trap You Set For Yourself

Posted on the 17th of March at about 7AM.

The Dan Ariely books Predictably Irrational and The Upside of Irrationality profoundly influenced the way I design my massively multiplayer typing games. These books offer science in the small about human behavior, and stark insights into user behavior — and by that I mean our own behavior.

The Long Goodbye

All detectives are by definition students of human nature. As the famous fictional detective Philip Marlowe is fond of noting:

There is no trap so deadly as the trap you set for yourself.

We're born pretty darn great at lying to ourselves, and we get progressively better and better at it the older we become. In software development terms, every user lies.

We become experts at lying to ourselves to avoid being functionally crippled on a daily basis by the ongoing fears that:

  • your work does not matter.

  • your life does not matter.

  • nobody cares about you.

  • you aren't good enough.

  • you aren't smart enough.

  • gosh darn it, people don't like you.

Thus, lying to yourself is part of the human condition. Otherwise nobody would be able to get out of bed in the morning.

However, if you have daily internal struggles with self doubt and indecision, you are almost certainly not going to achieve your mission, whatever it may be. I have found that, to a disturbing degree in this world, you have to believe your own hype to succeed.

Unfortunately, this is something that men are better than women at.

And it looks to me like women in general, and the women whose educations I am responsible for in particular, are often lousy at those kinds of behaviors, even when the situation calls for it. They aren’t just bad at behaving like arrogant self-aggrandizing jerks. They are bad at behaving like self-promoting narcissists, anti-social obsessives, or pompous blowhards, even a little bit, even temporarily, even when it would be in their best interests to do so. Whatever bad things you can say about those behaviors, you can’t say they are underrepresented among people who have changed the world.

So how exactly do you suppress your self doubt without eventually becoming an overbearing, axe-grinding … male … zealot? Or, even worse, a character from The Wolf of Wall Street?

One of the odder asides in The Upside of Irrationality is about the 1995 movie First Knight. Which is quite frankly terrible. Don't see it. I'm not even going to link to it. But you should watch the first few minutes of this particular swordfight scene that Ariely highlights:

Mark: How did you do that? How did he do that? Was that a trick?

Lancelot: No. No trick. It's the way I fight.

Mark: Could I do it? Tell me. I can learn.

Lancelot: You have to study your opponent, how he moves, so you know what he's going to do before he does it.

Mark: I can do that.

Lancelot: You have to know that one moment in one fight, when you win or lose. And you have to know how to wait for it.

Mark: I can do that.

Lancelot: And you have to not care whether you live or die.

Mark: (stunned silence)

The way Lancelot motivates himself to get past self-doubt in combat is not to care whether he lives or dies.

I don't mean this in the glib way of saying you should stop caring what anyone else thinks. Obviously we care what other people think. Not caring what other people think of us and what we do is the path of the narcissist, the sociopath, and the insane. That's giving up.

As Ariely says:

Lancelot fights better than anyone else because he found a way to bring the stress of the situation to zero. If he doesn’t care whether he lives or dies, nothing rides on his performance. He doesn’t worry about living past the end of the fight, so nothing clouds his mind and affects his abilities — he is pure concentration and skill.

The opinions of other people matter, but they are the traps we set for ourselves. To get past our collective prison of self doubt – am I doing the right thing? Do I even know what the right thing is any more? – concentrate on the daily routine of doing what you enjoy, what you believe in, what you find intrinsically satisfying.

This is what your life is: whatever it is you get up to do every single day. Stop stressing out about the long term stuff and focus on improving that, and you too might eventually find you don't want to live forever.

[advertisement] Hiring developers? Post your open positions with Stack Overflow Careers and reach over 20MM awesome devs already on Stack Overflow. Create your satisfaction-guaranteed job listing today!


Sunday, March 16


James Ward: MONOCLE

Posted on the 16th of March at about 1AM.

I attempted to speak in coherent sentences to Georgina Godwin at Monocle 24 about Boring:


Saturday, March 15


Jon: The charity-mugger phenomenon

Posted on the 15th of March at about 3PM.

There is a rule of street fundraising that surely has parallels in the physical sciences. You find a charity mugger, pop them in an excessively luminous T-shirt to match their personality, and stand them in a sea of shoppers on a Saturday high-street. Powered by some alien intuition lurking in the moving throng, the “chugger” […]


Thursday, March 13


James Ward: CHIP AND PIN

Posted on the 13th of March at about 1PM.

Over the last couple of months, my debit card has become increasingly unreliable. It’s become slightly bent and the chip is slightly scratched. It’s not completely unusable. It probably works about 75% of the time in cash machines, and those times when a cash machine rejects it, if I try again with the same machine, it normally accepts it the … Continue reading 


Tuesday, March 11

James Bridle: #Rorschcam NYC

Posted on the 11th of March at about 3PM.

A hello present to New York City


Thursday, March 6



Posted on the 6th of March at about 6PM.

I had an email conversation with Leila Johnston about putting on events. Leila publishes the quarterly Hack Circus magazine and organises events around the theme of each issue (the next event is on March 15th and is about reality). I organise Boring and write this blog, but you probably know that already. LJ: So, events. Why do we keep doing them? … Continue reading 


Monday, March 3

Mostly Harmless:

rob: Platonic Payments

Posted on the 3rd of March at about 7PM.

Platonic Payments

Paying is strange. Consider the following exchange:         Me: Hello unfamiliar person. I would like to give you some fiat currency in exchange for the goods and / or services you provide.         Clerk: Splendid! Let me just whip out this large, obnoxiously bright, unwieldy machine and get the banks involved in our newfound relationship.         Me: That […]


Friday, February 28

FSF News:

FSF joins forces with Software Freedom Law Center and Open Source Initiative to fight software patents in U.S. Supreme Court

Posted on the 28th of February at about 10PM.

BOSTON, Massachusetts, USA -- Friday, February 28, 2014 -- The Free Software Foundation (FSF) joined the Software Freedom Law Center (SFLC) and the Open Source Initiative (OSI) in filing a brief amici curiae in software patent case Alice Corp. v. CLS Bank before the United States Supreme Court yesterday.

Linode Blog:

Marques Johansson: Network Hotplug

Posted on the 28th of February at about 8PM.

Introducing Network Hotplug Now you can add, remove, or swap IPs on the fly, without the need to reboot your Linode.  Previously the network infrastructure rules that govern a Linode’s networking capabilities were only rebuilt on boot.  Now this is done automatically when you make changes, and without the need for a reboot, and will take effect […]

Coding Horror:

Jeff Atwood: 10 Years of Coding Horror

Posted on the 28th of February at about 9AM.

In 2007, I was offered $120,000 to buy this blog outright.

I was sorely tempted, because that's a lot of money. I had to think about it for a week. Ultimately I decided that my blog was an integral part of who I was, and who I eventually might become. How can you sell yourself, even for $120k?

I sometimes imagine how different my life would have been if I had taken that offer. Would Stack Overflow exist? Would Discourse? It's easy to look back now and say I made the right decision, but it was far less clear at the time.

One of my philosophies is to always pick the choice that scares you a little. The status quo, the path of least resistance, the everyday routine — that stuff is easy. Anyone can do that. But the right decisions, the decisions that challenge you, the ones that push you to evolve and grow and learn, are always a little scary.

I'm thinking about all this because this month marks the 10 year anniversary of Coding Horror. I am officially old school. I've been blogging for a full decade now. Just after the "wardrobe malfunction" Janet Jackson had on stage at Super Bowl XXXVIII in February 2004, I began with a reading list and a new year's resolution to write one blog entry every weekday. I was even able to keep that pace up for a few years!

Janet Jackson clothing malfunction

The ten year mark is a time for change. As of today, I'm pleased to announce that Coding Horror is now proudly hosted on the Ghost blog platform. I've been a blog minimalist from the start, and finding a truly open source platform which reflects that minimalism and focus is incredibly refreshing. Along with the new design, you may also notice that comments are no longer present. Don't worry. I love comments. They'll all be back. This is only a temporary state, as there's another notable open source project I want to begin supporting here.

It is odd to meet developers that tell me they "grew up" with Coding Horror. But I guess that's what happens when you keep at something for long enough, given a modest amount of talent and sufficient resolve. You become recognized. Maybe even influential. Now, after 10 years, I am finally an overnight success. And: old.

So, yeah, it's fair to say that blogging quite literally changed my life. But I also found that as the audience grew, I felt more pressure to write deeply about topics that are truly worthy of everyone's time, your time, rather than frittering it away on talking head opinions on this week's news. So I wrote less. And when things got extra busy at Stack Exchange, and now at Discourse, I didn't write at all.

I used to tell people who asked me for advice about blogging that if they couldn't think about one interesting thing to write about every week, they weren't trying hard enough. The world is full of so many amazing things and incredible people. As Albert Einstein once said, there are two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.

Watchmen page

I wasn't trying hard enough. I had forgotten. I can't fully process all the things that are happening to me until I write about them. I have to be able to tell the story to understand it myself. My happiness only becomes real when I share it with all of you.

This is the philosophy that underlies Stack Overflow. This is the philosophy that underlies Discourse. These are all projects based on large scale, communal shared happiness. Love of learning. Love of teamwork. Love of community.


For the next decade of Coding Horror, I resolve to remember how miraculous that is.

[advertisement] How are you showing off your awesome? Create a Stack Overflow Careers profile and show off all of your hard work from Stack Overflow, Github, and virtually every other coding site. Who knows, you might even get recruited for a great new position!


Tuesday, February 25

Open Maps:

Chris Hill: Signed at last

Posted on the 25th of February at about 7PM.

I went out to buy some seeds for the allotment today. On the way home deliberately drove home down Hawthorn Avenue in Hull to see the point where Woodcock Street joins it.

I have written to Hull City Council traffic department a few times in the past about that junction. Woodcock Street runs from Hawthorn Avenue to St Georges Road. Hawthorn Avenue has a 30 mph and St Georges Road has a 20 mph limit. There was no speed limit sign at either end of Woodcock Street nor at any point along it, so from St Georges Road you would assume it to be a 20 mph road but from Hawthorn Avenue you would assume it to be a 30 mph road and if you drove onto St Georges Road you would also expect it to be 30 mph until you see a repeater for 20 mph.

Woodcock Street has been part of the substantial redevelopment in the Hawthorn Avenue area, much of which is still under way though Woodcock Street looks to be pretty complete. The council have put a cherry on it by erecting a 20 mph sign at the Hawthorn Avenue end to remove any doubt.

Well done Hull City Council, eventually.


Monday, February 24

Coding Horror:

Jeff Atwood: App-pocalypse Now

Posted on the 24th of February at about 10PM.

I'm getting pretty sick of being nagged to install your damn apps.


XKCD helpfully translates:


Yeah, there are smart app banners, which are marginally less annoying, but it's amazing how quickly we went from "Cool! Phone apps that finally don't suck!" to this sad, eye rolling, oh-great-of-course-you-have-an-app-too state of affairs.

"Would you like to install our free app?!?" is the new "It looks like you're writing a letter!"

— Jeff Atwood (@codinghorror) January 9, 2013

Four years, give or take a few months, if you were counting. So what happened?

Millions of pointless apps

Your platform now has a million apps? Amazing! Wonderful! What they don't tell you is that 99% of them are awful junk that nobody would ever want.

Let's start with the basics. How do you know which apps you need? How do you get them installed? How do you keep them updated? How many apps can you reasonably keep track of on a phone? On a tablet? Just the home screen? A few screens? A dozen screens? When you have millions of apps out there, this rapidly becomes less of a "slap a few icons on the page" problem and more of a search problem like the greater web. My son's iPad has more than 10 pages of apps now, we don't even bother with the pretense of scrolling through pages of icons, we just go straight to search every time.


The more apps out there, the more the app stores are clogged with mediocre junk, the more the overall noise level keeps going up, which leads directly to this profligate nagging. Companies keep asking how can we get people to find and install our amazing app instead of the one question they really should have asked.

Why the hell are we building an app in the first place?

I want to know who exactly is going to all the trouble of installing the McDonalds app on their device instead of simply visiting the McDonalds website in the browser as needed. What problem does that app solve for french fry enthusiasts that it needs to be permanently installed on your device? Why are they giving away free Big Macs just to get people to install this thing?

Fragmentation into parallel and incompatible app worlds

It was so much easier when iOS was totally dominant and the iPhone was the only player. Before the iPad and tablets. Before Android got decent in 4.0 and Google standardized the Play store. Now there are, at minimum, four radically different mobile platforms that every serious app player has to support:

  1. Android phone
  2. iOS phone
  3. iOS tablet
  4. Android tablet

(For extra credit: how many of these are actually "mobile"?)

Unless you're careful to build equivalent apps in all those places, it's like having multiple parallel Internets. "No, sorry, it's not available on that Internet, only the iOS phone Internet." Or even worse, only on the United States iOS phone Internet.

If you're feeling generous, we should technically include Windows 8 and Windows Phone in here too. All with different screen dimensions, development stacks, UI guidelines, and usage patterns. Oh and by the way, that's assuming no other players emerge as serious contenders in the computing device market. Ever.

At the point where you find yourself praying for a duopoly as one of the better possible outcomes, that's … not a good sign.

Paying for apps became a race to the bottom

Buying an app is the modern Support Your Favorite Small Software Vendor Day. I was always fine with dropping ten or twenty bucks on software I loved. I'm a software engineer by profession; apps are cheaper so I can buy even more of them.

Have you ever noticed that the people complaining about apps that cost $3.99 are the same people dropping five bucks on a cup of fancy coffee without batting an eyelash? Me too, and I'm with the coffee people. $3.99 for your app? Outraaageous!

Now, contrast this with your app, Mr. Developer. I don’t know you from Adam. You’re pitching digital Instant Refresher Juice 1.0 to me in the form of a new app. The return I’m going to get is questionable at best. I already have 30 apps on my phone, some of them very good. Do I need another one? I don’t use the 30 I have. The experience I’m going to get from adding one more app is not trustable. I’m assured of nothing. Last week I bought an app for 99 cents and it was terrible. I used it once, for 15 seconds. I could be shoving $1 straight down the toilet again for all I know. Your app, good sir, is a total gamble. Sure, it’s only a $1 gamble… but it’s a gamble and that fact matters more than any price you might place on it.

For some reason I don't completely understand, mobile app review systems are frequently of questionable value, so all you really have to go on are the screenshots and a bit of text provided by the developer.

Imagine you bought your coffee, only to open the lid and find it was only half full, or that it wasn't coffee at all but lemonade. If only 1 in 5 cups of coffee you bought actually contained coffee, a $3.99 price for that coffee starts to seem unreasonably high. When you buy an app, you don't really know what you're going to get.

Turns out, the precious resource here isn't the money after all. It's your time. In a world of millions of apps, free is the correct and only price for most apps except those rare few of extreme, easily demonstrable value – probably from well known brands of websites you already use daily. So hey, everything is free! Awesome! Right? Well…

When apps are free, you're the product

I know, I know, I'm sick of this trite phrase too. But if the market is emphatically proving that free is the only sustainable model for apps, then this is the new reality we have to acknowledge.


Nothing terrifies me more than an app with no moral conscience in the desperate pursuit of revenue that has full access to everything on my phone: contacts, address book, pictures, email, auth tokens, you name it. I'm not excited by the prospect of installing an app on my phone these days. It's more like a vague sense of impending dread, with my finger shakily hovering over the uninstall button the whole time. All I can think is what shitty thing is this "free" app going to do to me so they can satisfy their investors?

For the sake of argument, let's say the app is free, and the developers are ethical, so you trust that they won't do anything sketchy with the personal information on your device to make ends meet. Great! But they still have to make a living, don't they? Which means doing anything useful in the app requires buying three "optional" add-ons that cost $2.99 each. Or there are special fees for performing certain actions. Isn't this stuff you would want to know before installing the app? You betcha. Maybe the app is properly tagged as "offering in-app purchases" but the entire burden of discovering exactly what "in-app purchases" means, and how much the app will ultimately cost you, is placed completely on your shoulders. You, the poor, bedraggled user.

The app user experience is wildly inconsistent

Have you ever tried actually using the Amazon app on iOS, Android, and Windows? iOS does the best, mostly because it's been an app platform for longer than the others, but even there, the Amazon app is a frustrating morass of missing and incomplete functions from the website. Sure, maybe you don't need the full breadth of Amazon functions on your phone, though that's debatable on a tablet. But natural web conveniences like opening links in new tabs, sharing links, the back button, searching within the page, and zooming in and out are available inconsistently, if at all.

The minute you begin switching between platforms – say you use an iOS tablet and an Android phone and a Windows 8 touch laptop, like I do – you'll find there are massive differences between the Amazon apps (and the eBay apps, and the Netflix apps, and the..) on these different platforms. At some point, you just get fed up with all the inconsistencies and oddities and quirks and say to hell with these apps, can I please just use the website instead?

Now, if your website is an awful calcified throwback to 2003, like eBay, then the mobile apps can be a valuable opportunity to reinvent your user interface without alienating all your existing users. If there's one thing I love about tablet and phone design it's that their small screens and touch interfaces force people to think simpler. This is a good thing. But if you don't eventually take those improvements home to the mothership, you're creating two totally different and incompatible UIs for doing the same things.

It seems like a fool's errand to dump millions of dollars of development time into these radically different, siloed app platforms when Amazon could have spent it improving their website and making that experience scale a bit better to every device out there.

The World Wide App

But that's not an option, because apparently the web is dead, and mobile apps are the future. I'm doing my best to resist a sudden uncontrollable urge to use my Ledge Finder app to find the nearest ledge to jump from right now.

The tablet and phone app ecosystem is slowly, painstakingly reinventing everything I hated about the computer software industry before the web blew it all up. Even fans are concerned:

I’m waiting for something that will unify the world of apps and make manually going to an App Store to find a new app as weird as typing in a URL to find a new website. My bet is that this won’t be Facebook. Instead, I would not bet against some young upstart, perhaps one inspired upon reading about a $19 billion deal, to go heads-down and come up with something crazy.

I'll have more to say about this soon, but I expect there to be an explosion of new computing devices all over the world in the next few decades, not a contraction. Sometimes the craziest solution is the one that's been right there in front of you the whole time.

[advertisement] Hiring developers? Post your open positions with Stack Overflow Careers and reach over 20MM awesome devs already on Stack Overflow. Create your satisfaction-guaranteed job listing today!


Sunday, February 23

tom m wilson:

Tom Wilson: A Journey Across Sri Lanka.

Posted on the 23rd of February at about 11AM.

        I’ve spend the day hanging out of the door way of a train travelling across the mountains, hills and plains of Sri Lanka. This morning we got on the station at Ella in the highlands and this afternoon we will be in Colombo.       Many English poets have written [...]


Friday, February 21

Linode Blog:

admin: Spring Conferences 2014

Posted on the 21st of February at about 4PM.

This Spring we’ll be sponsoring several conferences. If you’ll be attending any of these events, stop by our booth to say hello and get some Linode swag! PyCon April 9-17 Booth #715 Montreal, Canada – For the 4th year in a row, Linode is pleased to sponsor PyCon US! PyCon is the largest annual gathering […]

tom m wilson:

Tom Wilson: The man in the hills.

Posted on the 21st of February at about 2PM.

Ella is a small village, mainly catering to the tourist trade these days. It is in the high country but not as high or bleak at Nurwa Eliya. The landscape is green and fecund here, and the pace of life is slow. We’re staying in a family homestay place, upstairs in a clean and well [...]


Thursday, February 20

Dave Robertson:

Dave Robertson: Screws and Cheap Tricks in Rockford Illinois

Posted on the 20th of February at about 3PM.

Rockford, Illinois, was once the world’s largest manufacturer of screws, but following the North American Free Trade Agreement (NAFTA) of 1994, most of its manufacturing sector bolted out of town (pardon the pun). According to one estimate, the agreement led to a net lose of 682,900 jobs across the U.S. Here in Australia, it is […]

The post Screws and Cheap Tricks in Rockford Illinois appeared first on Dave Robertson.


Wednesday, February 19

tom m wilson:

Tom Wilson: A note for shameless tea drinkers.

Posted on the 19th of February at about 3AM.

The British love of a cup of tea dates back to the 1600s among the aristocracy, but was widespread among the working class by the end of the nineteenth century. The humble cup of tea at an English vicarage can be analyzed as reshaping huge swathes of the earth, moving Tamil workers from India to [...]


Tuesday, February 18

Coding Horror:

Jeff Atwood: Complaint-Driven Development

Posted on the 18th of February at about 6AM.

If I haven't blogged much in the last year, it's because we've been busy building that civilized discourse construction kit thing I talked about.


(Yes, that's actually the name of the company. This is what happens when you put me in charge of naming things. Pinball machines, people, what's the difference? I've apologized to Bill Budge already.)

So if you, like my investors, are wondering why this process took a whole entire year, I should explain how I build things, or at least, how we built Stack Overflow and Stack Exchange and now Discourse:

  1. Do a ton of detailed research on everything out there in your space. The successes: what are they getting wrong? The failures: what did they get right? Nobody should know more about the history of your area than you do. Have a story that makes sense, something you believe in, and more importantly, a story you can get others to believe in.

  2. Based on this research, assemble a team and build the minimum viable product that does something useful. If you need seed funding, this is the time to get it, so I hope you're pretty good at all that stuff in step 1, and maybe famous too, and ideally already successful as well, otherwise you are screwed.

  3. Have your team and yourself start using that minimum viable product, every day, all day long. This is way more than mere software development: it's your whole life. If you aren't living in the software you're building, each day, every day, all day … things are inevitably going to end in tears for everyone involved. And honestly, if I have to explain this to you, guess what? You're screwed.

  4. Launch a brief closed beta and get feedback from your Special Internet Friends™ on what you've built so far. I know what you're thinking: Friends! Damn it! I knew those things would be useful to me at some point! Listen to all their feedback with an open mind, no matter how dumb it probably is. Identify and fix everything major that comes up. Your product will still be terrible, but it'll be slightly marginally less terrible, and you'll now be slightly marginally less screwed than you otherwise would. (This is what we business experts call a "competitive advantange". Look it up.)

  5. Rapidly get to a public launch. It will suck, but you will ship it anyway. Don't screw up the basic logistics of the launch. You know what I'm talking about because you've seen those sad launches. Don't be those companies. Don't be those teams. Don't worry, you'll have ample time to screw everything up royally in the next step.

  6. Hey, remember all those brilliant ideas you had based on all that painstaking, detailed research you did in step 1? Turns out once you put them in front of actual honest-to-god real world users they were all … completely … wrong. Now spend the next year doing nothing but fixing all your idiotic screwups and stupid mistakes.

  7. ???

  8. Profit!

I never said it was a good plan for building software, but hey. Y'know. It's a plan.


Each one of those steps is worthy of a blog entry in its own right, but it's step six that I want to focus on today because in my opinion that's the most critical part of this whole so-called "plan". I like to refer to this phase as complaint driven development:

  • Get your software in front of as many real users as you can.
  • Listen to all the things they complain about. It will be… a lot.
  • Identify and fix the top 3 things people keep repeatedly complaining about.
  • Do it again.

Now, we have a bit of an unfair advantage here because Discourse is discussion software. We host the discussions about all the things that are wrong with Discourse … on Discourse itself. But that's also why we built an open source discussion platform in the first place – my deeply held belief that actually listening to your customers should matter to your business.

Provided you're equipped to listen to your customers, complaint driven development isn't that difficult. Until you get deep into a multi-year design, you're dealing with fairly obvious, easy to fix complaints from users. You just have to be out there listening. As Steve Krug says in Don't Make Me Think:

You don't need to find all the problems. In fact, you'll never find all of the problems in anything you test. And it wouldn't help if you did, because of this fact:
You can find more problems in half a day than you can fix in a month.

You'll always find more problems than you have the resources to fix, so it's very important that you focus on fixing the most serious ones first. And three users are very likely to encounter many of the most significant problems related to the tasks that you're testing.

For example, we launched Discourse with a requirement that all topic titles and bodies be above a certain minimum character length, because we believe that extremely short posts and particularly titles aren't conducive to actual conversation. Philosophically, this is an important default for us, because it strongly relates to our core mission of building software that helps cultivate meaningful conversation on the Internet.

Unfortunately, users hated it:

I think it's especially annoying that there's no indicator of how many characters that you have to type. You only have whether or not the "Reply" button is greyed out or not, and not all users will realize that it's greyed out at first. Even then, if you click on the reply button it can bounce back on you if your post was mostly white-space. It's annoying as hell.

This was one of the consistently strongest bits of early feedback we got. So in the first 7 days after launch we quickly added a real time character count to the bottom right of the editor.


I thought that'd help. It didn't. The complaints about our terrible, awful, onerous default title and body length restrictions kept pouring in. So we experimented with ways to make these requirements clearer, by using a red border, or a red background on the fields.



We deployed all of the above and more. Complaints did not abate one bit. Now this is a configuration setting, if you want the minimum title and body length to be 1 character in your community, it's trivially settable via a web browser in about 15 seconds. Frankly I started getting really sick of hearing all the complaints about the setting.

So we finally deployed the nuclear option: bouncy error dialogs right next to the field as soon as they lose focus.


Since that change, I haven't heard word one about our terrible, onerous, awful default body and title character limit policies. Not one. Single. Complaint.

So that's the sort of thing we've been doing post launch, each day, every week, for the last year. It took us a full year of complaint driven development to get to software worth using. And even though we are now cautiously accepting customers, we're still practicing complaint driven development every day, just perhaps weighted a bit more heavily towards the people actually paying us money.

It's true that gathering feedback from your community can be hard work. And 90% of the feedback you'll get will be terrible for a whole host of reasons. It's a lot easier to imagine some heroic expert swooping in and magically blessing you with the correct answer. Well, good luck with that fantasy. The only thing I've ever seen work is getting down deep and dirty in the trenches with your users, communicating with them and cultivating relationships. That's how you suss out the rare 10% of community feedback that is amazing and transformative. That's how you build a community that gives a damn about what you're doing – by caring enough to truly listen to them and making changes they care about.

[advertisement] Stack Overflow Careers matches the best developers (you!) with the best employers. You can search our job listings or create a profile and even let employers find you.

tom m wilson:

Tom Wilson: Udawalawe National Park

Posted on the 18th of February at about 3AM.

A herd of wild buffalo relax in a waterhole as the sun came up yesterday morning in Udawalawe National Park, southern Sri Lanka.  They lolled, snorted and sighed, huge horns glistening in the sun.  In the centre and slightly to the left of this photo a lone jackal cruises looking for an unprotected calf. Udawalawe [...]


Monday, February 17

tom m wilson:

Tom Wilson: Travelling Sri Lanka 2014, Part Three

Posted on the 17th of February at about 10AM.

As the afternoon lengthened we visited the Gal Viharaya Buddha stone sculptures at Polonnaruwa. The land around is so green and gentle in this region of the island: central, around 100 metres altitude, and generous rainfall. And to be by the giant reclining stone Buddha (14 m long) and the giant sitting Buddha just near [...]


Sunday, February 16

tom m wilson:

Tom Wilson: Traveling Sri Lanka 2014, Part Two

Posted on the 16th of February at about 3AM.

This morning we rose very early to visit Jetavanaramaya.  This stupa is the largest – by volume – of any structure from the ancient world.  It is 122 metres tall, and in the early morning light it was quite a sight. The lush green field was capped by the floating dome over the tree tops [...]

Coding Horror:

Jeff Atwood: The Road to VR

Posted on the 16th of February at about 1AM.

A month after I wrote about John Carmack, he left id Software to become the CTO of Oculus. This was big news for two reasons:

  1. Carmack founded id in the early 90s. An id Software without Carmack is like an Apple without Woz and Jobs. You wouldn't leave the prestigious company you founded unless you had some pretty compelling new dreams to pursue.

  2. Oculus is the company many are betting will break VR headsets into the mainstream. And even if they don't manage to pull that off, they are now the most credible contender to make serious headway towards consumer VR the industry has ever seen.

Virtual reality is the stuff of programmer legend. Every software engineer that's ever read Snow Crash (or more recently, the excellent Ready Player One) has dreamed of jacking into the metaverse. But why now? Well, if you think of it in very coarse terms as strapping two smartphones on your face and writing clever glue software, modern consumer VR is a natural outcome of what Chris Anderson calls the "peace dividend of the smartphone wars":

It's hard to argue that we're not in an exponential period of technological innovation. The personal drone is basically the peace dividend of the smartphone wars, which is to say that the components in a smartphone – the sensors, the GPS, the camera, the ARM core processors, the wireless, the memory, the battery – all that stuff, which is being driven by the incredible economies of scale and innovation machines at Apple, Google, and others, is available for a few dollars. They were essentially "unobtainium" 10 years ago. This is stuff that used to be military industrial technology; you can buy it at RadioShack now. I've never seen technology move faster than it's moving right now, and that's because of the supercomputer in your pocket.

It's no coincidence that another programming legend, Michael Abrash, is also head over heels in love with VR. He worked with Carmack on Quake, and joined Valve software in 2011. His recent treatises on VR are practically religious tomes – "excited" doesn't even begin to cover it:

I apologize that these are both PDFs, but like everything else Abrash writes, they are amazing. You should read them. Closely. I don't call him one of the best technical writers I've ever encountered for nothing. If you find these interesting – and if you don't, I will personally drive to your house and pull your damn geek card myself – you should also dip into his blog, which drills into the specific challenges VR presents.

I thought VR would be at best a novelty in my lifetime. I remember playing Dactyl Nightmare at a storefront in Boulder, Colorado in the mid 90s.

If nothing else, it is abundantly clear that even after all these years, VR presents deep, hairy technical challenges even on today's insanely fast, crazily powerful hardware. That's exactly the sort of problem suited to the off-the-charts skill level of legendary programmers like Abrash and Carmack. Having both of these guys working on the newest Oculus Rift prototype with an enthusiasm I haven't felt since the early 90's means we could be on the verge of a Doom or Quake style killer app breakthrough in VR.


There's no shortage of breathless previews, such as this one at Gizmodo which ends with

But if the original Oculus was a proof of concept, this model is proof that the concept is genius. There's zero doubt in my mind that when the final version of this device comes out it is going to change the world. For me, today, already has.

I'm optimistic about the next generation of Oculus Rift. But cautiously so.

Thanks to a friend, I had an opportunity to borrow the older Oculus Rift developer kit. And to be honest … I wasn't that impressed.

  • It's a big commitment to strap a giant, heavy device on your face with 3+ cables to your PC. You don't just casually fire up a VR experience. It takes substantial setup and configuration to get it ready. And even after configuring it, entering and exiting that VR experience is a far cry from quickly sitting down in front of a TV and grabbing that extra controller, or turning on a tablet.

  • Demos are great, but there aren't many games in the Steam Store that support VR today, and the ones that do support VR can feel like artificially tacked on novelty experiences. I did try Surgeon Simulator 2013 which was satisfyingly hilarious.

  • Having your eyes so close to the screens means the display is effectively very low resolution. And I mean extremely low resolution; I'm talking literally 320x200 type stuff. Everyone talks about the "screen door effect" which is the actual matrix of pixels. I personally found it very distracting, probably the number one thing that bothered me about the experience. Any kind of text was basically unreadable. The prototype is only 720p though, whereas the newer models will be 1080p. That will help, but the resolution problem was so severe to me that I'm not sure it'll be enough.

  • VR is a surprisingly anti-social hobby, even by gamer standards, which are, uh … low. Let me tell you, nothing is quite as boring as watching another person sit down, strap on a headset, and have an extended VR "experience". I'm stifling a yawn just thinking about it. I suppose games could present a friendlier set of data on the screen for others to spectate while sending a different set of data to the VR headset, but most of the games we played showed the actual VR screen, which is extreme distort-o-vision to the naked eye. Not really something you can watch or enjoy.

  • Wearing a good VR headset makes you suddenly realize how many other systems you need to add to the mix to get a truly great VR experience: headphones and awesome positional audio, some way of tracking your hand positions, perhaps an omnidirectional treadmill, and as we see with the Crystal Cove prototype, an external Kinect style camera to track your head position at absolute minimum. Eventually maybe even wear a suit to track your whole body. Notice how quickly we get into geez-this-is-a-lot-of-equipment territory.

The Oculus Rift prototype was an excellent and interesting and worthwhile experience, don't get me wrong, but it was more of a tech demo than anything else. It felt a long way from something that I'd be comfortable donning on a regular basis.

I'll leave you with Michael Abrash's summary:

  • Compelling consumer-priced VR hardware is coming, probably within two years
  • It’s for real this time – we’ve built prototypes, and it’s pretty incredible
  • Our technology should work for consumer products
  • VR will be best and will evolve most rapidly on the PC
  • Steam will support it well
  • And we think it’s possible that it could transform the entire entertainment industry

But that hardly does it justice; read the entire presentation (pdf).

If you want some of the hardest practical problems in computer science to work on, bringing VR to the world is as ambitious (and fun!) a goal in software and hardware engineering I can think of. So like any proper card-carrying geek, I'll certainly be ordering the new Crystal Cove model of Oculus Rift as soon as it's available.

It's a start. Maybe a big one.

[advertisement] Hiring developers? Post your open positions with Stack Overflow Careers and reach over 20MM awesome devs already on Stack Overflow. Create your satisfaction-guaranteed job listing today!


Saturday, February 15

tom m wilson:

Tom Wilson: Traveling Sri Lanka 2014, Part One

Posted on the 15th of February at about 4AM.

  I’ve been moving through Sri Lanka for a week now and thought I’d communicate some impressions.  Colombo is where travelers arrive.  Colombo, looking back, is not a charismatic city.  I saw more men than women on the streets during the day, and after sunset it was rare to see a single women on the [...]

FSF News:

Free Software Foundation opens registration for March 24th legal seminar on GPL Enforcement and Legal Ethics

Posted on the 15th of February at about 1AM.

BOSTON, Massachusetts, USA -- Friday, February 14th, 2014 -- The Free Software Foundation (FSF) today announced open registration for a seminar on GPL Enforcement and Legal Ethics, to be held Monday, March 24th, 2014, at Suffolk University Law School. The half-day seminar will provide an introduction to the terms of the GNU General Public License (GPL), a detailed look at how it can and has been enforced, and a session on professional ethics considerations for lawyers working with clients involved in free software.


Wednesday, February 12


James Ward: MEN AT WORK

Posted on the 12th of February at about 10AM.

A collection of photos of men (and some women) at work in the late 1990s, found in a cupboard.


Sunday, February 9



Posted on the 9th of February at about 10PM.

At the weekend, I watched the film Billy Liar and then I went and sat in a pub and scribbled some notes on a piece of paper and then I typed them up and rearranged them a little bit to produce this blog post. It contains spoilers. If you have not seen the film Billy Liar, then do not read … Continue reading 


Friday, February 7



Posted on the 7th of February at about 4PM.

Back in November, I wrote about how I had thought my way out of some free mash in a branch of EAT. On that occasion, I turned down the offer of free food, but yesterday, I was gifted a sandwich. I had gone into Pret, as I do on most days. I stood in front of the chiller cabinets and … Continue reading 


Monday, February 3

Linode Blog:

caker: Linode API: Multiple Keys and Two-Factor Support

Posted on the 3rd of February at about 6PM.

We’ve just deployed an update to the Linode API’s authentication system that allows users to have multiple API keys and also two-factor authentication. You can manage your keys via My Profile, as well as add them via the user.getapikey() API call. Keys can have an expiration date after which they’ll become invalid, and you can […]


Saturday, February 1

Open Maps:

Chris Hill: Visualising changes

Posted on the 1st of February at about 9PM.

When someone edits OSM their changes get rendered quickly so they can see their handiwork. That's really good feedback and is valuable in attracting new mappers. When it comes to checking what has changed in an area, just looking at the rendered map is rarely enough to spot any changes. Looking at changesets is the next option.

Changesets were introduced with the API version 0.6. They group together edits by a mapper made over a short period of time. They can be open for up to 24 hours, but changesets are normally closed within an hour of being created and often changesets are opened, edits uploaded to the API and the changeset closed within seconds. Changesets have a bounding box that covers the area the edits are made in. You can request a list of changesets from the API that cover a specific bounding box. Edits by a mapper are normally wrapped in a changeset that covers a small area, but some edits range across very large areas even across the whole world. These are known as big edits. These are usually some sort of mass-edit or bot edit. These will show up in a request for changesets even though no actual changes are made in the requested area.

Looking at changesets can be useful, but apart from trying to work out which of the so-called big edits to ignore, there's the bigger problem of knowing what has actually changed. If you see an added node or way that's easy, but the modified nodes or ways is a bit harder to understand and looking at some relations can be a long job to work out the changes. Has a node been moved? Has a way's nodes been moved? Has a way had nodes removed or added? Has a node or way had its tags changed? Is there some combination of all this?  Deleted nodes and ways are also a bit of a problem as they no longer render and seeing what has gone can be hard to visualise, especially as some people delete a way and add a new one to replace it, losing the way's history. What would be nice is to see a before and after view of a changeset.

I looked at the problem, initially for nodes and ways, and quickly realised that the way the API delivers information about ways makes things harder than you'd want. When you request the details of a way from the API it returns the way with attributes like ID, version, changeset etc, a list of tags and a list of nodes as node ids. This fine for the current state of the way. The nodes in the list are the most recent version of the node. You need the nodes to find the geometry of the way as longitude and latitude are only stored on nodes. As soon as you look at an older version of a way the list of nodes is suddenly not clear at all. Which version of each node does it refer to?

I think the timestamp on each API object can be used to work out which version of a node matches each version of a way. That assumes that I have, or download, all of the versions of every node in the area I'm interested in. Another idea is to store the data for the area I'm interested in from a snapshot, such as Geofabrik's, and apply every changeset for the area on from there. In that way I could store the geometry of the way with the way rather than in nodes, which sounds much more practical. I can then show the before and after view of every changeset, but only from the date of my snapshot and only if I apply every changeset. I'll think about this some more.


Tuesday, January 28

Linode Blog:

James: Linode CLI

Posted on the 28th of January at about 12PM.

Having a variety of tools is important, especially when managing multiple systems and cloud services. Users and system administrators need to be in control and have the right tool for the job. Many times the tool of choice is the command line. Introducing Linode CLI We’re pleased to announce the official release of Linode CLI – […]


Monday, January 20

Linode Blog:

caker: An old system and a SWAT team

Posted on the 20th of January at about 1AM.

This is what Linode employees along with the fine men and women from the Galloway police department had to deal with this afternoon – their SWAT team storming the Linode office, forcing everyone out for about an hour while they performed a sweep of the building room to room, complete with an explosives-sniffing dog (who was […]


Tuesday, December 31




Sunday, December 29


Jon: Tech predictions for 2014

Posted on the 29th of December at about 5PM.

Just recently, I came across a list of my NY resolutions from a year or two ago, and it was fun to see how many I’d accomplished (around half, not bad). So, this year I’ll make a couple of techie predictions, and add on some geek resolutions too. Here’s what I’d like to see in […]


Saturday, December 21

Dave Robertson:

Dave Robertson: Colorado Contrails and Cowboys

Posted on the 21st of December at about 4AM.

Steady progress with gentle rocking around gradual bends along scenic river valleys. Room to stretch legs, move about and socialise with fellow passengers. There is much to recommend about long-distance train travel. On the first leg of my American rail journey, along the superlative Washington coast, I had the good fortune to sit next to […]

The post Colorado Contrails and Cowboys appeared first on Dave Robertson.


Wednesday, December 18

James Bridle: Planespotting

Posted on the 18th of December at about 5PM.

Watching the deportation flights.


Sunday, December 15


Jon: Utility/broadband usage scanner

Posted on the 15th of December at about 11AM.

I’ve written a simple PHP script to keep an eye on mobile internet usage, and have open-sourced it under a MIT license for anyone who wants to have a play. It scrapes account data from a provider’s website and stores that data in a local SQLite database. This mini-project gave me an opportunity to play […]


Wednesday, December 11

James Bridle: Surveillance Spaulder

Posted on the 11th of December at about 2PM.

A wearable CCTV detector, with shocking results.


Monday, December 9

Open Maps:

Chris Hill: Storm surge

Posted on the 9th of December at about 9PM.

Last week the geography, planetary alignment and weather combined to cause misery to hundreds of families around Britain.

Tides around Britain naturally have a big range, the second highest tidal range in the world is in the Bristol Channel in Britain's south west. Tides vary depending on the alignment of the sun and moon, when the Sun and Moon are at the same side of the Earth (new moon) or opposite sides of the Earth (full moon) the tides are higher than when they are not in alignment. The highest tides are called spring tides, whatever time of year they occur.

The North Sea is roughly V-shaped, getting much narrower at the southern end. Last week a storm swept across the country, driving very strong winds from the north east down the North Sea coast forcing water in the sea towards the narrow part. The storm was, as usual, a deep low pressure system. With the low pressure over the sea, the water level will rise in a so-called storm surge.

The spring tide, the storm surge and the extra water blown down the North Sea created a lot of water pushing up against sea defences along the North Sea coast, particularly the southern end. In addition the waves thrown up by the stormy winds made topping the sea walls inevitable. Flooding followed.

Earlier this year I surveyed a new, small road close to the Humber Bridge, Wintersgill Place. Sadly the road was flooded. The houses now look finished, but there are three for-sale signs and one sold sign for the six houses. I wonder just how planning permission was granted for these houses when the area is clearly a flood risk. Now the small field next to these new houses is also set to be developed.

I tried to look at the local council's forward planning map to see if they agree that the area is a flood risk. The map was curiously off-line over the period of the storm and just after. Now it has lost the most detailed zoom level and the newly built houses are not on the map at all. I hope the planners have better information available, but since they have allowed houses to be built that have flooded before they were even sold, maybe they don't.


Saturday, December 7


Jon: Co-writing web application

Posted on the 7th of December at about 12AM.

Grassroots pressure groups, such as Amnesty International, ask their members to write letters in order to lobby individuals in positions of authority. Other groups request that messages of petition are sent to corporations or journalists. In each case, new members wanting to join in a letter-writing effort may find the process difficult, especially if their […]


Friday, December 6

James Bridle: DIY Drone Shadows

Posted on the 6th of December at about 3PM.

A Drone Shadow for Dirty Wars, a projection, and a how-to guide.


Tuesday, December 3

James Bridle: Anatomy of a failed rendition

Posted on the 3rd of December at about 12PM.

Private jets, aircraft tracking, and the deportation of Isa Musawa.


Wednesday, November 27

Open Maps:

Chris Hill: Using Leaflet with a database

Posted on the 27th of November at about 2PM.

The previous two posts created a map with markers. The marker information was stored in a fixed geojson file. For the few markers that don't change much this is fine, but it would be much more flexible if the markers were in a database. If there are a large number of markers, say thousands, browsers might slow down showing them, even though many might not actually be visible. One way to help with this is to work out which markers would be visible in the current view and only show them. To do this we need to use some features of Leaflet and introduce Ajax. We will also need to store the marker information in a database, write some code to extract it and format it into the geojson format that we know works so well.

Ajax is a means of exchanging data between the client browser and the server without forcing a page reload. I tend to use jQuery to simplify the process of using Ajax and jQuery ensures that the process works on a wide range of browsers. We will request some data from the server with Ajax which can return data in a json format, which works with geojson too.

In the examples so far the files from the server have been simple files, not needing scripting or a database. In my examples I'm using PHP for script and MySQL for the database as this is a very common combination available from many hosts. In the GitHub repository there is a SQL file, plaques.sql, you can use to create a table called plaques in a MySQL database and import the same data that we have seen already.

To extract the data from the database we'll use a PHP script. It needs to receive a request for the bounding box and it will extract that, format the geojson result and return it to the client. The client then can display the markers. If the user scrolls the map or changes the zoom then a new Ajax request will get the markers that are in the new view and display them. This isn't really needed for the seventy or so markers in this example but it is very useful for a large number of markers.

Let's start with the PHP script to extract the data:

// uncomment below to turn error reporting on
ini_set('display_errors', 1);

 * ajxplaque.php
 * returns plaque points as geojson

// get the server credentials from a shared import file
$idb= $_SERVER['DOCUMENT_ROOT']."/include/db.php";
include $idb;

if (isset($_GET['bbox'])) {
} else {
    // invalid request
    $ajxres['msg']='missing bounding box';
// split the bbox into it's parts

// open the database
try {
    $db = new PDO('mysql:host=localhost;dbname='.$dbname.';charset=utf8', $dbuser, $dbpass);
} catch(PDOException $e) {
    // send the PDOException message

//$stmt = $db->prepare("SELECT * FROM hbtarget WHERE lon>=:left AND lon<=:right AND lat>=:bottom AND lat<=:top ORDER BY targetind");
//$stmt->bindParam(':left', $left, PDO::PARAM_STR);
//$stmt->bindParam(':right', $right, PDO::PARAM_STR);
//$stmt->bindParam(':bottom', $bottom, PDO::PARAM_STR);
//$stmt->bindParam(':top', $top, PDO::PARAM_STR);

try {
    $sql="SELECT plaqueid,lat,lon,plaquedesc,colour,imageid FROM plaques WHERE lon>=:left AND lon<=:right AND lat>=:bottom AND lat<=:top";
    $stmt = $db->prepare($sql);
    $stmt->bindParam(':left', $left, PDO::PARAM_STR);
    $stmt->bindParam(':right', $right, PDO::PARAM_STR);
    $stmt->bindParam(':bottom', $bottom, PDO::PARAM_STR);
    $stmt->bindParam(':top', $top, PDO::PARAM_STR);
} catch(PDOException $e) {
    print "db error ".$e->getCode()." ".$e->getMessage();
$ajxres=array(); // place to store the geojson result
$features=array(); // array to build up the feature collection

// go through the list adding each one to the array to be returned   
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

// add the features array to the end of the ajxres array
// tidy up the DB
$db = null;
sendajax($ajxres); // no return from there

function sendajax($ajx) {
    // encode the ajx array as json and return it.
    $encoded = json_encode($ajx);

This is called ajxplaques.php in the folder ajax on the server, available in the GitHub repository.  The script needs a query string with bbox= in it. This defines the west,south,east and north longitude and latitude that bounds the current view of the map. It then queries the database for these items and returns the geojson of these limited markers. If the bounding box (BBOX) is big enough then all the markers will be returned and if the BBOX contains no markers then none are returned and that is fine too. I'm using MySQL and ignoring GIS functions as selecting points is quick and easy. If I was extracting polygons and using a powerful GIS database such as PostrgreSQL with the PostGIS extension then I would consider using a GIS function to find the polygons that intersect the BBOX.

To call the script from the JavaScript (example3.js) I use the ajax functions that are part of jQuery:

function askForPlaques() {
    var data='bbox=' + map.getBounds().toBBoxString();
        url: 'ajax/ajxplaques.php',
        dataType: 'json',
        data: data,
        success: showPlaques

This creates the query string by using map.bounds() and formats into the format we need with toBBoxString(). The $.ajax() function uses the query string, requests json (of which geojson is just a special case) and will call the function showPlaques() when the data is returned.

function showPlaques(ajxresponse) {

The showPlaques() function is called when the data is returned from the script. The geojson data is in the ajxresponse. We delete all of the existing markers with clearLayers() and add the new data to the geojson layer. To trigger this process we need to call askForPlaques() every time the view of the map changes. We can ask the map object to trigger an event whenever this occurs. So after the map is displayed we add

map.on('moveend', whenMapMoves);

This calls the function whenMapMoves() when the event is triggered. That function simply calls  askForPlaques() to get the correct data for the view.

Two more things have changed. Firstly, when the geojson layer is created no data is added - it is called with null - so the plaques.js is not used at all. When the map is first displayed we need to call askForPlaques() once to get the first set of markers before the map is moved.

Now we have a much more dynamic map, using data from a database and potentially using a part of thousands of markers without overloading the browser.


Thursday, November 21

Open Maps:

Chris Hill: Using Leaflet part 2

Posted on the 21st of November at about 10PM.

In the last post I described how to create a map with markers on it. I'm going to build on this to make some improvements. Firstly, the default markers are useful but it would be good to have some alternatives. I copied the example1.htm, .js and .css files to example2.x and made some changes there. I created three images which are blue, green and white disks and saved them in the images folder. To use these images we need to create a Leaflet Icon for each marker type. The variables used to store the Icon objects are declared in the global area and then the Icon is created before anything else is created so it is available whenever we need it.

        iconUrl: 'images/blueplaque.png',
        iconSize:[24, 24], // size of the icon
        iconAnchor:[12, 23] // point of the icon which will correspond to marker's location
        iconUrl: 'images/greenplaque.png',
        iconSize:[24, 24], // size of the icon
        iconAnchor:[12, 23] // point of the icon which will correspond to marker's location
        iconUrl: 'images/whiteplaque.png',
        iconSize: [24, 24], // size of the icon
        iconAnchor:[12, 23] // point of the icon which will correspond to marker's location

The icons use the images from the images folder. The icon anchor is important to make a marker work well especially when zooming. If your marker seems to slide around as you zoom in or out you probably don't have the anchor set correctly. It defaults to [0,0] which is top left and rarely what you want.

In the last example we used events to add popups to each markers, here we want to substitute the markers, so we need to change the behaviour, but not much. When we create the geojson layer we need to remove the onEachFeature and replace it with pointToLayer:

  lyrPlq = L.geoJson(plaques, {
        pointToLayer: setIcon

The pointToLayer event allows you to provide the marker you want to display for each feature. The function you define, setIcon in this case, gets passed the feature and the position that the marker need to be as a leaflet LngLat object. In the function you create a marker or some other Leaflet object and return that. Leaflet adds what you return to the layer.

function setIcon(feature,ll) {
    var plq;
    if ('green') {
        plq=L.marker(ll, {icon: greenicon});
    else if ('white') {
        plq=L.marker(ll, {icon: whiteicon});
    else {
        plq=L.marker(ll, {icon: blueicon});
    return p;

In this case we use one of the properties, colour, to choose the marker to display. We now need to add the popup to our newly created marker and return the marker for Leaflet to use.

You can see an example here. The source code is on GitHub.

More examples to come ...

Open Maps:

Chris Hill: Using Leaflet v0.7

Posted on the 21st of November at about 3PM.

The Leaflet JavaScript library has changed the way OpenStreetMap is being used, making it easy to use and offering all kinds of additional features and functions as plug-ins. I blogged about Leaflet soon after it was first released and that post has been read by a lot of people and has generated more comments than any other. Leaflet version 0.7 has just been released and when I was asked about using it I realised that my original post was badly out of date. I decided to use some local data to describe using Leaflet, including some plug-ins. I decided to use jQuery for a few features. It is widely used and is cross-platform, just like Leaflet. The jQuery files are in a folder called jquery, and the Leaflet files are all in a folder called leaflet.

All the example files are in a GitHub repository:

Leaflet displays a slippy map in an HTML div. It uses JavaScript to control the way the map behaves. The style, as you would expect, is controlled by CSS. Our first example displays a base map with an overlay of markers on it to show where blue plaques are around the UK city of Hull.  Take a look here. The HTML is really straightforward, take a look in the GitHub repository above.

In the head section there is a style sheet for leaflet (leaflet.css) and a script (leaflet.js). These are used in every example. I have also included leaflet-hash.js which is an example of a Leaflet plug-in. I like to store CSS and JavaScript in separate files, not in the HTML file, so I have also included example1.css and example1.js. The JavaScript names plaques.js holds the locations of the plaques to display, formatted as a geojson file. The CSS simply makes the div, with the id “mapdiv”, fill the page. The real work is in the javascript:

* global variables 
var map; // global map object 
var lyrOsm; // the Mapnik base layer of the map 
var lyrPlq; // the geoJson layer to display plaques with 

// when the whole document has loaded call the init function 

function init() { 
  // map stuff 
  // base layer 
  var osmUrl='http://{s}{z}/{x}/{y}.png';
  var osmAttrib='Map data © OpenStreetMap contributors';
  lyrOsm = new L.TileLayer(osmUrl, { minZoom: 9, maxZoom: 19, attribution: osmAttrib });

  // a geojson 
  layer lyrPlq = L.geoJson(plaques,{ 
    onEachFeature: makePopup

  // set the starting location for the centre of the map 
  var start = new L.LatLng(53.7610,-0.3529); 
  // create the map 
  map = new L.Map('mapdiv', { // use the div called mapdiv 
    center: start, // centre the map as above 
    zoom: 12, // start up zoom level 
    layers: [lyrOsm,lyrPlq] // layers to add

  // create a layer control 
  // add the base layers 
  var baseLayers = { "OpenStreetMap": lyrOsm }; 

  // add the overlays 
  var overlays = { "Plaques": lyrPlq }; 

  // add the layers to a layer control 
  L.control.layers(baseLayers, overlays).addTo(map); 

  // create the hash url on the browser address line 
  var hash = new L.Hash(map);

function makePopup(feature, layer) { 
  // create a popup for each point 
  if ( && {

The file starts with global variables. The map variable is the core of Leaflet, any name would do, but it is called map by convention. The map has two layers, one to display the base map and one to show the markers. These are defined by two variables lyrOsm and lyrPlq.

The first use for jQuery is:


This means that when the document is completely loaded and ready call the function init. Doing this is very useful as on a slow link, such as some mobile connections. It makes sure that all of the elements of the page are available before trying to use them.

The init function needs to create the layers, create the map itself and add the layers to the map. We need two different layers one is the base layer which is a set of square tiles  that Leaflet requests from the provider and arranges in the right place. We need to tell the layer where to get the tiles from, in this case the main OSM tile server.

    var osmUrl='http://{s}{z}/{x}/{y}.png'; 
We also need to add attribution – all OSM-based maps need attribution as part of the licence to use the data.

    var osmAttrib='Map data © OpenStreetMap contributors';

The tile provider may also require or request attribution. In one of the later examples will will use a different tile provider with a different attribution. We can now make a layer:

lyrOsm = new L.TileLayer(osmUrl, {
    minZoom: 9,
    maxZoom: 19,
    attribution: osmAttrib

This creates the layer of tiles, from the tile provider, which will zoom out only to zoom level 9 and in to level 19 and add the attribution to the bottom right of the map, by default.

We also need a layer to display the plaque markers. In the HTML a file called plaques.js was loaded. That contains a geojson format file which we will use in a geojson layer. Geojson is a very useful format that I use frequently and is supported well by Leaflet. Geojson allows a variety of objects to be passed to Leaflet for displaying, including points, lines, multiple lines, polygons and multipolygons and these can be mixed together as needed. With a simple set of points the loaded file can be simply used as a layer. The file plaques.js creates a variable called plaques that can be used directly:

    lyrPlq = L.geoJson(plaques, {
        onEachFeature: makePopup

The onEachFeature is an example of responding to an event. In this case as each feature of the geojson file is added the function makePopup is called. This allows us to use one of the properties in each feature in the geojson file to be used to make a popup if the marker is clicked.

We now create a LatLng object to use to centre the map and then the map object is created:

map = new L.Map('mapdiv', {        // use the div called mapdiv
    center: start,                   // centre the map as above
    zoom: 12,            // start up zoom level
    layers: [lyrOsm,lyrPlq]        // layers to add

This creates the map, centres it, zooms to level 12 and adds the two layers we created above.

That would be enough to create a slippy map, but I added a couple of extra features which are often useful. The first is a layers control which allows the layers on the map to be selected and hidden. There are two types of layer a base layer and an overlay and we have one of each. The two layers are created, with names that will appear in the layer control, and the control is then created with the layers added and then added to the map.

The last feature is a leaflet plug-in. I added the leaflet-hash.js file to the leaflet folder and loaded it in the HTML. The hash plug-in changes the URL displayed in the browser address line as the map is scrolled and zoomed so the address can always be used as a bookmark. It replaces the permalink used on earlier versions. A simple line adds the plug-in to your map.

Following posts will show how to change the icons that appear, customise the popup, use database data to display the markers, deal with a large number of markers including clustering them and how to respond to click or tap in other ways than just displaying a popup.


Friday, November 15

James Bridle: Recent Work, November 2013: Render Ghosts, GPS, Landsat.


Thursday, October 31

James Bridle: #OccupyTheCloud

Posted on the 31st of October at about 4PM.

An installation, and a call to action.


Monday, October 21

Coding Horror:

Jeff Atwood: Why Does Windows Have Terrible Battery Life?

Posted on the 21st of October at about 4AM.

I've become a huge fan of touch computing. I believe that most things we think of as "computers" will be de-facto tablets, either in our pocket, in our hands, possibly even mounted on our wrists or forearms.

I can't wait for the iPad 5 this week (I'll be ordering three), and my Surface Pro 2 should arrive this week too. Because it is a blazingly fast, modern Intel machine, I like to use the Surface Pro to predict where tablet performance ought to be for everyone in 2 to 3 years. I think of it as an iPad 7.

My main complaint with the Surface Pro is the incredibly lackluster battery life. Granted, this is a classic Intel x86 box we're talking about, not some efficient ARM system-on-a-chip designed to run on a tiny battery. Still, I was hopeful that the first Surface Pro with Haswell inside would produce giant gains in battery life as Intel promised. Then I saw this graph:

Web browsing battery life, Surface Pro vs Surface Pro 2

So WiFi web browsing battery life, arguably the most common user activity there is on a computer these days, goes from 4.7 hours on the Surface Pro to 6.7 hours on the Surface Pro 2, a 42% increase. That's a decent increase, I suppose, but I was hoping for something more like 8 hours, something closer to doubling of battery life – to bring the Surface Pro in line with other tablets.

Nearly 7 whole hours of WiFi web browsing for a real computer in tablet form factor … that's not bad, right? Let's see how the 2013 MacBook Air does, which spec-wise is about as close as we can get to the Surface Pro 2. The screen is somewhat lower resolution and not touch capable, of course, but under the hood, the i5-4200u CPU and LPDDR3 RAM are nearly the same. It's a real computer, too, using the latest Intel technology.


The Surface Pro 2 has a 42 Wh battery, which puts it closer to the 11 inch Air in capacity. Still, over 11 hours of battery life browsing the web on WiFi? That means the Air is somehow producing nearly two times the battery efficiency of the best hardware and software combination Microsoft can muster, for what I consider to be the most common usage pattern on a computer today. That's shocking. Scandalous, even.

UPDATE: Turns out the Surface 2 Pro was shipped with bad firmware. Once updated, the WiFi adapter enters lower idle power states and this helps a lot, going from 6.6 hours of browsing time to 8.3 hours, a 25% improvement! That puts it much more in line with the rest of the field, at least, even if it doesn't achieve Mac like runtime.

It's not exactly news that Windows historically doesn't do as well as OS X on battery life. Way back in 2009, AnandTech tested a MacBook Pro with multiple operating systems:

2009 15-inch MacBook Pro (73WHr battery) OS X 10.5.7 Windows Vista x64 SP1 Windows 7 RC1
Wireless Web Browsing (No Flash) Battery Life 8.13 hours 6.02 hours 5.48 hours

That's fine, I knew about this discrepancy, but here's what really bothers me:

  1. The Windows light usage battery life situation has not improved at all since 2009. If anything the disparity between OS X and Windows light usage battery life has gotten worse.

  2. Microsoft positions Windows 8 as an operating system that's great for tablets, which are designed for casual web browsing and light app use – but how can that possibly be true when Windows idle power management is so much worse than the competition's desktop operating system in OS X – much less their tablet and phone operating system, iOS?

(It's true that Bay Trail, Intel's new lower power CPU from the Atom family, achieves 8.6 hours of WiFi web browsing. That's solidly in the middle of the tablet pack for battery life. But all the evidence tells me that the very same hardware would do a lot better in OS X, or even iOS. At least Intel has finally produced something that's reasonably competitive with the latest ARM chips.)

Perhaps most damning of all, if you take the latest and greatest 13" MacBook Air, and install Windows 8 on it, guess what happens to battery life?

One of the best things about the standard 2013 MacBook Air 13" is that it has record-breaking battery life of 14 hrs 25 min (with the screen brightness at 100 cd/m², headphones plugged in and the Wi-Fi, Bluetooth and keyboard backlighting turned off). Under Windows 8 the results are more mixed [..] in the same conditions it lasts only 7 hrs 40 min. That's still very high—it's better than the Asus Zenbook Prime UX31A's 6 hours and the Samsung Series 7 Ultra's 5 hours—but it's only half the astronomical 14 hours + that the 13" MacBook Air is capable of.

Instead of the 26% less battery life in Windows that Anand measured in 2009, we're now seeing 50% less battery life. This is an enormous gap between Windows and OS X in what is arguably the most common form of computer usage today, basic WiFi web browsing. That's shameful. Embarrassing, even.

I had a brief Twitter conversation with Anand Shimpi of Anandtech about this, and he was as perplexed as I was. Nobody could explain the technical basis for this vast difference in idle power management on the same hardware. None of the PC vendors he spoke to could justify it, or produce a Windows box that managed similar battery life to OS X. And that battery life gap is worse today – even when using Microsoft's own hardware, designed in Microsoft's labs, running Microsoft's latest operating system released this week. Microsoft can no longer hand wave this vast difference away based on vague references to "poorly optimized third party drivers".

Apple is clearly doing a great job here. Kudos. If you want a device that delivers maximum battery life for light web browsing, there's no question that you should get something with an Apple logo on it. I just wish somebody could explain to me and Anand why Windows is so awful at managing idle power. We're at a loss to understand why Windows' terrible – and worsening! – idle battery life performance isn't the source of far more industry outrage.

[advertisement] How are you showing off your awesome? Create a Stack Overflow Careers profile and show off all of your hard work from Stack Overflow, Github, and virtually every other coding site. Who knows, you might even get recruited for a great new position!


Friday, October 18

Open Maps:

Chris Hill: Land Registry INSPIRE polygons

Posted on the 18th of October at about 10PM.

The UK Land Registry has released some open data as part of the INSPIRE directive. I say open data, but not very open, indeed hardly even ajar.

The Land Registry has released various data sets as recorded in this blog post, but there is a serious issue with some of their data, the polygons that show the cadastre, or property bounds, data. As you might expect, the Land Registry use the UK's national mapping agency, Ordnance Survey, to base any mapping on. So when they reproduce any GIS-based data, it is based on OS maps and, as usual, OS claims that their viral licensing clause applies. So even though the Land Registry maintain the cadastre data and want to publish it under the liberal Open Government licence,  OS prevent that by adding a personal-only, no publishing clause. This is a further example of how OS viral licensing is harming innovation and thus damaging business and potential open data users.

I have been using the Land Registry polygons to research the accuracy of creating Openstreetmap cadastre data simply by using surveys, permitted aerial imagery and local knowledge. I have decided to publish an example of what I have found under fair dealing of OS copyright and database rights. If OS are not happy about this I'm sure they will contact me and we could discuss it.

Some time ago I added all of the buildings in the postcode area HU14, Melton, North Ferriby and Swanland and added their address. In North Ferriby I also added all of the hedges, fences etc around properties. It took a lot of doing, using aerial imagery and some local knowledge. Having done it I decided that I wouldn't do any more places like that - I would only add buildings and address at most.

Now I have the means to check how good a job I managed to do, by comparing my boundary lines with the cadastre polygons from the Land Registry. I extracted a small area from their data, reprojected it to Mercator and used TileMill to render a simple view of part of North Ferriby with the cadastre polygons laid over it. Here are the three images:
OpenStreetMap data showing gardens and buildings

Land Registry cadastre polygons

OpenStreetmap data overlaid with Land Registry cadastre polygons

I am very pleased with the way the two datasets coincide. The biggest area of error in creating the Openstreetmap boundaries is the alignment of the aerial imagery - that seems to be very good in this instance. I did use multiple GPS traces to create an average trace and aligned the imagery to that. That seems to work well.

The Openstreetmap images © Chris Hill, CC-BY SA 2.0 which is based on Openstreetmap data © Openstreetmap contributors ODbL 1.0

The Land Registry data require the following statements:
This information is subject to Crown copyright and is reproduced with the permission of Land Registry

© Crown copyright and database rights [2013] Ordnance Survey 100026316


Thursday, October 3

Open Maps:

Chris Hill: Tram depot and Boothferry Park

Posted on the 3rd of October at about 3PM.

Recently, sladen added some tram lines close to Wheeler Street off Anlaby Road in Hull. I was surprised to see railway=tram appearing in Hull as I hadn't heard the city was joining the enlightened ones adding smart new public transport options for the commuters. It turns out that that was the site of the old tram network depot. Trams were progressively phased out by mid 1940's in favour of trolleybuses, using the same overhead infrastructure but without the rails. They ran until 1964. After a short conversation on IRC with sladen I set out to see if I could find any signs of track at the site and any other clues about the depot.

I arrived at the Wheeler Street depot tram entrance on Anlaby Road. The tracks were clearly visible in the old cobblestone roadway. It is now a private yard of some kind. I walked a little way down the roadway before being stopped by a large chap who wanted to know what I wanted. I explained about it having been a tram depot and asked if I could see the rest of the tram lines, he said no, and told me to f*** off where I'd come from. I left.

I suppose the camera round my neck and the GPS in my hand might have been intimidating, but I was polite. It is quite unusual in my experience to get a response like that when out mapping - it just made me wonder just what was going on on the site.

I tried to see into the yard from Wheeler Street but the site has buildings and high walls around it, so I couldn't see any more details.
Overall I could only confirm what sladen had seen elsewhere already, there are a few tram lines left, but not the extent of them. Judging by recent aerial images the building had gone. Older aerial images showed the shell of a building with no roof on it. I'm not able to add to that at all.

I checked the restored oneway section of Wheeler street near Wheeler primary school, confirmed that the opposite cycleway has been restored after being removed during some building work. I then moved along Anlaby road to where Boothferry Park, the football ground of Hull City, used to be. It is in the process of being turning into a housing estate. The first houses are occupied now but there is still a lot more to build. The main drag is called Legends Way with the first side road to the east called Boothferry Park Halt. Boothferry Park was unusual because it had its own railway station, only used for match days and only used until the mid 1980's. I'll need to check the site some more in a few months to catch up with the new developments.


Thursday, September 5

Dave Robertson:

Dave Robertson: Ok Cello – The Portland Cello Project Does Ok Computer

Posted on the 5th of September at about 3PM.

It was the reason I bought my first reggae album, and for those who know me that is no mean feat. I had always thought reggae sounded like the musicians couldn’t get the beat right, and it was called the “off” beat for a very good reason. But let’s go back to the Grammy Awards […]

The post Ok Cello – The Portland Cello Project Does Ok Computer appeared first on Dave Robertson.


Monday, September 2


Clare Davies: BRIGHT LIGHTS SMALL CITY 20 September – 12 October 2013 Opening 19 September 6pm Artist Talks 21 September 3pm + 5 October 3pm Buratti

Posted on the 2nd of September at about 12PM.



Sunday, August 11

Stone: Three Daze South – on Youtube!

Posted on the 11th of August at about 1AM.

Hiya, Check out; A 6 minute snippet of our trip to the South Coast. (For best viewing select the highest quality setting (720p HD – at bottom of viewing pane) and view in full screen.) Ahhh…winter waves….. Sweet. Later, Stone.


Tuesday, August 6

Danny O'Brien's Oblomovka:

Danny O'Brien: On the Thoughts of Chairman Bruce

Posted on the 6th of August at about 5PM.

So I’m reading the latest missive from Chairman Bruce Sterling about Snowden and Assange, and even though I have some history with the guy, I’m clapping along, because he always writes a fine barnstormer. Then, like Cory, I get pulled up by this bit. He’s reeling off a list of names, from 7iber to Bytes [...]


Sunday, August 4

Dave Robertson:

Dave Robertson: Deviant Yoga and a Sex Positive Culture

Posted on the 4th of August at about 9AM.

Laughter, ruff, verbal, shadow, juicy… Many words have been used to prefix yoga. When I saw Deviant Yoga advertised in Seattle I decided to give it a go. My travel-weary body needed a good stretch, plus a friend and I were curious to check out the venue, the Center for a Sex Positive Culture  There […]

The post Deviant Yoga and a Sex Positive Culture appeared first on Dave Robertson.


Sunday, July 28


Jon: Beginners’ PHP course

Posted on the 28th of July at about 10PM.

I’ve been writing a PHP course for beginners over for the past couple of weeks, and think it is now good enough to share. It’s a work in progress, but what I have at present is useful already, and I plan to add to it. I’d previously looked around the existing resources on the web, […]


Saturday, July 27


Jon: Macports error: “Python interpreter is too old”

Posted on the 27th of July at about 4PM.

Today I tried to install texlive on Snow Leopard via Macports, in order to make use of pdflatex with pandoc. However I received this error: Python interpreter is too old This would exit Macports with an error, suggesting that a bug should be raised. It appeared to be looking for Python 2.6 specifically, which is […]


Monday, July 8

Dave Robertson:

Dave Robertson: CDless in Seattle and why MP3 sucks

Posted on the 8th of July at about 2PM.

I like Seattle. It has the friendly, progressive port thing going on that reminds me of Freo. In the leafy suburb known locally as “The People’s Republic of Fremont”, there is a statue of Lenin, a troll under a bridge, and a musical instrument store called Dusty Strings. It was the perfect place to consummate […]

The post CDless in Seattle and why MP3 sucks appeared first on Dave Robertson.


Saturday, July 6


Jon: Café photo website

Posted on the 6th of July at about 2PM.

I’ve mentioned before on this site that I sometimes work day-to-day from coffee shops. To get an idea of what a café is like prior to visiting, I’ll sometimes refer to services like Beanhunter. However, many websites of this kind focus on coffee reviewing — not unimportant, of course — rather than what the space is like […]


Sunday, June 30

Dave Robertson:

Dave Robertson: What has Dave been up to?

Posted on the 30th of June at about 2PM.

This website is in the stages of reconstruction. Enjoy the content, but come back soon to see it in full bloom.

The post What has Dave been up to? appeared first on Dave Robertson.


Tuesday, June 25


Jon: Unix-like wifi-specific bandwidth counter

Posted on the 25th of June at about 10PM.

I use wireless broadband via a wireless router, the use of which needs to be monitored carefully to avoid going over-quota. However I also use another wifi connection at home, and wifi connections at the office and many public ones. Thus, I wish to count data bytes on a specific interface for one specific router; […]


Tuesday, June 18

Release notes from semver:

Haacked: v2.0.0: Merge pull request #120 from mojombo/release-2.0


Sunday, June 16

Stone: GILI T..!!!!!!

Posted on the 16th of June at about 7AM.

  Greetings friends, Well, time continues to tick…. funny that…. We just got back recently from 2 weeks in Bali/Gili Trawangan – a little island off Lombok.  It was a family affair as the better half, the kids and I … Continue reading


Friday, June 7

Danny O'Brien's Oblomovka:

Danny O'Brien: PRISM, Verizon: Surprise!

Posted on the 7th of June at about 12AM.

Someone in another forum was asking his friends whether they were surprised by the new revelations about US surveillance, and whether they thought there was a collective will to battle it. After the stream of “no and no” responses, I ended up saying this. I deal with this material every day, and while what I [...]


Saturday, May 4

Danny O'Brien's Oblomovka:

Danny O'Brien: Virtual subdomains for open webapps

Posted on the 4th of May at about 4PM.

I’ve been playing around with Firefox’s open web app designs recently. I hadn’t quite realised before that if you have Firefox on Android and your PC, you can run their webapps on FirefoxOS, Android and the desktop, which is pretty impressive. Their payment and push notification infrastructure is exciting too. One small gotcha is that [...]

Danny O'Brien's Oblomovka:

Danny O'Brien: The Calculation Problem

Posted on the 4th of May at about 3AM.

I love how the Web is an unfinished work made of unfinished works. Here’s one more for you: an old beginning to a story I never wrapped up, based on an alternative future in which Cyril Parkinson worked on artificial intelligence, Harold Wilson stayed a civil servant statistician, and Cecil King’s 1968 request that Mountbatten [...]


Tuesday, April 16

The Open Library Blog:

Anand Chitipothu: Open Library Scheduled Downtime (Completed)

Posted on the 16th of April at about 1PM.

Open Library will be down from during the following time due to a scheduled power outage. Tuesday, April  16 - 7:00AM to 12:00 noon Wednesday, April 17 - 2:00PM to 7:00PM Thank you for your cooperation.  UPDATE 5:30PM PST: is back online.


Sunday, March 17


Clare Davies:                   OPPOSING FORCES 24 April – 12 May 2013 opening 6 – 8pm,  24 April c3 Con

Posted on the 17th of March at about 9AM.

                  OPPOSING FORCES 24 April – 12 May 2013 opening 6 – 8pm,  24 April c3 Contemporary Art Space Abbotsford Convent Foundation 1 St Heliers St. Abbotsford VIC 3067 Australia


Saturday, February 2


Clare Davies: What it means to be human Penny Bovell Clare Davies Isabel Davies Domenico de Clario Tom Gibbons Bevan Honey Ben jones Jeremy Kirwan-Ward Ak

Posted on the 2nd of February at about 6AM.

What it means to be human Penny Bovell Clare Davies Isabel Davies Domenico de Clario Tom Gibbons Bevan Honey Ben jones Jeremy Kirwan-Ward Akio Makagawa Mary McLean Kathleen O’Connor Curated by André Lipscombe Fremantle Arts Centre Sat 2 February–Sun 24 March 2013 Opening Fri 1 February, 6:30pm    


Sunday, January 13

Danny O'Brien's Oblomovka:

Danny O'Brien: He was funny

Posted on the 13th of January at about 12AM.

It was in the main room of CCC in 2006, and Aaron and Peter and I had just had a wide-ranging discussion on Wikipedia’s WP:AUTO guidance that people shouldn’t edit their own Wikipedia pages. For pernickety rule-followers with bad faith motives, it was trivially circumventable, of course: one could simply enter a pact to edit [...]


Saturday, January 12

The Open Library Blog:

Anand Chitipothu: Rest in peace, Aaron Swartz

Posted on the 12th of January at about 5PM.

Aaron Swartz committed suicide yesterday (Jan 11, 2013). The Open Library wouldn’t exist without him. He wrote the backbone of the system you see today, hired the team that built the first version of the website. He founded Demand Progress, which launched the campaign against the Internet censorship bills (SOPA/PIPA), coauthored the RSS 1.0 specification, […]


Monday, October 8

Stone: Alive & Kickin….. just

Posted on the 8th of October at about 2AM.

Hey peeps, What a busy year! – Seems like 6 months has passed in 3 days… weird.. Good news is that I’m still here and getting motivated to finish off the next movie (hopefully by December) and get into some … Continue reading


Wednesday, September 12

Danny O'Brien's Oblomovka:

Danny O'Brien: touch of the galois

Posted on the 12th of September at about 6AM.

As you will no doubt already know, there’s been a lot of talk in the last few days about a potential proof of the abc conjecture. I just gave up my last professional non-fiction writing gig last week, which means that I no longer have any obligation to explain to you what that is, or [...]


Saturday, August 11

tom m wilson:

Tom Wilson: Paleo Therapy

Posted on the 11th of August at about 7AM.

Currently I’m interested in the evolutionary context of human movement and psychology. I believe that stress reduction in modern Western society can be achieved through moving for pleasure in wild natural environments for regular, if brief, periods. We are stone age children born to twentieth century mothers, and I believe that understanding our past can [...]


Sunday, August 5

The Open Library Blog:

Anand Chitipothu: Scheduled Downtime (Completed)

Posted on the 5th of August at about 1AM.

We’re planning for a scheduled downtime on Sunday, August 5 for migrating our database server to new hardware. Open Library will be unavailable for  about 3 hours during 7:00 PM PST – 10:00 PM PST. We’ll post here when the site’s back online. UPDATE 8:40PM PST: The migration is  complete. Both and are back […]


Sunday, July 22

Danny O'Brien's Oblomovka:

Danny O'Brien: if the 3.4.1 Debian wheezy gnome-shell starts up slowly for you

Posted on the 22nd of July at about 2AM.

I love titles like that. Anyway, I am intensely enjoying being back in Debian-space, and I am slowly accreting small mechanisms of usefulness around me. Vim keystrokes are bleeding out everywhere. My caps lock is now a Meta key, and springs up little windows when I dance on it. I still quite like Gnome 3, [...]


Friday, May 25

Danny O'Brien's Oblomovka:

Danny O'Brien: NTK, Fifteen Years On

Posted on the 25th of May at about 6PM.

Give or take a few days, it was fifteen years ago that I hit send on the first official issue of NTK. I was hiding out at a start-up called Virgin Internet, trying to work out how to bring Usenet to the masses, or something. I added people to the mailing list by hand, but [...]


Tuesday, March 27

John Kozubik:

John Kozubik: With friends like these...

Posted on the 27th of March at about 4AM.

I have been an EFF supporter for a very long time and am excited about the work that they do. To a lesser degree, I am interested in, and support sister organizations of the EFF, such as Electronic Frontier Finland....


Sunday, March 11

Stone: The Pot of Gold at the end of the r..ough bush track…….

Posted on the 11th of March at about 6AM.

Yep. It’s out there. Recently I was lucky enough to be down in the ‘deep south’. I haven’t really looked around much down there – usually I’ll stick to the south west corner, Margs etc… It’s a bit more predictable… … Continue reading


Thursday, February 23

Stone: Life….!

Posted on the 23rd of February at about 3AM.

Life!  Blink, and you miss it!… or so they say… Yep, it’s been busy lately but hopefully soon I can show you some of the designs I have been working on. Hope you’re all happy and healthy, whoever you are!, … Continue reading


Wednesday, February 15

Danny O'Brien's Oblomovka:

Danny O'Brien: reality distortion field lensing

Posted on the 15th of February at about 10PM.

I think about Steve Jobs these days on average about once a day. I’d like to pretend I think about Apple, because I could then say that it’s because I’m pondering the future of the post-PC world, and get to stroke my chin in a punditly fashion, but it’s mostly about Steve Jobs. One of [...]


Friday, February 10


Clare Davies: Window 24HR Art – Northern Territory Centre for Contemporary Art Darwin NT 0801 – AUSTRALIA Vimy Lane, Parap Shopping Village te

Posted on the 10th of February at about 4AM.

Window 24HR Art – Northern Territory Centre for Contemporary Art Darwin NT 0801 – AUSTRALIA Vimy Lane, Parap Shopping Village tel + 61 8 8981 5368 10.2.12 – 10.3.12


Sunday, February 5

tom m wilson:

Tom Wilson: Goodbye

Posted on the 5th of February at about 3AM.

This is my last blog post for a long time, maybe forever. I began this site in 2005, with help from my brother. Thanks for all your help Sam. That year I finished writing my PhD. In 2006 I started writing a blog, and for the next six years I regularly contributed images and words [...]


Tuesday, January 24

PEAR Blog:

doconnor: What would you do with 5 million lines of code?

Posted on the 24th of January at about 2PM.

Since October 2011, 5 million lines of the PEAR codebase has shifted to github. Hand in hand with this shift has been the tireless work of Daniel C – someone who brazenly said “I will fix the failing packages!” in … Continue reading


Tuesday, January 17

tom m wilson:

Tom Wilson: Moral Leaders of the Nation

Posted on the 17th of January at about 3PM.

Over Christmas I took the opportunity to look back over some of the talk from 2011.  Here I bring you the words of the ‘moral leaders of the nation’.  The first comes from the American nation.  The second comes from the Australian nation. The first comes from American author Bill McKibben, and the second comes [...]

Danny O'Brien's Oblomovka:

Danny O'Brien: some rambling conversations I’ve had on moving from MacOS to Debian

Posted on the 17th of January at about 3AM.

When the magic smoke escapes Drunkenly confessing all with Brady Forrest last week: “I’ve done an insane thing. I’m abandoning my nice MacOS laptop for Debian.” “Was it Lion for you too?” Liz has a Macbook Air, and loves Lion. I bought and installed it on my Macbook Pro when it came out. It has [...]


Sunday, December 18

PEAR Blog:

doconnor: Welcome to new contributors

Posted on the 18th of December at about 11AM.

With the PEAR move to github surpassing 200 repositories, we’re seeing more contributions from folks lurking in the shadows. In particular I’d like to highlight the efforts of meldra and Gemorroj. With XML_Feed_Parser hosted on github, Meldra has been able to provide … Continue reading


Thursday, December 15


Clare Davies: The Conservatorium Co-Curators Renae Coles & Anna Dunnill Jan 27 – Feb 5, 2012 Paper Mountain 267A William St Northbridge, upsta

Posted on the 15th of December at about 7AM.

The Conservatorium Co-Curators Renae Coles & Anna Dunnill Jan 27 – Feb 5, 2012 Paper Mountain 267A William St Northbridge, upstairs Perth Fringe World       


Saturday, December 10

The Open Library Blog:

Mike McCabe: Reading lending library books on the Nook

Posted on the 10th of December at about 12AM.

Our lending library books now work on the Nook! If you can read online, try the ‘Read In Browser’ link on a borrowable book. This is simplest!  Otherwise, you’ll need a computer, with Adobe Digital Editions (ADE) installed. Once you have ADE, here’s how to use it with your Nook: Quit Digital Editions, if it’s […]


Friday, November 25

Release notes from semver:

mojombo: v1.0.0-rc.1

Posted on the 25th of November at about 10PM.

Move pre-release and build sections to last position.


Thursday, November 24

Stone: Ahh, summer….

Posted on the 24th of November at about 1AM.

Yep. Summer. It’s upon us. It’s weird. As I get older I tend to dred those 40 degree days when it’s too hot to even walk down the beach to the water. Or, if I forget to take the cover … Continue reading


Tuesday, November 22

The Open Library Blog:

Noufal: KohaCon 2011

Posted on the 22nd of November at about 12PM.

Anand and I attended the Koha Conference in Thane, Mumbai earlier in November and spoke about Open Library. The conference took place from Oct 31 till 2 November. There was a hackfest following the event from 4th to 6th. We missed the first day and presented our talk on the second day of the event. […]


Sunday, November 6

PEAR Blog:

doconnor: PEAR Development on Github

Posted on the 6th of November at about 12AM.

Like many other projects, many components of PEAR have started a migration to github. We have two primary organisations set up for PEAR and PEAR2. While the existing PEAR packages will continue to use the distribution and bug tracking … Continue reading


Monday, October 31

PEAR Blog:

doconnor: Newly stable packages in PEAR

Posted on the 31st of October at about 12AM.

We’ve had 60 releases since July. While most are often minor improvements or bug fixes; a number of packages really stand out. Net_DNS2, and HTTP_Request2. Each of these packages represents the second edition of their respective APIs; each having been … Continue reading


Thursday, September 15

Stone: Still Alive!

Posted on the 15th of September at about 12AM.

Heya everyone! Yep, it’s been awhile between drinks here but I’m still alive and kicking… The footy season has finally finished for my team – we made the grand final only to go down to a better side in Scarborough … Continue reading


Wednesday, September 7

Release notes from semver:

mojombo: v1.0.0

Posted on the 7th of September at about 6AM.

Make patch/minor version resetting explicit.


Saturday, July 9

PEAR Blog:

doconnor: PEAR in July 2011

Posted on the 9th of July at about 2PM.

There’s nothing quite like having your blogging system go MIA for a while to give your community an overwhelming impression that no one is home. Thankfully; despite the radio silence between updates there’s quite a lot to talk about! We’ve … Continue reading


Friday, June 17

Stone: Just One Of Those Daze…

Posted on the 17th of June at about 4AM.

Saturday, 11th June 2011. The surf report was nothing too exciting. A long period 2.2meter SW swell and a gusty 20 knot NEasterly but it was my first Saturday off from playing footy so it was worth the punt. A … Continue reading


Wednesday, June 8

Release notes from semver:

mojombo: v1.0.0-beta

Posted on the 8th of June at about 7AM.

Fix link to GitHub project.


Thursday, May 5

Stone: Aotearoa – The Land of the Long White Cloud…

Posted on the 5th of May at about 6AM.

Kiaora friends!, Wow. You really don’t know what exhaustion is until you’ve travelled abroad with 2 kids under 2 years of age! But don’t get me wrong, what an adventure – I think we’ve all gained so much from 3 … Continue reading


Thursday, March 17


Clare Davies: Island Life Venn Gallery 16 Queen Street Perth, WA 6000 Australia 6.5.11 – 3.6.11

Posted on the 17th of March at about 11PM.

Island Life Venn Gallery 16 Queen Street Perth, WA 6000 Australia 6.5.11 – 3.6.11


Clare Davies: Joondalup Festival Joondalup Festival Art Trail Grand Boulevard and Boas Street 26th 27th March 2011

Posted on the 17th of March at about 11PM.

Joondalup Festival Joondalup Festival Art Trail Grand Boulevard and Boas Street 26th 27th March 2011


Wednesday, March 9

Stone: L.A.G.O (Late Arvo Glass Off)

Posted on the 9th of March at about 1PM.

Hi All, Well, a wave of inspiration (or a ripple at the very least) washed over me on the weekend and I managed to get into the studio for the first time in a long time. My awesome wife is … Continue reading


Wednesday, December 8

John Kozubik:

John Kozubik: Peak Internet

Posted on the 8th of December at about 6PM.

In light of current events, I think it is time to begin discussing "Peak Internet" in the same way that we discuss "Peak Oil" or "Peak Credit". The last two weeks have included Comcast potentially de-peering due to end user...


Tuesday, November 16


Clare Davies: Impressions 2010 limited edition prints by contemporary artists 6-8pm Friday 3 December 2010 – 12 February 2011 AUSTRALIAN PRINT WORKS

Posted on the 16th of November at about 2AM.

Impressions 2010 limited edition prints by contemporary artists 6-8pm Friday 3 December 2010 – 12 February 2011 AUSTRALIAN PRINT WORKSHOP GALLERY 210 Gertrude Street Fitzroy VIC link here


Thursday, September 16

John Kozubik:

John Kozubik: Ignoring The Kill Switch

Posted on the 16th of September at about 6PM.

And so, in Q1 of 2011, will provide a wireless private network at each of its physical locations (San Diego California, Denver Colorado, Zurich Switzerland, and Hong Kong) which will allow customers to physically approach the datacenter and access their stored data without traversing The Internet. This will ensure that bad policy will have to enter the stone age to keep you from accessing your data.


Saturday, August 14

PEAR Blog:

doconnor: PEAR in August

Posted on the 14th of August at about 4PM.

What’s the pear project been up to recently? We’ve been fairly quiet, launching pear2 and pyrus into the line up, welcoming new faces to the QA team, Jesús Espino, and getting ready to call an election for the new pear … Continue reading


Friday, August 6

John Kozubik:

John Kozubik: The Warrant Canary in 2010 and Beyond

Posted on the 6th of August at about 10PM.

We have been publishing our Warrant Canary weekly at for almost five years now. We are happy to report that in this time, no warrants of any kind have been served to us.


Friday, June 25

John Kozubik:

John Kozubik: Moving (back) to the Finder

Posted on the 25th of June at about 11PM.

I've been running an HTPC of some kind or another for almost ten years now, and my user interface has finally come (almost) full circle.


Saturday, May 29

PEAR Blog:

cweiske: Google code channels work again

Posted on the 29th of May at about 6AM.

The recent problems regarding the usage of PEAR channels hosted in google code SVN repositories has been fixed on both sides! PEAR 1.9.1 is out! Continue reading


Monday, May 10


Clare Davies: City of Joondalup Invitation Art Award Survey Ellenbrook Arts February  2011 link here City of Joondalup Invitation Art Award 14 – 30 Oct

Posted on the 10th of May at about 12PM.

City of Joondalup Invitation Art Award Survey Ellenbrook Arts February  2011 link here City of Joondalup Invitation Art Award 14 – 30 October 2010 Lakeside Joondalup Shopping City Joondalup Perth WA link here


Tuesday, March 23

PEAR Blog:

cweiske: PEAR channels on google code currently broken

Posted on the 23rd of March at about 3PM.

PEAR channels hosted on google code (like the unofficial Smarty channel, unofficial Zend Framework channel and the unofficial Mediawiki channel) are currently broken. The reason for it has been discovered in the corresponding bug report: HTTP requests containing a port … Continue reading


Thursday, February 18

John Kozubik:

John Kozubik: Git and Subversion Support at

Posted on the 18th of February at about 10PM.

At long last, git is supported at


Saturday, December 12

John Kozubik:

John Kozubik: Google DNS

Posted on the 12th of December at about 10PM.

I believe that Google will begin delivering search results based not only on PageRank but an amalgam of PageRank and other, increasingly "out of band" information.


Thursday, November 19

John Kozubik:

John Kozubik: Making the Mac more like Ion

Posted on the 19th of November at about 8AM.

For ten years - roughly 1999 through 2009 - all of my personal workstations ran the Ion window manager on top of X Windows (on FreeBSD, FWIW). (actually, it was ratpoison at first...)


Friday, November 6

John Kozubik:

John Kozubik: Flat Rate Storage Services vs.

Posted on the 6th of November at about 8PM.

One of the most common pre-sales questions we get at is: "Why should I pay a per gigabyte rate for storage when these other providers are offering unlimited storage for a low flat rate?" The short answer is: paying a flat rate for unlimited storage, or transfer, pits you against your provider in an antagonistic relationship. This is not the kind of relationship you want to have with someone providing critical functions.


Saturday, October 24

John Kozubik:

John Kozubik: SwissDisk Doubles Down

Posted on the 24th of October at about 8PM.

We'd heard of SwissDisk here at, but they rarely showed up on our radar screen. We were reminded of their existence a few days ago when their entire infrastructure failed. It's unclear how much data, if any, was eventually lost ... but my reading of theirannouncement makes me think "a lot". I'm commenting on this because I believe their failure was due to an unnecessarily complex infrastructure. Of course, this requires a lot of conjecture on my part about an organization I know little about ... but I'm pretty comfortable making some guesses.


Tuesday, June 30

Dave Robertson:

Dave Robertson: Coral Coast Tour


Tuesday, October 14

Dave Robertson:

Dave Robertson: Nannup

Posted on the 14th of October at about 5AM.

I’m excited to be on the bill for next year’s Nannup Music Festival which also features Michelle Shocked and Lior. It will hopefully be the first gig at which my new album will be available. Recording of the album will commence in December and feature some fantastic musicians including Mel Robinson, Ben Franz, Sian Brown, […]

The post Nannup appeared first on Dave Robertson.


Friday, June 27

Dave Robertson:

Dave Robertson: Sounds Like Cafe

Posted on the 27th of June at about 7AM.

“Other Body Parts” features on the latest compilation in the Sounds Like Cafe series, which is distributed to over 1200 cafes and coffee shops throughout all states and territories of Australia. Each SoundsLikeCafe CD features some of Australia’s most highly regarded musicians, such as Paul Kelly, Grace Knight and Abbe May.

The post Sounds Like Cafe appeared first on Dave Robertson.