Shane Koyczan

To remind my sons. Shane Koyczan is brilliant. Three worthy prose poetry performances by him are Remember How We Forgot, To This Day, and Why Does This Man's Grandfather Fight Monsters?.

Not that many really good ideas worth spreading?

My Facebook friends have been turning on TED and TEDx for a bit mostly because they have been pulling talks that don't fall within the traditional notions of science. I can't say I blame them -- friends and TED/TEDx. Especially when few people really understand that TED and TEDx are difference conferences altogether and TED/TEDx does not respect that many in their audience are rational, spiritual beings. For example, pulling Sheldrake's talk is really unfortunate as his is an interesting perspective on Eastern and native peoples spiritualism in Western science clothing. (Others that were pulled seem to me to be little more than entertainment presentations. That is, I don't care.) With that said, TED is a business — they sell conferences — and so they can edit (not censor, only governments do that) as they want. The challenge is for another conference organization to build the same name recognition as TED but in areas TED fears to tread. Let's look for them and support them.

In the end, however, I think what might be happening is that there simply are not that many really good ideas worth spreading!

W.A.I.T

When wanting to talk WAIT: That is, ask the question "Why am I talking?"

Non-NISO duration standard

My peers have adopted the following non-NISO duration standard:
  • Shortly is less than 17 mins or 29 mins.
  • In-a-bit is less than 29 mins.
  • Half-hour is 30 to 50 mins.
  • In-a-while is about 1 hour.
  • Later is about 2 hours.
YMMV.

Too little skeuomorphism!

I find iOS 7's UI boring rather than utilitarian and/or minimalistic. I am, frankly, surprised at my reaction to this utilitarianism as it is something I have wanted for some time. How I have it, I think Apple went too far in removing the skeuomorphism.

Shipping container building inspiration

Found at http://cubiclerefugee.tumblr.com/post/596714844

I am Geordi LaForge. Really!?

Your results: You are Geordi LaForge. You work well with others and often fix problems quickly. Your romantic relationships are often bungled.
Geordi LaForge
70%
Spock
64%
Jean-Luc Picard
60%
Mr. Scott
60%
Beverly Crusher
60%
Worf
55%
Chekov
55%
James T. Kirk (Captain)
50%
Data
46%
Leonard McCoy (Bones)
45%
Uhura
40%
Will Riker
40%
An Expendable Character (Redshirt)
35%
Mr. Sulu
10%
Deanna Troi
10%
Click here to take the Star Trek Personality Test

Using a compound index to reduce lock timeouts with MySql 5.5

If you use MySql 5.5 and have a hot table where updates and inserts fail due to lock timeout then the following will be of interest. The SQL statement

update t1 set c1 = ? where c2 = ?

Will (effectively) lock the WHOLE TABLE unless there is a compound index on the columns used in the update. Adding the index

create index i1 on t1(c2,c1)

will allow MySql's locking mechanism to only lock the records touched by the update and not the whole table.
My public library (and, I am guessing, so does yours) uses X's library catalog web application. If free time were more I would enumerate its comprehensive collection of poor to dreadful user-experiences. But I don't and so I won't. This posting is a trivial example of

Chain of Command and the storm in a tea cup.

I took down my post about my objection to having advertising in the opening pages of the Chain of Command rules book. While I continue to object to having advertising at the front of a paid product I now know better that my expectations are quite different (even quaint) than the general expectations of both rules buyers and rules publishers. If you want to know more about how this played out, then see the thread on Too Fat Lardies Yahoo! group (this is a private group so you must join to see postings).

Clipping my magpie wings & I healing my crow wings.

I deactivated my Facebook account. I deleted my Instapaper account. I deleted my (RSS reader) goread.io account. I deleted my Delicious account. And others are going sooner than later. I am tired of have all these virtual stacks of unread stuff scattered around my virtual desk. I have enough physical stacks of unread stuff that really needs my attention -- and is, more often than not, deserving of that attention. I am clipping my magpie wings and I am healing my crow wings.

I don't customize my Mac very much. Too much bad experience from my thirty years of personal computer support. So when I do add a customization has to have high utility. The following is the small set of enhancements I use Yoink BusySync

Developers and Depression

