Turn in your Son-of-the-Pacific-Northwest card, buddy

Pictures do not do justice to the crushing weight of the towering tree squeezing tight my pitiful chain saw – said saw sadly saddled with an operator soon to be exiled in shame to the desert sands. Said chain saw solidly stuck. Forever stuck. A testament to the folly of man’s hubris overwhelmed by Mother Nature’s wrath.

Chain saw stuck in tree

It all started so innocently. Just a few fallen trees to clean up – as practice for, perhaps, chain sawing an out-building. Or at least chain-sawing access to the out-buildings.

Then I remembered that there were a couple of little trees aimed at the house. They weren’t dangerous now, but they were junker trees, Alders, and would have the Alder’s natural life cycle. That is, they’d fold as soon as the next icing.

So, this little one was a sort of prep tree. But I got careless and the saw was stuck. Getting the saw out was actually easy. From the roof I grabbed a little branch and gave it a tug. Down came the tree, the top leaves and little limbs brushing the side of the house.

It was a good exercise. The next, little tree was straight forward. No lean, so easy to drop where I wanted.

The big one – the one that drove the whole operation – was very satisfying. It had a strong lean toward the house, so I used a couple of straps (salvaged from Summer’s soon to be late, departed van) to sort of give the tree the hint to fall sideways, cut a strong tack to windward and watched it fall perfectly along the side of the house, touching nothing but ground.

Now, safely in my armchair with brandy in the snifter, let’s review the antics of the flying chain saw.

Chain saw stuck in tree

Ubuntu Precise makes Vista look like a sparkling, priceless jewel

For work reasons I looked at Ubuntu 12.04, Precise 32bit under VMWare Player.

From early reviews, etc., I was prepared for being underwhelmed by the Unity user interface. I was not prepared for a disaster.

Here are some tag lines that come to mind:

“Ubuntu Precise – for those who cannot figure out a mouse.”

“Ubuntu Precise – bringing the worst of bad phone UI design to a desktop frighteningly near you.”

“Ubuntu Precise – the most expensive free OS in existence.”

“Ubuntu Precise – for those who never ever want to resize or scroll a window.”

“Ubuntu Precise – with an immutable, ‘Halloween from Elm Street’ desktop theme loved by 32 year old boys in their mother’s basements worldwide.”

“Ubuntu Precise – breaking 10 years of software improvements to squeeze a whole ‘UI’ in to an icon-sized area at the top left corner of your bare-bones, dual 24″ 1080p monitor system.”

“Ubuntu Precise – the OS for people who struggle with only 500 icons on their desktops.”

“Ubuntu Precise – type partial app names to see icons that do nothing.”

The list goes on and on.

What’s truly unfortunate is that Precise, by all accounts, has many small but real improvements over Lucid in particular programs and sub-systems.

If Lucid ran Office, a normal person could probably drop Windows and deal with Linux USB and general non-Windows issues. Lucid has pluses over XP and even Win7 to balance the minuses. But I’d not point anyone to Precise. It’s simply not a working system.

And we may use it in a product, desktop-less.

Slide show screen saver

All these years I’ve used a black screen saver.

Screen savers really don’t do anything any more. Few screens have phosphors to save. And, why burn juice? Just hit the power on the monitors and walk away.

But, for odd reasons, the other day I put some pictures from my picture page on a screen saver cycle. It was fun to see them! All sorts of warm feelings. It’d been a long time since seeing some of the pictures. And most reminded me of when and where they were taken. Which was kinda nice.

So, to celebrate the good times, I whipped up a script to extract the URLs and other information for each of the pictures and a bit of Javascript to cycle through them. Here’s the result:


View the page source to get the idea.

Python 3

Read an interesting screed on Python 3.

Thoughts on Python 3

Agreed.

This paragraph pretty much sums it up:

