Music of the Day

“Treason” by Gryphon, released in 1977.  I’ve just started the third consecutive play of this record, so I think it’s time to give it the recognition it deserves!  The opener, “Spring Song,” is fantastic.  “Flash in the Pantry” is light and enjoyable.  High-grade prog.


By the way, my thanks to the WordPress team for clearing out the spam-followers that have been popping up over the last several months.  I appreciate it!


How to delete all the animations in a PowerPoint presentation using VBA

Very useful! This answer is copied from here. I tried to archive it, but wasn’t able to save it for some reason. I am posting it here so it can be archived for posterity.

answerspleasee asked on October 19, 2010
 How to delete all the animations in a presentation

how do I delete all animations i have put on for the past 200 slides.


Shyam Pillai replied on October 19, 2010

You can turn off the animations by going to Setup Slide Show and under Show Options tick the Show without animation option and click OK. Now run the show and it will display without the animations.

If you really want to delete all the animations in a single sweep then you will need to run this macro.

Sub StripAllBuilds()
 Dim I As Integer: Dim J As Integer
 Dim oActivePres As Object
 Set oActivePres = ActivePresentation
 With oActivePres
 For I = 1 To .Slides.Count
 If val(Application.Version) < 10 Then
 ' Older versions of PowerPoint 97/2000
 ' In each slide set the animation property
 ' of the Shape object to FALSE
 For J = 1 To .Slides(I).Shapes.Count
 .Slides(I).Shapes(J).AnimationSettings.Animate = msoFalse
 Next J
 ' New versions support the Timeline object
 For J = .Slides(I).TimeLine.MainSequence.Count To 1 Step -1
 Next J
 End If
 Next I
 End With
 Set oActivePres = Nothing
End Sub

Regards, Shyam Pillai.
 Shyam Pillai


What are the Most Disliked Programming Languages? – Stack Overflow Blog

Should I be worried?  The three most-disliked programming languages in  Stack Overflow’s latest blog post are perl, delphi, and VBA.  And those three languages all have a special place in my heart.  Oops…

Perl I have been enjoying recently and VBA is most of my day-to-day coding (since what they actually pay me for is driving MS Office).  Delphi remains the only piece of software I have ever bought based on one marketing presentation.  After QBASIC, I moved up to Turbo Pascal 6.  When Delphi came out, I only had to see it on screen to be hooked.

Delphi is also what taught me that the magic in a toolchain is really the linker.  As I was learning C, I was able to write Windows programs using my DOS version of Turbo C++, linked with the Delphi linker.

Excerpts from Stack Overflow’s analysis follow.

Continue reading

Some bookmarklets

Edit: For the “welcome to Stack Overflow” bookmarklet, go to this jsFiddle, hit Run, and then drag the resulting link to your bookmarks bar.

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!

Can you iterate JavaScript object properties in insertion order?

Yes.  Yes, you can.  At least as of ES2015.  I found this out when working with the jstree contextmenu plugin.  That plugin receives an object with named keys for the items to show in the menu.  It assumes that jQuery’s $.each will traverse those items in the same order they were added to the object.  $.each boils down to a for-in loop.  Well, turns out that since ES2015, the for-in loop returns properties in a deterministic order!  As long as your keys are strings that can’t be parsed as integers, you will get them out in the same order they were added.

Useful links:

This relates to my new Google Chrome extension, TabFern, about which more news soon.  If you have lots of browser windows and tabs open, or want to manage multiple browsing sessions, TabFern may be just what you are looking for!