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 VCU. 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 . . . maybe some others I don’t recall)
  • A large number of k12 institutions
  • A few organizations/corporations (Apple, Dell, Discovery, ISTE)

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.

Comments on this post

  1. Jim Garner said on November 17, 2016 at 12:27 pm

    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

This site uses Akismet to reduce spam. Learn how your comment data is processed.