Python 3 is in the spot where it changed just too much that it broke all our code and not nearly enough that it would warrant upgrading immediately. And in my absolutely personal opinion Python 3.3/3.4 should be more like Python 3 and Python 2.8 should happen and be a bit more like Python 3. Because as it stands, Python 3 is the XHTML of the programming language world. It’s incompatible to what it tries to replace but does not offer much besides being more “correct”.

I really like Python. Moved from Perl (for PC work) when CPU’s got fast enough for Python. The Python out-of-box was terrific.

But, Python 3 is another language. I can’t justify porting all my personal “library” code to another language. Some of the Python 3 stuff reminds me of C++ – puffiness for the sake of puffiness. If forced to go to Python 3, I’d evaluate what language to use as I did when moving from Perl.

And as it stands, it’s very clear that, since all the garbage-collection-memory-protection languages are equivalent, the last one standing will be JavaScript. You have to write the occasional JavaScript. So you have to pay the entrance fee. Maybe node.js will end up making JavaScript work reasonably as a non-browser language. Something will. And that’s the end of all the other languages (excepting the type-anal ones for corporate cubicles). Poof. Python 3 becomes a non-issue.

If Python ran in the browsers and if it ran on all the newer OS’s, then fine. It could go head to head with JavaScript. Otherwise … Too bad. Sad. I may be a curly bracket guy, but Python just looks and feels better than JavaScript.

rsync and sshpass

After spending yet another several hours fighting the good fight, it seems like a good idea to note how to use rsync on a troublesome ssh connection – one that both requires a password and that is slooooow to get logged on.

First, the problem of the password is solved using sshpass. It allows you to put the password for the remote system in a file. The file, we presume, is stored in your ~/.ssh/ directory and has its permissions set so that only you, the user, can see it or do anything with it. In that way, it works like an ssh key file that you might tell ssh to log in with using the “ssh -i ...” command line option.

Second, to allow for a slow server, use something like this as an option to ssh:

ssh -o ServerAliveInterval=45 ...

That is, tell ssh to wait for 45 seconds for the slow server to get you logged in.

So the command line to get a connection to the server is something like this:

sshpass -f ~/.ssh/bonzo_password.txt       \
             ssh                           \
            -p __BONZO_SSH_PORT_22__       \
            -o ServerAliveInterval=45      \
             __BONZO_USER__@__BONZO__


Excuse the horrid backslashes. They are for the browser window.

All well and good. But that command line won’t work under rsync. The connection will be made, then instantly dropped. And rsync hangs.


I presume the drop is something security-related in ssh.
Or maybe sshpass.
Whatever.
rsync is unhappy.

But, here’s the deal: rsync will be happy if the connection is already made in another terminal, and you have configured ssh to allow connections to go through a “master” connection – that is, tell ssh to not log in normally, but to rather use an existing ssh connection.


You tell ssh to use an existing connection by putting the following in a ~/.ssh/config file (remember to set the permissions for everything in ~/.ssh for only your access):

ControlMaster       auto
ControlPath         /tmp/ssh_mux_%h_%p_%r

For clean-up reasons, you put the sshpass command in a separate .sh file which we’ll call ssh_to_bonzo.sh.

So now you run that ssh_to_bonzo.sh script in a “SCREEN” – sort of a virtual terminal window!

screen -t ssh_to_bonzo -dmS ssh_to_bonzo ssh_to_bonzo.sh
sleep 45


Note the you-set-it, 45 second delay.

Once this code is run, you can rsync away, though with the world’s worst command line.

So your whole rsync script might look something like this:

screen -t ssh_to_bonzo -dmS ssh_to_bonzo ssh_to_bonzo.sh
sleep 45
rsync --rsh="sshpass -f ~/.ssh/bonzo_password.txt ssh -l bonzo_user_name"     \
        bonzo:bonzo_directory                                                 \
        to_directory
pkill ssh_to_bonzo.sh

Or something of that sort.

Notice the pkill ssh_to_bonzo.sh at the end. That cleans up the screen operation.

Note, too, that you must still give the sshpass command line to the rsync --rsh option.

