Some bookmarklets

A custom tea timer for

javascript:(function(){var timestr=window.prompt("Time in sec?","120"); if(timestr===null) /*Cancel*/ return; clock.stop(); clock.reset(); var t = +parseInt(timestr,10) || 0; /**/ if(t<=0) return; clock.setTime(t); clock.start(); })();

A message I have found myself typing frequently on Stack Overflow: ūüôā

javascript:!function(){var t=document.querySelector.bind(document),o=t(".edit-post");if(o){var e=t(".js-add-link.comments-link");if(e){;var a=t('textarea[name="comment"]');a&&(a.value="Welcome to the site! Check out the [tour]( and the [how-to-ask page]( for more about asking questions that will attract quality answers. You can [edit your question]("+o.href+") to include more information.",a.scrollTop=a.scrollHeight,a.focus())}}}();

As compressed by; non-minified is:

 var qsel = document.querySelector.bind(document);
 var edit_link = qsel('.edit-post');
 if(!edit_link) return;
 var add_comment = qsel('.js-add-link.comments-link');
 if(!add_comment) return;;
 var textbox = qsel('textarea[name="comment"]');
 if(!textbox) return;
 textbox.value =
"Welcome to the site! Check out the [tour]( "+
"and the [how-to-ask page]( for "+
"more about asking questions that will attract quality answers. You can "+
"[edit your question](" + edit_link.href + ") to include more information."
 textbox.scrollTop = textbox.scrollHeight;

These are the first two I have written.  I  hope they are useful to you, or serve as helpful examples if you are writing your own bookmarklets!


When programmers get it right

Technology makes our lives better to the extent we don’t have to think about it. ¬†Robert Pirsig makes this point in¬†Zen and the Art of Motorcycle Maintenance, and it’s still true: technology that draws attention to itself has failed (except to a very hard-core audience of which I am probably part ūüėČ ).

For the last two years, I have been using Google Chrome to view PDFs at work.  Dozens a day, usually with at least five open at a time.  For the last two years, every time I have rotated the view clockwise or counterclockwise, my page has shifted off-screen and I have had to scroll to get back to it.  Has that stopped me from doing my job?  No.  Has it drawn undue attention to the underlying technology?  Yes.  Very yes.

I cannot express my delight at finding,¬†after a recent Chrome update, that I wasn’t the only one with this problem ‚ÄĒ and that it has been fixed! ¬†I rotated my PDF and reached for the scrollbar, but then I noticed the underlying technology in a¬†good way: I was still looking at the same page I had been. ¬†Now each day is a bit smoother, and my job is a bit easier, because the fix has reduced, rather than increased, my mental workload.

My sincere thanks to everyone involved in pdfium bug 116297.  Special thanks to thestig at for making the fix!  If you read this, thestig, please know you have succeeded.

Note to programmers: sometimes small fixes¬†are big wins. ¬†It took thestig¬†two lines of code to save me several minutes of wasted effort per work day, every work day, possibly for the rest of my career. ¬†Fix the small things ‚ÄĒ your users will thank you!

Why Assumptions are Important

Every piece of technology is built to work provided its assumptions hold.  Every piece of electronics, for example, assumes it will have power.  No power => no function (as famously noted by The IT Crowd).  By breaking those assumptions, you can do some amazing things:

In this video (~36 min), scanlime finds exactly the right microsecond¬†to drop the power supply — just enough! — to cause the processor built into a graphics tablet to dump its entire memory over a USB connection. ¬†This is not a function the tablet was supposed to provide!

By painstakingly, scientifically defeating the assumption of a stable power supply, the tablet’s firmware control program,¬†intended to be kept within the tablet, becomes¬†available to inspect. ¬†And, as scanlime points out at the end of the video, that control program may well open other doors. ¬†Analyzing¬†the control program may reveal¬†other assumptions the tablet makes — assumptions that can be broken to change¬†the tablet’s function to what she wants it to be.

Every system is only functional, secure, reliable, or any good at all,¬†as long as its assumptions hold. ¬†Whenever you think about the latest gizmo,¬†don’t just ask what it will do for you. ¬†Ask what it won’t do for you when you least expect it — when the gizmo¬†assumes wrong.

@party 2016, or, What the bookmark said

The "Type Theory" bookmarks at @party 2016

The “Type Theory” bookmarks at @party 2016

I watched the stream of the compos at¬†@party 2016¬†and enjoyed the video of¬†Type Theory¬†by nom de nom and¬†Tymbeusz (YouTube). ¬†Until now, though, I had no idea what the bookmarks looked like! ¬†Thanks to jmph and the @party folks for putting a scan on ¬†In case you don’t want to download the >20MB archive including the video, here’s the scan. ¬†The NFO file is below. ¬†The hand-written serial number on the bookmark is out of 64 they printed.



-- .. ::: .. --

Type Theory

 for @PARTY

nom de nom
 & Tymbeusz

Thanx Flourish

We printed @Party bookmarks on a c. 1895 letterpress with a 3" x 5"
 chaise: The Kelsey Excelsior. We used a well-known font, Goudy
 Old School. We did an edition of 1000000 bookmarks (in binary).
 The type was composed and set by hand, printed by hand, and the
 printed cards were cut into bookmark shape by hand.

Why no @ on the card? We didn't have that piece of type.


*You* choose your operating system!,31802.html via Slashdot.

The Windows 10 update reminder on older versions of Windows has started scheduling automatic installation of Windows 10 (!).¬† Keep an eye on the Control Panel to make sure you don’t lose the ability to choose your own OS.

Or switch to Linux ūüôā .

PS- whatever you do, please also raise a stink and let Microsoft know this is not acceptable behaviour.