I work in an industry whose participants have little connection to their own behavioral and emotional life. I consider myself an escapee more than a survivor. (Thanks Chris!) It is also rare at a technical event there would be a session called "Developers and Depression". But here it is: Developers and Depressiongiven by Greg Baugues on August 16 2013 at Steel City Ruby in Pittsburgh, PA.

Developers and Depression from Confbots on Vimeo.

If your presence doesn't work, neither will your words.

“If your presence doesn't work, neither will your words.” - Yogi Bhajan

GNU Screen cheat-sheet

SCREEN

starting screen

     named

          screen -S name

     within sudo

          script /dev/null
          screen -S name

disconnecting

     ^a d

reconnecting

     screen -x foo
     screen -x user/foo

listing

     screen -ls

$HOME/.screenrc

     hardstatus alwayslastline "%w %= %H "

     defscrollback 10000

     multiuser on
     addacl user1
     addacl user2
     addacl userN

help
     ^a ?

WINDOW

new window

     ^a c
     ^a : screen

title window

     ^a A name
     ^a : title name

close window

     ^a k
     ^a : k
 
     using ^d at the shell prompt will close end the current shell and so close the window.

select window

     ^a number
     ^a : select number

select next window

     ^a backspace
     ^a : prev

read-only window

     ^a : chacl * -w number

read-write window

     ^a : chacl * +w number

REGION

new region (aka split) 

     ^a S
     ^a : split     

select next region

     ^a tab

resize regions (equally)

     ^a : resize =

close region

     ^a X
     ^a : remove

close all regions except the current region

     ^a Q
     ^a : only

SCROLL-BACK
 
view
 
    ^a esc
 
page back
 
    ^b
 
page forward
 
    ^f

finished
 
    esc esc
 
END
See http://aperiodic.net/screen/start for an online manual.

Getting OS X to use the application you want to open a document type

I had a little problem where Chrome was not the default viewer for XML documents on my Mac. Using the "Open With..." dialog to select the application to use with the document did not stick. In the end I used the duti utility, eg

duti -s com.google.chrome text/xml all
and this seems to have worked. Will see if it continues to work after a reboot.

The other problem is what are the applications, UTIs, or MIME types that can be used? The command

/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister -dump | grep ...
can be used to investigate. Further, I found a reference to AllApplications which will also help.

How will the driverless car affect the design of our cities?

My comment on How will the driverless car affect the design of our cities?

A car allows me to get to a destination for specific purpose. For example, I don't "go to work" any more. I work where I am. Most of the time this is from my home. Other times, it requires that I be in proximity and cooperation with others. The car gets me to this work. Had not my employer contracted to use a specific location for this communal work, ie "the office", then all the participants would travel to a mutually agreed upon facility. In a car. With a self driving car I could continue to work where I am.

I do understand that my work allows for this. And that this is not true for everyone.

What interests me about my comment is that I now see that my advocating for mass public transport needs to be reviewed to account for the current facts and numbers regards who (workers in this case) that could actually take advantage of it.

Check the checkers

Always, always ensure that automated processed are checked by independent automated processes. If you don't do that then make sure the automated processes are very chatty -- email, SMS, smoke signals. etc. Well, err, perhaps not the last one as I am sure it would scare the data-center staff.

Devices in the classroom

Open letter to the South Kingstown, RI's School Committee, Superintendent, and Curtis Corner Middle School principal:

Dear Superintendent Stringfellow, Principal Aull, and the South Kingstown School Committee:

This letter is in regard to devices in the classroom and, incidentally, about "bring your own device" (BYOD) also.

I am not opposed to educational use of devices and other information technologies. I want to understand the pedagogical imperatives that are driving the continued expansion of devices in the classroom and now the BYOD policy. As a parent, I see the expansion being pushed by a small and vocal group of parents. They are well intentioned, “how couldn't a student benefit from have the Internet immediately available?” but not holistic.

Educational research has often been in the vanguard of new ideas and processes. My first job in the late 1980's was helping Brown University's students and faculty to use high performance, networked workstations. I did this for eight years and so I have a fair amount of experience with the use of technology in education. Overall, it was not an effectiveness use of resources. Where it was successful, its success was due to great teachers and motivated students -- an always-successful situation. From my continued readings on the topic I do not see a marked difference in the results achieved today. Then, as now, the technology gets the student's immediate attention but without improving their long-term retention.

