Giant machine with small man

I write these words. I take these pictures.

I am acting independently of my place of work and what I write here doesn’t reflect the thoughts, opinions or interests of anyone other than myself.

I work at Middlebury. That might impact what I write as they pay me.

I do consulting work at times. Groups I’ve worked for/with include –

  • Advanced Learning Partnerships
  • A number of higher ed organizations (UVA, Kansas State, UMW, Georgetown, ALT, Karlstads University, Colgate. . . some others)
  • A large number of k12 institutions
  • A few organizations/corporations (Apple, Dell, Discovery, ISTE, Reclaim Hosting)

Some of that has been paid work.

The Apple and Discovery work was travel/room/software etc. in return for participation in various things.

I’ve mostly opted out of that kind of work for the last few years.

One thought on “Disclaimer

  1. Tom,
    Your post of Google Script to Copy Row Above to Blank Row Below has helped me, although I have hit a snag where the script times out!

    This is how I changed it to work on just column 1 and to start at row 2 because row i-1 was invalid.

    function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();
    var last = sheet.getLastRow();//how many times should I do this?

    for (i = 2; i < last; i++) { // This must be changed each time it times out.
    var test = sheet.getRange(i, 1,1,1);
    //looks to see if the cell is empty
    if (test.isBlank()) {
    var rewind = sheet.getRange(i-1, 1, 1, 1).getValues();//gets values from the row above
    sheet.getRange(i, 1, 1, 1).setValues(rewind);//sets the current range to the row above


Leave a Reply