Does Anyone Have a Pen?

I try to look at problems at the right level of abstraction. Here’s my illustration of why I think that’s important.

You’re in a group of people and someone asks: “Hey, does anyone here have a pen?”

What they are likely really asking is “does anyone have something to write with” because most of time a pencil would also be ok. Obviously there are exceptions — if they are signing a legal document. But most of the time people just idiomatically ask for a pen regardless of whether there is a strict requirement for a pen and not a pencil.

“Does anyone have something to write with” opens up the solution space and admits pencils, markers, crayons, and maybe even a lump of coal (lol) as possible answers. In contrast, “does anyone have a pen” presupposes the type of the solution within the question itself.

Go up a level of abstraction in your questions and thinking. Maybe go up multiple levels; even “does anyone have something to write with” could be too specific. Need to remember where you parked your car at the airport? You could write it down in a notebook. Or you could take a picture of the lot location with your phone. But maybe your phone is out of battery so you can’t … prompting you to ask a stranger to borrow something to write with. If whoever you are asking doesn’t have a pen but has a phone they could still help you (let’s ignore some privacy concerns for this illustration). They could take the picture with their phone and send it to you (to receive when you charge back up). Going up another level of abstraction to “how can I remember this” instead of “anyone have something to write with” admits even more potential solutions into the equation. At least we can think about them even if in this case we might decide not to share our phone number with a stranger.

Go as high up the abstraction chain as you can. That’s where all the good ideas come from.

Supreme Ruler of the Universe: Thermostats

When I am Supreme Ruler of the Universe, people who crank the room thermostat down to 50 because they think it will somehow cool the room off faster will be forced to live one week in a room that is 50 degrees, without any warm clothes, coats, or blankets.

Wildlife Cameras

Installed some new wildlife cameras. Haven’t seen anything new/unusual yet other than this “non-typical” deer:

It’s 50/50 – it either happens or it doesn’t!

There’s a cliche probability joke, where the answer to any question, no matter how complicated, is simply: “It’s 50/50 – either it happens or it doesn’t!” and now I’m proud to say I got that joke into a Couch Slouch column in WaPo:

I also managed to work 52-factorial in as well, with full digit expansion! Enjoy.

python: Decoding multiple JSON strings in a file

I wanted to be able to decode a stream that had multiple, undelineated, JSON string representations in it. For example, a file like this:

[1, 2, 3] [4, 5, 6] [7, 8] [9, 10, 11, 12]

Which has multiple JSON arrays in it, separated only by (optional) whitespace. Perhaps they might be separated by other characters in other applications (e.g., comma separated JSON strings)

First stop, as always, was stackoverflow, which had some relevant answers, like this one:

I decided to write a variant of the several “read it in chunks, try to JSONDecode it, keep reading more if it doesn’t yet parse” solutions. Here is my take at this problem, as a gist:

Posting this in the hopes, as always, that someday someone will be looking for something like this and stumble across it via google (if I’ve somehow worked enough key phrases into this posting)

Supreme Ruler of the Universe: Are You a Robot?

Every now and then I make an observation about something I would do to improve everyone’s life, well — almost everyone — if only I were made Supreme Ruler of the Universe. I’m collecting these phrases and posting them periodically on my site.

For example:

When I am Supreme Ruler of the Universe, the devs who code the “click every picture that contains a car” robot detector will get run over by cars, ideally driven by robots.

I’ll be adding more; they will all be in the Supreme Ruler of the Universe category so you can find them easily when you are deciding whether you wish to support my humble campaign for this position.

Scotch: Ice Sphere vs One Large Ice Cube

A friend recently asked “what is the difference between an ice sphere and one (large) ice cube?”

Well, let’s do some math. First we have to make some simplifying assumptions, which honestly really would need to be verified. But let’s not let lack of evidence get in the way of doing some fun math!

The idea behind the sphere of ice is that it cools your drink while presenting the minimum surface area, and (presumably) therefore minimizing drink dilution. A sphere has the minimal surface area for a given volume, which is why soap bubbles generally form spheres.

Let’s assume that the total cooling capacity of an ice cube is related to its volume. If we have a cube with side length a, then the volume of that cube will be:

Vc = a3

Similarly, if we have a sphere of radius r, its volume will be:

Vs = (4/3)πr3

Since we want the same cooling capacity in both the cube and the sphere, we need to set the two volumes equal, and then we can determine what the cube side-size a would be for the same volume as a sphere of radius r:

Vc = Vs

a3 = (4/3)πr3

a = [(4/3)πr3](1/3)

[1]     a = [(4/3)π](1/3)r

Equation [1] tells us what size cube we need (side length a) in terms of a sphere of radius r, so that the volume of the cube and the volume of the sphere are the same.

Now let’s look at surface area. Surface area of a sphere of radius r:

Ss = 4πr2

Surface area of a cube of side length a:

Sc = 6a2

which, using equation [1] to get that in terms of r becomes:

Sc = 6[(4/3)π](2/3)r2

and therefore the ratio of the surface area of the cube, Sc, to the sphere, Ss, becomes:

Sc/Ss =6[(4/3)π](2/3)r2 / 4πr2

=6[(4/3)π](2/3) / 4π

=3[(4/3)π](2/3) / 2π

=  1.24 (approx)

So the cube with the same total volume as a sphere will have about 24% more surface area. Still way better than having multiple small cubes of ice in your drink. Enjoy!


Coin flip simulation still running – 62 days!

The coin flip experiment I described before is still running… so far for 62 days. It is running on a dedicated linux box on my network:

nw@randomlinux$ uname -a
Linux randomlinux 4.9.0-6-amd64 #1 SMP Debian 4.9.88-1 (2018-04-29) x86_64 GNU/Linux

nw@randomlinux:~$ lscpu
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 76
Model name:            Intel(R) Atom(TM) x5-Z8350  CPU @ 1.44GHz
Stepping:              4
CPU MHz:               482.695
CPU max MHz:           1920.0000
CPU min MHz:           480.0000
BogoMIPS:              2880.00
Virtualization:        VT-x
L1d cache:             24K
L1i cache:             32K
L2 cache:              1024K
NUMA node0 CPU(s):     0-3

and the updated results are:

  • Trials Completed: 5,008,009
  • Total Coin Flips: 8,604,595,583,786
  • Longest Trial: 2,785,974,537,774
  • Trials Ending in 2 flips: 2,504,265 (50.005%)

Updated breakdown of the percentages of trials completed in N flips, and the corresponding prediction:

length (flips) actual % theoretical %
2 50.005% 50.00%
4 12.503% 12.50%
6 6.244% 6.25%
8 3.903% 3.906%
10 2.736% 2.734%
12 2.062% 2.051%
14 1.610% 1.611%
16 1.316% 1.309%

I’m letting this run until the next power failure terminates the experiment. Unfortunately the little box this is running on is not set up on a UPS. My power typically glitches (short outages) a few times each year (I’ve written about this before) so I don’t know how long to expect this run to get, but as long as it is still running I will keep collecting the data. Let’s hope for no thunderstorms in the hilltop area any time soon.