Piece of cake.

What happened in 1975?

Recently, a group down in Berkeley pulled together temperature measurements from all over the world for the last couple hundred years.

Their effort is notable in that they are publishing the source code and data. This novel idea of publishing the code and data is a very good thing. Thank you, ClimateGate.

And they published their results in graph form:

land temperature graph

The usual flurry of noise followed their press release.

I did not read of anyone asking the immediate question this graph raises:

What happened in 1975?

Net Connection Monitor

The net connection here was getting pretty flaky. Down for chunks of time in the night, day and in between.

Since our connection’s gears are hidden beneath a couple layers of organizations, it’s been frustrating to deal with the outages. It feels like Qwest / Century Link’s problem – the telling from the second hand says they say that there is only 1 wire-pair in to the house, so they probably are not wholly on top of things. But who knows?

So I wrote a little script to ping every 10 seconds an address randomly chosen from:

The script prints the exit value from the “ping” program (1 is bad) and the duration the pinging has been bad when a good ping follows any bad one.

Here is a day of activity:

1   8.8.8.8         Sat Oct 22 00:02:11 2011
0   72.1.134.1      Sat Oct 22 00:02:33 2011 00:00:22
1   66.93.87.2      Sat Oct 22 00:30:48 2011
0   72.1.134.1      Sat Oct 22 00:30:59 2011 00:00:11
1   8.8.8.8         Sat Oct 22 00:31:11 2011
0   8.8.8.8         Sat Oct 22 00:31:44 2011 00:00:32
1   66.93.87.2      Sat Oct 22 01:27:28 2011
0   8.8.8.8         Sat Oct 22 01:27:39 2011 00:00:10
1   8.8.8.8         Sat Oct 22 01:27:51 2011
0   66.93.87.2      Sat Oct 22 01:28:02 2011 00:00:10
1   66.93.87.2      Sat Oct 22 01:32:49 2011
0   66.93.87.2      Sat Oct 22 01:32:59 2011 00:00:10
1   66.93.87.2      Sat Oct 22 02:03:45 2011
0   8.8.8.8         Sat Oct 22 02:04:39 2011 00:00:54
1   72.1.134.1      Sat Oct 22 02:14:32 2011
0   72.1.134.1      Sat Oct 22 02:14:42 2011 00:00:10
1   66.93.87.2      Sat Oct 22 02:21:29 2011
0   72.1.134.1      Sat Oct 22 02:21:50 2011 00:00:21
1   66.93.87.2      Sat Oct 22 02:33:26 2011
0   66.93.87.2      Sat Oct 22 02:33:36 2011 00:00:10
1   66.93.87.2      Sat Oct 22 02:45:24 2011
0   8.8.8.8         Sat Oct 22 02:45:34 2011 00:00:10
1   72.1.134.1      Sat Oct 22 02:57:01 2011
0   8.8.8.8         Sat Oct 22 02:57:23 2011 00:00:21
1   8.8.8.8         Sat Oct 22 03:28:36 2011
0   72.1.134.1      Sat Oct 22 03:29:09 2011 00:00:32
1   8.8.8.8         Sat Oct 22 03:32:55 2011
0   66.93.87.2      Sat Oct 22 03:33:06 2011 00:00:10
1   66.93.87.2      Sat Oct 22 04:27:07 2011
0   72.1.134.1      Sat Oct 22 04:27:28 2011 00:00:21
1   66.93.87.2      Sat Oct 22 04:32:22 2011
0   66.93.87.2      Sat Oct 22 04:32:43 2011 00:00:21
1   72.1.134.1      Sat Oct 22 04:44:21 2011
0   66.93.87.2      Sat Oct 22 04:44:31 2011 00:00:10
1   8.8.8.8         Sat Oct 22 04:56:09 2011
0   8.8.8.8         Sat Oct 22 04:56:19 2011 00:00:10
1   8.8.8.8         Sat Oct 22 05:19:54 2011
0   8.8.8.8         Sat Oct 22 05:20:04 2011 00:00:10
1   66.93.87.2      Sat Oct 22 05:31:40 2011
0   72.1.134.1      Sat Oct 22 05:32:01 2011 00:00:21
1   66.93.87.2      Sat Oct 22 06:18:38 2011
0   66.93.87.2      Sat Oct 22 06:19:11 2011 00:00:32
1   66.93.87.2      Sat Oct 22 06:19:23 2011
0   72.1.134.1      Sat Oct 22 06:19:34 2011 00:00:10
1   72.1.134.1      Sat Oct 22 06:19:46 2011
0   72.1.134.1      Sat Oct 22 06:19:56 2011 00:00:10
1   72.1.134.1      Sat Oct 22 06:54:21 2011
0   8.8.8.8         Sat Oct 22 06:54:32 2011 00:00:10
1   66.93.87.2      Sat Oct 22 06:56:35 2011
0   66.93.87.2      Sat Oct 22 06:56:46 2011 00:00:10
1   66.93.87.2      Sat Oct 22 07:17:56 2011
0   8.8.8.8         Sat Oct 22 07:18:06 2011 00:00:10
1   66.93.87.2      Sat Oct 22 07:53:16 2011
0   66.93.87.2      Sat Oct 22 07:53:26 2011 00:00:10
1   72.1.134.1      Sat Oct 22 07:53:38 2011
0   66.93.87.2      Sat Oct 22 07:53:48 2011 00:00:10
1   66.93.87.2      Sat Oct 22 08:16:52 2011
0   66.93.87.2      Sat Oct 22 08:17:02 2011 00:00:10
1   66.93.87.2      Sat Oct 22 08:40:22 2011
0   66.93.87.2      Sat Oct 22 08:40:44 2011 00:00:21
1   8.8.8.8         Sat Oct 22 09:54:46 2011
0   66.93.87.2      Sat Oct 22 09:54:57 2011 00:00:10
1   66.93.87.2      Sat Oct 22 09:56:30 2011
0   66.93.87.2      Sat Oct 22 09:56:52 2011 00:00:21
1   8.8.8.8         Sat Oct 22 11:54:25 2011
0   66.93.87.2      Sat Oct 22 11:54:46 2011 00:00:21
1   72.1.134.1      Sat Oct 22 11:56:32 2011
0   66.93.87.2      Sat Oct 22 11:57:15 2011 00:00:43
1   8.8.8.8         Sat Oct 22 12:05:20 2011
0   8.8.8.8         Sat Oct 22 12:05:41 2011 00:00:21
1   8.8.8.8         Sat Oct 22 12:40:48 2011
0   72.1.134.1      Sat Oct 22 12:40:58 2011 00:00:10
1   66.93.87.2      Sat Oct 22 12:52:24 2011
0   72.1.134.1      Sat Oct 22 12:52:35 2011 00:00:10
1   66.93.87.2      Sat Oct 22 12:57:20 2011
0   72.1.134.1      Sat Oct 22 12:57:41 2011 00:00:21
1   72.1.134.1      Sat Oct 22 14:23:30 2011
0   66.93.87.2      Sat Oct 22 14:24:02 2011 00:00:32
1   72.1.134.1      Sat Oct 22 19:32:21 2011
0   8.8.8.8         Sat Oct 22 19:32:32 2011 00:00:10
1   66.93.87.2      Sat Oct 22 21:39:20 2011
0   66.93.87.2      Sat Oct 22 21:39:30 2011 00:00:10
1   8.8.8.8         Sat Oct 22 21:53:51 2011
0   72.1.134.1      Sat Oct 22 21:54:13 2011 00:00:21
1   8.8.8.8         Sat Oct 22 21:54:36 2011
0   72.1.134.1      Sat Oct 22 21:54:57 2011 00:00:21
1   72.1.134.1      Sat Oct 22 23:12:39 2011
0   72.1.134.1      Sat Oct 22 23:12:49 2011 00:00:10