At the same time that I was working with technology Theodore Sizer's "Coalition of Essential Schools" was also centered at Brown University. Its "Common Principles", while not antithetical to technology, did not see technology as a requirement of a good school. It is well worth rereading the nine principles when opening any educational discussion. See http://en.wikipedia.org/wiki/Coalition_of_Essential_Schools.

A classroom filled with knowledgable teaching, rapt student attention, and dynamic discussion is wonderful to experience. It is also rare. Why? In part it is because of the ever-present constants of maturing teen bodies and their daily energy cycles. We also live in a time of significant and accelerating change for their families and our communities. Our children are present in this no matter how much we try to shelter them.

Through all of this secondary education has attempted to keep abreast of the changes and to incorporate appropriate devices -- that is, hardware, network, and software tools -- for teaching. The perspective from which "appropriate" is considered seems to have been only the administration's. I am sure some teachers want to include devices in their classroom just as I am also sure some teachers opposed it with all their might. Any change in the classroom must first address the pedagogy.

The demands on teacher and student time, attention, and energies have grown enormously over the last decade. Linda Stone writes about our culture's "continuous partial attention." We don't want to miss anything. Continuous partial attention is a coping mechanism. Unfortunately, by coping with not missing anything we have given up understanding a few things well. Secondary education must firmly instill knowing a few things well.

For example, I want my children to understand Algebra 1 well. I want them to understand it without resorting to Wolfram Alpha or any other software aid. Algebra 1 is not rocket science (but it is hard.) Putting pencil to paper has a proven track record of success and new research reports a strengthening of understanding and retention when both physical and intellectual effort is exerted. What do you remember better, the equation worked out on paper with all its missteps, crossings-out and corrections or a cleanly typed and retyped of the same? The former expression has a history while the later only has an end. You need the history to understand how to get to the end.

How is the classroom teacher going to keep the students attention when these devices beckon -- literally and figuratively? They do come with an "Airplane mode" but they do not come with a "Classroom mode." Consider that we can't keep teens from texting while driving and that action is actually life threatening. All that a device in the classroom does is perpetuate the attention deficit and, far worse, it separates the student from the teacher.

In this letter, I am not addressing the disparities that will arise due to family income. Nor does it address the difficulties for teachers having to prepare classroom materials for a diversity of devices. These are very serious issues that have social and professional costs. Even if these issues were solved, however, we, a community of supportive adults, still need to know how a student looking down at a screen -- sometimes described as "a world under glass" -- instead of looking across a classroom of peers to a teacher at a whiteboard is an improvement to educating our children?

Yours truly, Andrew Gilmartin

For related postings see one-to-one.

Age of Sail

The "Wednesday Gamers" have been playing an Age of Sail game in my absence. (I have had work and family events that prevented me from playing.) And so, I have been an armchair admiral for the last few weeks. I am currently reading N. A. M. Rodger's The command of the ocean : a naval history of Britain, 1649-1815 to get better acquainted with the period. I also read the article, review, and reply to Douglas Allen's fascinating analysis of the economic incentives that made the Royal Navy and so Britain a great power: The British Navy Rules: Monitoring and Incompatible Incentives in the Age of Fighting Sail. (Also for free.)

While looking online for Age of Sail game rules I came across Jeffrey Knudsen's http://www.warartisan.com/ and his wonderful paper-craft models. I have not yet built any (armchair restrictions), but I have to say that the instructions are top notch. Even if you have no intention of making a 1:900 scale square-rigger do read the instructions for the 64-gun ship of the line and rigging tutorial. They are models of instructional clarity.

Admirals115

While I did not find the rules the Wednesday Gamers are using I did find the board game Fighting Sail which I want to try. The game was published by Simulations Publications, Inc. (SPI) many years ago and long out of print, but thanks to pack-rats and their pimp I was able to buy an unpunched copy.

Sazerac

I want to sit at a bar with Chris McMillian behind it!

Background tasks

I don't like waiting on the completion of a task that should be run in the background. For example, when I bookmark a page using a Delicious bookmarklet it presents a modal dialog box that has me wait for the bookmark to be made on Delicious' servers. The saving might only take a short time but the length of this short time varies greatly. The unknown wait is a serious obstacle to maintaining flow.

