MaisonBisson

a bunch of stuff I would have emailed you about

PCB prototyping services

ExpressPCB promises For a fixed price of $75, you will receive 3 identical 2 layer, 3.8″ x 2.5″ PCBs with solder mask and silkscreen layers. That seems like a good plan, but I’m also very new to this market. Are there other, better options? And, as long as I’m asking, what software is available for […] » about 200 words

What camera systems are worth it?

Given that my feelings for Canon’s lackluster approach to mirrorless cameras, I’m now obligated to look for a new camera system, and that has me looking at cameras I’d previously ignored. Fujifilm’s X system is a recent entrant into the interchangeable lens mirrorless camera fray (note that not all the cameras in the X line […] » about 500 words

The EOS M system might as well be dead

Amazon is now selling EOS M cameras for $329 with free shipping. At that price you have to think about buying it as a joke, but that’s exactly what it is. The camera is hobbled by Canon to avoid cannibalizing sales of their other products. Consider this: Fujifilm’s X series, Sony’s mirrorless NEX 6 and 7 […] » about 300 words

Shutterfingers

I started work on my first Arduino project today, though I have yet to get the hardware. The plan is to build a servo controller that can trigger the shutter on my Panasonic LX3 camera that lacks any sort of remote shutter release. I started looking into this before and found Cris Benton struggled with […] » about 500 words

Building GEOS on CentOS

It should be simple, but I ran into a number of errors.

First I got stuck on libtool: line 990: g++: command not found. It turns out I needed to install g++ using:

yum install gcc-c++

Then I got stuck on this one:

platform.h:110:2: error: #error "Can not compile without isnan function or macro
[...]
"Coordinate.inl:38: error: ‘ISNAN’ was not declared in this scope

The author of this page faced the problem, but the real insight came from this bug report on an unrelated project:

In these versions of g++ isnan is defined as a macro in <math.h> unless is included, in which case std::isnan() is defined instead.

And so I tried replacing #include <math.h> with #include <cmath> in include/geos/platform.h. Amazingly, that worked.

Lumix LX3 sample photos

A friend was asking about the Lumix LX7 I named in my camera roundup the other day and earlier this year. I keep the LX7 in the list because of my experience with it’s predecessor a couple generations earlier: the Lumix LX3. He asked how it performs, but I struggled at first to find photos demonstrating […] » about 400 words

Why in-camera GPS matters

I concluded my review of current camera options with the claim that I’d switch lens systems for a compact interchangeable lens camera that had built-in GPS. Why do I want GPS? Because the competition for all the cameras I listed there is my iPhone, and one of the reasons I prefer my phone is because […] » about 300 words

Summer 2013 Camera Options

I reviewed a lineup of cameras I’d consider to replace my aging Canon Rebel XTi and Panasonic Lumix LX3 back in February, but I’m on a roll after collecting some film camera party packs so I decided to update this list as well. Since I gathered my original list I’ve started using motion control robots and my photo habits have changed. […] » about 1600 words

Detect MySQL’s “too many connections” error

WordPress appears to continue with execution even when MySQL refuses connections/queries after init. Here’s a comment in the MySQL docs suggesting how to detect the condition in raw PHP:

$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (mysql_errno() == 1203) {
  // 1203 == ER_TOO_MANY_USER_CONNECTIONS (mysqld_error.h)
  header("Location: http://your.site.com/alternate_page.php");
  exit;
}

Just a note to myself, but I wonder if there’s opportunity here.

SF gentrification debate

I wade into this topic wearily, but I do love my new city, even in the moments where it drifts from critically self-aware to navel gazing. Ian S. Port’s July 17 review of the media coverage of the gentrification debate included this nugget discussing Ilan Greenberg’s angle on the topic:

[W]hat’s happening here isn’t gentrification at all, but merely middle-class residents using the word to conceal discomfort over richer people coming in and ruining their good time. Greenberg argued that neighborhoods like the Mission are already long gentrified, and that the Againsts are a simply bourgeois class with access to the media, who are ignoring the plight of the genuinely poor out of worry for themselves. “In San Francisco, anti-gentrification is a progressive cause to save financially viable people … from losing their lease on a rental property in an already gentrified neighborhood,” Greenberg wrote, with the emotional detachment of an outsider. “In the best of times, it’s hard to envision a lot of people shaking the rafters for this one.”

In a city that has long enjoyed significantly higher median household incomes than the rest of California and the nation, this has a ring of truth to it.

Data sources for geographic boundaries

world.geo.json

To mock something fast and loose with geo-json data for the world, this is your fix. Legal status of this dataset: dubious?

For a good time, drag them to http://bl.ocks.org/1431429 and paint the globe!

world-atlas

[A] convenient mechanism for generating TopoJSON files from Natural Earth.

Natural Earth

Natural Earth is a public domain map dataset available at 1:10m, 1:50m, and 1:110 million scales. Featuring tightly integrated vector and raster data, with Natural Earth you can make a variety of visually pleasing, well-crafted maps with cartography or GIS software.

Natural Earth solves a problem: finding suitable data for making small-scale maps. In a time when the web is awash in geospatial data, cartographers are forced to waste time sifting through confusing tangles of poorly attributed data to make clean, legible maps. Because your time is valuable, Natural Earth data comes ready-to-use.

Built For A Purpose: Geographical Affordances and Crime

In Cabinet spring 2013, Geoff Manaugh investigates the relationship between geography and the crimes that geography affords. In the 1990s, Los Angeles held the dubious title of “bank robbery capital of the world.” At its height, the city’s bank crime rate hit the incredible frequency of one bank robbed every forty-five minutes of every working […] » about 300 words

Speeding up MySQL joins on tables with TEXT columns, maybe

The thing about WordPress’ DB schema is that TEXT and VARCHAR content is mixed in the posts table (to say nothing of the frustrations of DATETIME columns). That’s not such a problem for a blog with a few hundred posts, but it’s a different matter when you have a few hundred thousand posts. And it wouldn’t even […] » about 500 words

What is the difference utf8_unicode_ci and utf8_general_ci?

From the MySQL manual:

For any Unicode character set, operations performed using the xxx_general_ci collation are faster than those for the xxx_unicode_ci collation. For example, comparisons for the utf8_general_ci collation are faster, but slightly less correct, than comparisons for utf8_unicode_ci.

They have a amusing “examples of the effect of collation” set on “sorting German umlauts,” but it unhelpfully uses latin1_* collations. And another table that helpfully explains:

A difference between the collations is that this is true for utf8_general_ci:

ß = s

Whereas this is true for utf8_unicode_ci, which supports the German DIN-1 ordering (also known as dictionary order):

ß = ss

This forum post adds more info, but nowhere do they explain how a ☃ sorts against ☁ or ⛅.

How much faster is utf8_general_ci than utf8_unicode_ci, though? An August 2010 message in the MySQL forums seems to suggest the performance for specific operations could be 30% faster, but then dismisses the performance difference as unimportant compared to good indexing and writing efficient queries.

Canon + iOS tethering solutions

There’s magic that happens inside the camera. Yes, magic. Most cameras expose the controls to that magic via some knobs and buttons and a small LCD screen. The knobs and other physical controls we like, but the screen pales in comparison to those on our iPhones. And that’s the thing, the hundreds of apps on […] » about 300 words

Testing apply_filters() times

Testing how long it takes to assign a variable versus assigning through WordPress’ apply_filters(). Filters are core to WordPress, but I haven’t yet looked at the total number of apply_filters() calls used throughout the code. The answer to this question is that calling a non-existing filter before assignment is about 21 times more costly than […] » about 300 words