Analysis of more data shows that, indeed, the gateway is more reliably pinged than the Speakeasy/Megapath DNS server, which is slightly more reliable than the Google DNS server. So, it’s the wire.

Meanwhile, the net connection currently is faster than it’s ever been. Almost a meg, down and a half meg up. Whooo, hoo.

Back and forth translations

Starting with thoughts of how it would be nice to have a back and forth translator when writing an email to someone who speaks a different language…

You would normally write the email in your language, then crank it through a web translator to get the text for the other person.

Well, shouldn’t the translator show the text translated back from the target language to yours so you can check what the other guy will be reading?

Oddly enough, I didn’t find anything on the web to do that as you type. Weird.

But, then it gets interesting.

The guys developing translation software could use instances of people’s starting text and final text when people process their writings through a back-and-forth-erizer. Figure a person starts by saying what he wants to say in his language. Then, as he modifies what he writes so the translation is better, he’s effectively spelling out a way to translate from his language to his language. He’s showing you a meaning thesaurus, not just simple word substitutions.

(Gunning) Fog index: Wouldn’t the difflib comparison score between the original and the back-translated text be in some way consistent with fog indices? The translation software builders probably use something like this to evaluate their software. I would.

Certain pairs of languages will translate back and forth better than other pairs. What does that mean?

  • The translation software is better for those two lingoes?
  • The cultures/people are closer?
  • What else?