What I would like to see is for web browsers to have a background tasks API and user interface. A task is a JavaScript function. A web page or application (webapp) can add a task to the list of background tasks. The execution of the background task has the same constraints as any other task running in a give webapp from a specific web site.

The task is run by the browser when it has the chance. There are no guarantee of timeliness; just a promise of best effort. For simplicity, all the tasks in the list are run in the order added by the adding webapp. That is, if pages A and B both add 5 tasks to the background list then the tasks will be run in the order A1, B1, A2, B2, A3, B3, A4, B4, A5, B5. All tasks "succeed" in that any errors that occur must be conveyed to the originating webapp and its existing enqueued tasks. For example, a status of the task is kept in a cookie and the webapp & its tasks look at this cookie to determine the right course of action. The only indication to the user of tasks status will be a message in the task history. The user must not be expected to "respond" to the status message. The webapp is allowed to enumerate its tasks and to cancel them.

The "Narrator" service

I have an itch. I want to create a podcast. Not of myself talking on & on about something of importance to me. (I do this in my day job and in the mirror.) What I want is a podcast of the long articles or papers of interest that I discover. I want to be able to access these in the car or when I am otherwise not able to read them online or in print. A podcast of readings of these longer texts subscribed to in iTunes would be very helpful. And so I am now thinking about implementing a service to achieve this.

The "Narrator" service is a very simple pipeline. At this stage it looks like this:

  1. URL of article to read is deposited with Narrator.
  2. Narrator deposits the URL to Instapaper.
  3. Narrator confirms Instapaper's understanding of the text with the depositor.
  4. Narrator starts a HIT with Amazon.com Mechanical Turk.
  5. The HIT's reader uses Narrator's online audio capture to record the reading.
  6. The depositor is notified of the reader's audio availability.
  7. Narrator adds the article's link and the reader's audio to the depositor's podcast feed.

I will keep this posting updated as I find out more about implementing this service. If these already exists, then please tell me.

Update: The Umano app and service is getting close to what I want.

Spring, archetypes, conditional sections, and properties.

Comment on Project Configuration with Spring

We added a further twist to the properties and added "conditional sections" to the contexts.
For properties, we have the normal "common" properties that define the default values for all properties for all deployments, deployment specific properties that override the defaults, and archetype specific properties that (mostly) enable conditional sections. Examples of archetypes are "full text search", "full text indexing", "analytics processing", "upload processing", etc.

The conditional sections allow for the inclusion of beans based on the value of a property. We have many properties that have names of the form "xxxx.enabled". When the value is "true" then the conditional section's beans are defined. (A similar effect can be had by using different "application" context files but we found that conditional sections worked better for us.)

The startup procedure is to
  1. load the common properties to "prime" the environment,
  2. load the deployment specific properties where are defined the archetypes used by the deployment,
  3. load each of the archetype properties, and then, finally,
  4. reload the deployment specific properties again (to reset deployment specific property values).
Together these two features -- conditionals and archetypes -- allows us to deploy a specific configuration with very little customization. And it is all done within Spring with just two custom tags.




Another amazing animation by Piotr Kaczmarek!

Another amazing animation by Piotr Kaczmarek!

Pay for service and tools you rely on

I am happy to pay for good service and tools. I have decided that Google does not give either. Perhaps it is because I am both a customer and product to them. Perhaps not. The upshot is that I have discontinued Google Drive. I am back to Safari. I have no intention of trying Google Keep. Instead, I am paying DropBox and Evernote for their services and tools. And so far I am very happy.

Crazy world example #1

Crazy world example #1: Staples wants $23.40 to print 40 pages in color and duplex in their Copy & Print center. They can also sell me an HP Deskjet 2512 All-in-One Printer for $39.99. So, for an extra $16.59 I can buy a printer for this one use and a few more pages afterwards and then throw it away.

OS X and system-wide default paths

If you want to change the system-wide set of paths for OS X edit the file /etc/paths. (It took me too long to find this out.)

Chirp

For some applications and tools there can be no output for a long time. When these are tailed seeing nothing is disquieting. The following Perl script will output a "chrip" every few seconds, intermixed with the log file's content. For example,
tail -F foo.log | grep bar | chirp
Save the following to /usr/local/bin/chrip
#!/usr/bin/perl -w

