Taking the fun away to be a better person

Twenty some years ago my right hand became frozen around a mouse. It took the left hand to pry the mouse from my … hand.


Microsoft Minesweeper.

Too much Minesweeper.

So, on the principle of “Never do yourself what a machine can do for you.“, I wrote a program to play the game. On screen. Mouse clicks and all.

And after watching expert mode being solved in 7 seconds a few times under Win 3.1, Minesweeper became boring and I stopped playing it. (No. The program did not use the cheat mode. It played fair.)

Problem solved.

Fast forward some years.

I wrote a program to solve Spider.

It didn’t help. I’ve still spent too much time on that game. But the program did find only a couple of impossible-to-win games out of 32 thousand dealt. That was informative.

Fast forward some more years.

I wrote a Sudoku program to stop myself from playing that game, uncompelling and bite sized though the game was. It was a fun program and is handy to find impossible and incompletely initialized / ambiguous games (e.g. at sudoku.com). But it didn’t satisfy.

Fast forward to now.

And we have a screen shot from sudo_ku.py playing a game at www.WebSudoku.com :

Playing Sudoku the right way.

We’ll see if I keep playing this site’s game.

Or a hacked old Python Gnome Sudoku program:

Playing Gnome Sudoku the right way.

The program looks at the screen(s), finds boards, solves them, and plays them using mouse clicks and keys to enter the numbers. Though the program is incomplete, it’s pretty satisfying. Perhaps that’s why at one point many years ago I said that my job was to automate my job. And perhaps that’s why I’m not among the robotic hand-wringers of today. It’s simply fun to watch machines do what they do best.

Medical systems in three phrases.

Finding things wrong with the US medical system is like dynamiting fish in a barrel.

Finding ideas for improvements isn’t any harder.

Implementing such ideas or even simply validating whether they are good ideas is much, much harder.

But one day I stood back and considered the “system” while keeping in mind three little phrases.

1) Who cares? It’s not my money.

2) You get what you pay for.

3) First, do no harm.

There may be other phrases as pithy and relevant. I don’t know. Can you think of any?

Let’s flesh these phrases out:

Who cares? It’s not my money.

Medical expenses are disconnected between payer and payee. Given regulatory realities, if you want to control your own medical expenses, you need a competing system – in another country.

But, going to another country is not often an option. US medical expenses are dominated by Medicare/Medicaid. Medicare/Medicaid don’t pay foreign medical bills.

When you are insulated from the price of medical care, your are not the customer. You are the product, perhaps. The raw material, perhaps. But you are not the customer.

Imagine buying something from Mr. Someone without knowing the price until your bank account has been debited for that Wells Fargo money order you sent to Mr. Someone. Ah, you would be the “mark”, perhaps, but not the customer.

You get what you pay for.

We all deeply know that “cheap” is cheap and “expensive” is high quality.

When you are sick or broken, do you want a cheap fix? Gosh no! You want the best money can buy. Since you have no clue what particular fix you want, it’s safest to go with the expensive fix and hope for the best.

Just try to justify a cheap fix for someone else’s body. Don’t you look horrid? Yes, you do, you uncaring cheapskate.

So, the existing medical system is a cost maximizing system. By demand.

First, do no harm.

Medical practice is not perfect. Many diseases and other negative attributes of our bodies are not dealt with well at all. This will always be true.

So how does the “system” find cures or fixes?

Carefully. By “hill climbing”.

“Hill climbing” is a simple, universal search method. When hill climbing, you start from where you are and look around your neighborhood for a better place to be. You go to that place and do the same thing again. And again. And again. Until you find yourself in the best place in your neighborhood. You have found what you are looking for. Search complete.

For example, imagine looking for a cure for cancer.

You have a current therapy for cancer. But is there a better one?

Well, you *could* search for one by randomly trying all sorts of things:

* Homeopathic beets.

* Up-beat music.

* Vegetarian fish.

* And so on.

But, “First, do no harm.” Ignoring the current, best therapy can certainly qualify as doing harm. So, to find a better therapy, you modify the current, best therapy by just a very little. Usually, you add something to the current best therapy – an extra “medicine”. Just enough to check a similar, nearby therapy. Carefully. Then, if this new therapy is an improvement, you switch to it, and do the process again. Carefully.

As a strategy, hill climbing can work very well. Unless the possibilities are vast or the best therapies don’t have wide, easily found slopes leading up to them.

Hill climbing gets stuck on what are called “local maxima” – the best place in the vicinity. Not the best place. Only the best place near the searcher’s current location.

Hill climbing is not a good way to find breakthroughs. Breakthroughs happen when someone gives up on current practice and flies off on a tangent. Doing harm.

Consider ants when they know their food source. They file to and fro, slightly improving the path to the source by cutting corners until the path is short and easy. They do no harm.

When the path is broken, the ants wander around in a peculiar random way, casting about for some indication of food.

They can die wandering randomly. “Tough break, Mr. Ant. Hard times call for hard measures. You do yourself harm for the greater good.

Uh, huh. Sell that to Hippocrates and his oath.

So there you have it. Food for thought.

Steep Speedy Hikes

It started as curiosity. What do GPS tracks say about the ratio of uphill and downhill hiking speeds?

It became graphs of all the hikes I’ve done since ’07 showing speed against the hike’s angle of slope.

Here are the average absolute slope angles on a per-track basis. If the dot’s high up, the hike was on a steep hill.

All hike speeds by track.

Yes, those high tracks before 2012 were steep. Mailbox Peak, Guye Peak, and Wagonwheel Lake, for example. Good stuff. A week after wobbling to the car below Wagonwheel Lake, I was merrily springing up the stairs at home.