Over time, what happens? Can the changes in the pair distances be used as a metric of how the world is becoming a global village? Can such changes be used in any way to understand cultural differences? Can translation software improvements be normalized out of the pair distances over time?

Presumably, the translation software guys are monitoring the pair distances between languages so that there are no instances of translations being better going through an intermediate language rather than going direct from one language to another. If such were ever the case then the thing to do would be to train the direct translator using the longer route translations. Doing such a process iteratively sounds like a pretty good way to bring a new language in to the system. All the new language needs is a corpus of translations from it to one other language. Of course, this wouldn’t be a binary thing. The more effective pair-corpus’s would be able to bootstrap the less effective links, generally.

What are the implications of a world where people write using a language back-and-forth de-fogger? Does the writing end up bureaucratic? No personality. No sharp meaning. Vanilla.

Should textbooks be run through such a de-fogger? Should speeches? Especially in the education field, it seems important to get things across clearly.

Could using these back-and-forth techniques be used to build a new language? A better language? Could they be used to build a creole language?

If a language translation system built a creole language that’s close to an existing one, does that imply that the translation system understands the ingredient languages like a human?

Given net-available text, how much CPU does it take to build an effective language translation system?

Could back-and-forth translations be used to help translate old text in to modern language? That is, keep modifying the old text until you get the best back-and-forth for your modified text. It would be interesting to automate this whole process. Proof reader, editor, re-writer system.

Good URL, but probably going away in December (returns JSON translation of the ‘q’ string):

http://ajax.googleapis.com/ajax/services/language/translate?q=come%20to%20papa?&v=1.0&langpair=en%7ces

Pulsing Web Page

Years ago, I daydreamed about a head’s up display for futuristic Instant Messaging. The display would show vital signs of the “buddy” you were monitoring. Such an intimate thing might help with communication.

Seemed like a good idea at the time.

Well.

https://www.tranzoa.net/alex_pulse/

Viewing this waveform from the CMS50E requires an HTML5-capable browser (Firefox / Safari / Modern phones / Webit / maybe IE9). I do not know how timely the waveform will show up from outside the house. It updates on localhost about once a second – roughly in time with the heartbeat beeping from the device.

Alex Pulse

The waveform just stays put if the “finger” is out. Who knows what will happen when the device is not connected to the PC that runs the server.

The “finger” is my left index toe.

left toe

The project got a little out of hand. The general idea is to have a generic server that makes it easy to stream line/point numbers out to arbitrary numbers of web clients to graph. I cut things short to get this thing on line.