use strict;
use POSIX qw(strftime);

$::timeout = 5;
$::format = "%F %T";

while ( @ARGV ) {
my $arg = shift @ARGV;
if ( $arg eq "-t" ) {
$::timeout = shift @ARGV;
}
elsif ( $arg eq "-f" ) {
$::format = shift @ARGV;
}
elsif ( $arg =~ /^-/ ) {
print "usage: chirp [ -t seconds ] [ -f strftime-pattern ]\n";
exit 1;
}
}

local $SIG{ALRM} = sub {
print strftime( $::format, localtime ), " chirp\n";
alarm $::timeout;
};

alarm $::timeout;

while ( <> ) {
print strftime( $::format, localtime ), " ", $_;
}

# END

Installing mt-daapd on OS X

The following story is not pretty. I am hoping there is an easier way in the future. Until then, here is how I installed a music server on a Mac.

We have a Mac Mini that is used to hold the family's music collection. However, since this machine is also used by the kids for homework, iTunes is not always running. I finally got around to installing a DAAP server on the machine so I could expect to find the music available when I wanted it. I used brew to build and install the mt-daapd server. Assuming you have brew installed you need only run

brew install mt-daapd

However, for some reason the brew recipe did not complete the installation. This turned out to be fortuitous as I continue to want use iTunes to manage the music located in my home directory. And so I configured mt-daapd to run from within my home directory. First I created the /Users/ajg/Library/Application Support/mt-daapd directory for mt-daapd data. Then created a configuration file at /Users/ajg/Library/Application Support/mt-daapd/mt-daapd.conf containing

[general] 
web_root /usr/local/share/mt-daapd/admin-root
port 3688
admin_pw password
mp3_dir /Users/ajg/Music/iTunes/iTunes Media/Music
db_dir /Users/ajg/Library/Application Support/mt-daapd
servername Minimac Fulltime
runas nobody
extensions .mp3,.m4a,.m4p,.wav,.wma,.aiff,.ogg
logfile /Users/ajg/Library/Application Support/mt-daapd/mt-daapd.log
rescan_interval 600
process_m3u 1
scan_type 0
compress 1

Your configuration should be the same except, perhaps, for port (the default is 3689 which conflicts with iTunes), password, mp3_dir, and servername. To test the installation run the following and then open iTunes so see the "Minimac Fulltime" server.

/usr/local/sbin/mt-daapd -y -c '/Users/ajg/Library/Application Support/mt-daapd/mt-daapd.conf' -f -d 1

Once it is working, the next step is to keep it running using OS X's launchd. Create the file /Users/ajg/Library/Application Support/mt-daapd/mt-daapd.plist containing

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>mt-daapd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/mt-daapd</string>
<string>-y</string>
<string>-c</string>
<string>/Users/ajg/Library/Application Support/mt-daapd/mt-daapd.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>

Install it and start the server running

launchctl load "/Users/ajg/Library/Application Support/mt-daapd/mt-daapd.plist"
launchctl start mt-daapd

I can now listen to music on any of my devices around the house; which includes a first generation iPod Touch using Simple DAAP Client. And if I need to check the server's status I can open http://localhost:3688/.

Update: A link to the FireFly Media Server at the Internet Archive.

View Evernote note via an Everynote Link

Everynote is a good "everything bucket" tool. I have begun to use it more and more for notes, tasks, etc. A feature of Evernote is that you can create Evernote Links. These links are URIs that reference a note, but only locally. However, it occurred to me that the data in the link could be used to create a URL to the same Everynote note as displayed on the web. The following is a bookmarklet that prompts for the link, converts it to a URL, and then directs the browser to view the page at the URL.
(function(){
var link_pattern = new RegExp(
"^evernote:\/"+
".*"+
"\/"+
"([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})"+
"\/"+
"([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})"+
"\/"+
"$");
var link = "";
for(;;) {
link = window.prompt("Evernote link?",link);
if ( link ) {
var m = link_pattern.exec(link);
if ( m ) {
var url = "https://www.evernote.com/view/notebook/"+m[1]+"?&n="+m[2];
window.location.assign(url);
break;
}
}
else {
break;
}
}
}
)();
Show in Everynote.