Notice the laid back hiking in ’12 and ’13. … Sigh. … 2012 was a lost summer – lost working too much while the sun shone outside. The 2013 hiking season was spent in chemo-land. The cluster of flat hikes at the end of 2013 was me getting strength back by looping Maplewood.

Here are the average track speeds. It shows Scott’s bike a few times in the last couple years. The cluster of 5 kph tracks at the end of 2013 are the flat, Maplewood strolls mentioned above.

All hike slopes by track.

One of the slow speed hikes in late 2014 was up Adams Peak (Sri Pada) in Sri Lanka. Here are how the point-speeds on that walk distribute as a function of slope angle.

Sri Pada speeds by slope.

That hike’s graph really shows the difference between down and up-hill speeds. I “ran” down a lot, but you don’t enthusiastically race straight down 5000 concrete stairs.

Here’s the same sort of thing for Wagonwheel Lake:

Wagonwheel Lake speeds by slope.

As noted below, GPS points are noisy, any way you spin ’em. But the overall fit is OK.

Here are all the tracks’ points graphed as a function of slope.

All hike speeds by slope.

Bike ride speeds tower above the others. The near-level-ground points in the middle of the graph are, in fact, skewed to the left – downhill – to negative slope angles. They don’t look so in this graph for tech reasons.

Finally, here is a PDF containing scalable versions of the all-hike graphs above.


Note: These graphs were made from “hikified” GPS tracks. Points in a line between two points are eliminated by the “hikify” logic. That logic also combines GPS points near each other. But, even at a filtered, combined point scale, GPS data is noisy.

Python 2.7 scripts in the usual state of repair:


Really old hospital charges

Scratch paper gathered from Mom included some stiff cuttings of the bottom lines from a Longview hospital in 1973.


Here are some numbers:


Patient Amount Insurance
3434.15 0.00
7883.24 614.85
12280.31 11351.91
2862.78 0.00
13387.37 3656.97
2239.54 0.00
4516.33 2745.24
2632.35 0.00
12645.13 3542.17

They feel very modern.

Sending ad requests to the bit bucket

To send ad requests from your browser to the bit bucket, a common trick is to use the hosts file to send ad farm HTTP requests to a non-existent server.

A non-existent server can make the browser wait too long for gobs of HTTP requests.

So, give a machine running Apache an interface for an IP address that isn’t used on your local network., for instance. Or

Then add this sort of thing to your /etc/apache2/sites-enabled/200-vhosts file:

  ServerName    helload
  DocumentRoot  /var/www/spam_ad_dir/
  ErrorLog      /var/log/apache2/spam_ad_error.log
  CustomLog     /var/log/apache2/spam_ad_access.log combined
  RedirectMatch 403 /* 

Change the IP address as appropriate. And, you can make an empty directory at /var/www/spam_ad_dir/

For amusement, read the spam_ad_access.log.

Fleeting glances

Since replacing my eyes’ lens there have been a few times – every week or two, call it – when I see an hallucination out of the corner of an eye.

They move. Fast. And are gone.

What was that?? A rabbit? A car? A leaf falling where it shouldn’t?

They always seem like … something. Something identifiable.

But then they are gone and forgotten.

Nothing to see here, folks. Move on.

Coupled with more apparent oddities of new lenses – weird depth perception, fluid focus, bright blue world – these hallucinations do show that vision is not a camera.

So, now I wonder – just where in the brain is our GPU? Hey, it’s no new story that what we see in our mind’s eye is highly processed. But some gizmo has to render that highly processed information back in to pixels. That gizmo is impressive. And it’s not surprising the works of such a gizmo would be gummed up when its raw input is changed.

(Yes. I also believe that “gizmo” is a misleading representation of this aspect of the vision system’s architecture. It might make more sense to think of the image in our head as being heavily shopped. With parts of the image variably selected from many shopped alternatives.)

Paper Tape

As can be clearly seen by the octal values, this is a scan of the mylar tape of the Super Wrinkle boot loader for the APS-73 Computer used in Autologic typesetters.


Super Wrinkle, if I recall, was the ultimate boot loader – a worthy successor to the famous Wrinkle loader. Super Wrinkle required the minimum possible switch toggling to be read from the tape reader. Once it overwrote the toggled instructions, it read a more complex, generic, non-hacky loader. This had to be done after any power cycle / reset / program failure / hardware glitch.

The alternative to toggling in the instructions to read an infinite number of (Super Wrinkle) bytes from the tape reader was too expensive for everyday computer use. We’re talking $27 for a mighty, 256 byte ROM chip. That was back when $27 was $27, mind you. One customer built such a device out of discrete diodes to save the cost. The word was it was quite a monstrosity.

Does rotation matter?

Watch a baby get frustrated with toys that encourage them to fit a piece of wood in to a complex hole the piece is shaped for. Or watch a baby try to fit simple-geometry, 3D blocks through the 2D holes made for them in a box.

The question is: Do babies have a hard time twisting things and/or do babies just not “see” the rotation of an object? Or is there something else going on?

My own memory of those fit-the-pieces toys is not happy. I found them boring. And irritating. The danged thingees just did not fit properly! Like they had secret knobs that stopped them from going in to their holes. But I don’t remember having a hard time physically rotating the thingees. They just didn’t auto-rotate to exactly the right orientation as they should have. I was probably thinking, “Good golly, where is NFC when you need it?!!”

Well, luckily, the world moves on. Some years ago, car companies figured out a key should go in both ways. Now, they’ve figured out cars don’t need keys. Just a push-button. Soon, soon, your infant will be able to drive.

So what does a VR headset feel like if it rotates the horizon to always be level with your eye line? … … … As you see it in real life.