Friday, November 29, 2013

More thoughts on automation

As I sat in the allergy office and watched the nurse enter data into my record, I immediately realized another use for autocrat in my daily work. Any time a task is repeated in the same way, I should be able to get a machine to do it. The trick is getting the information into a format the machine can use and then into a format the humans can make sense of. I might have solved half of those problems while waiting for the doctor to come.

In my job we give formal academic testing to each student every third year. There are a number of different sub-tests and even different main tests that the district likes to use. All of the tests and scoring programs I've used will spit out an electronic report in either (or both) a Word document or a rich text file (that's the .rtf extension).  I need to learn how to get a machine to parse through the text file, convert the standard scores from tab delimited text into spreadsheet data, and then run an autocrat-style mail-merge into the generic report template.  The spreadsheet could also talk to a student data information system (info dumped from SEIS?) and use the student's unique ID number to look up gender and then put in the correct gender pronoun in the tedious parts of the report--replacing the "his" for "her" is always difficult or at least time consuming.

I would leave the summary and recommendations up to the report writer, so the final document that the computer spits out cannot yet be a pdf.  Autocrat can handle that, however.

I think this would be a highly useful tool for case managers who are interested.  One benefit is that not everyone has to use this system if they don't want to.  Also, it should be quick and easy (relatively) to set up and get working now that I know a little of what I'm doing with the scripts.  The first step might be the hardest for me--making the computer parse a text document and convert.

This little project will be on the back burner until around March 2014, I think, due to some meetings coming up . . .

Friday, November 22, 2013

Streamline the Paperwork to Save the Sanity of the Case Manager

My department chair asked a while ago for info on data collection using google forms.  I presume she has gotten pretty far in the process and that the data has started pouring in since the question today was how to display the results.  I have put up some screen shots below of how and where to click to get the automatic version of data summary that google provides for free.  Anything much beyond that will require a little more spreadsheet wizardry.  I'm getting out my robe and wizard hat now.

First, I'll show you how to create a form and then it will make more sense how to get information out of the response spreadsheet.

First, in your Drive account, click on "Create" and then "Form":
Simple enough.  Google will ask you to title the form and then you can create some questions.  There are some awesome tutorial videos on how best to use each type of google form question. +Melissa Hero has some good ideas if none spring to mind. (But then, if you had no ideas for how to apply these tools, you wouldn't be looking around for tutorials.)

Next, put in your questions.  You can also add in data validation, and many other neat tricks, no computer programming class required.

You can make questions that work from check boxes or drop down menus or radio buttons or large text boxes and many other types (e.g. date and/or time; although, the date and time questions display all funky when you pull them out of spreadsheets since it's stored as a time code of some sort so computers will read all the way down to the millisecond).



Google will automatically create a spreadsheet to collect all the responses.  Each column header is named for a question you created.  The far left column will always be a timestamp when the "submit" button was clicked.  This is useful as a paper trail.  I also learned a little trick to add a unique ID down one column.
The formula is this:
=arrayformula(Row(B:B))

I use the B column since Google steals the A column for the timestamp and the left hand column is the normal spot for a Key ID in (for example) a database.  With the arrayformula down the whole column, I can later look up any row of response data I want.  It's very neat.

Back to the summary of data!
You can get to the summary from the responses spreadsheet by clicking on Form menu and then Show Summary of Responses.




Alternatively, you can get to the summaries from the form itself (in edit mode, not the live form that users see) by clicking on Responses, then Summary of responses.








I put in some fake sample data:

Here is what the responses look like for my fake data:
That was cool.  I hope that helped and was actually what I was asked for.

Now for some real wizardry.  We have the technology, we can rebuild him, stronger, faster than before!
Using two google forms (one for Special Ed case managers and one for Gen Ed teachers to post feedback), we can replace the current paper system of giving and receiving IEP feedback.  That's not accurate, all mine are electronic right now.  I'm just using MS Office docs with forms to fill out which is only cumbersome when new versions of the software comes out and half the staff can not upgrade (public school budgets, etc.).

With a different revision of the current feedback system, I would insert a link into my MS Outlook calendar invites that go out to Gen Ed teachers. Here is the link to the sample email headed to Gen Ed teachers to invite them to the meeting.  Please make comments on it. Remember, this email is automatically generated and filled with the correct meeting info etc., so I don't have to write 26 individual invites for my individual students times 6 teachers each.  Microsoft allows you to do the same thing.  There are a number of advantages to google so the department could debate which they'd like to use.  I'm honestly ok with either as long as the whole department is doing the same thing.  I love uniformity, I think it makes us look professional to parents and teachers and I think the Gen Ed staff appreciates when we have our systems in place smoothly.  (Our current system is really good at VHS, I want to shed as much paper as possible and the little timestamp feature when Gen Ed teachers click submit is a nice perk!)

After teachers get that email, they click the link to the feedback form that would create the final pdf attached to the IEP in the computer.  Here's a sample feedback form.

There are many other uses for this type of functionality in a school system.

Tuesday, November 12, 2013

Thankful for a Great Day

I had a great day teaching last week and I have to share it.  This was one of those days when the students start off not getting it and each attempt you make falls flat on the floor two feet in front of you.


This is not the whole context, though.  I did have a pretty successful day for my first two classes with few interruptions, some learning, but little to write home about either.  My co-teach class is always more lively and fun--I'm trying to steal some ideas, I swear! But what made it a great teaching day was my 6th period Algebra 1 class.  Usually a challenging time for students to learn Algebra.
This day last week, my lesson presentation was falling pretty flat.  At one point, I reversed direction and taught a completely opposite method to solve the same type of problems and two of my students light bulbs went on.  They got excited and rushed through the rest of the classwork I had posted on the board.
It was a good feeling and one of the main reasons I love teaching.

Monday, November 11, 2013

A Week to Save 20 Minutes!

So, I have responded to feedback regarding my auto emailer (posted about earlier) by adding 4 lines of code that will automatically pull column headers from my spreadsheet.  First the code and then an explanation of what it does:

var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var headers = sheet.getSheetValues(1,1,1,-1);
  var Properties = headers[0]

Since I'm new at this Javascript thing, it's highly possible that most people could accomplish the same thing with a shorter amount of code.  Also, I'm not even sure I need the first two lines.  If I understand it (doubtful), the first line gets the active sheet--my sheet, but it could be any sheet that the code is attached to, so now I can transport the code.  The second line gets the first sheet (the little tabs at the bottom of the spreadsheet, this is the difference between a "workbook" and a "sheet" in excel)--so just in case I have content on the second sheet, my script won't get confused.  The third line makes a two dimensional array object (I'm sure that's not the right term) with content starting from the 1st row, 1st column, 1 row deep, and all the way to the last column with content ( the -1 argument says "find the last column with content).  Because it's a nested array, I had to pull out the header content by setting Properties equal to the first element of the array.

In the previous version you'll notice that I had hand-written the elements in the Properties array.  What that meant was if I changed my headers on the spreadsheet--or really, the question titles on the google form that populates the spreadsheet--my script would still send an email with the original headers.  I would have to change them all by hand.  My new code makes the script pull the headers each time automatically, so if I change them between emails, it will automatically be correct on the next email.

This became necessary when my product tester requested some new data be collected with the form.  I'm too lazy to rewrite that long list of headers (I currently have like 25 on the live form!), so instead of spending 20 minutes retyping a list, I spent the better part of a week on w3schools and google script tutorials and other javascript sites learning what I needed.  "A week to save 20 minutes!" you say, but it was a week to save a 20 minutes that will with certainty be repeated.  The unknown is how often and how many times I'll have to repeat it.

My next task will be to make the same type of change for the if, then statement that currently has a "k < 12" parameter in it.  The 12 could easily turn into 13 if I change my questions again and I want the script to know when to cut off the data table in my email.

Friday, November 1, 2013

Behavior Data Collection

Well, the revolution has begun.  Quietly and a few teachers at a time.  I sent out a behavior tracking form (Google Form) for a student's Behavior Contract by using a shortened link from goo.gl . All of the teachers used the link on the first day to track behavior.  Not a single teacher asked for the paper form (I also offered that in case someone did not want to use the link).  It could have been a combination of the particular teachers this student has (they're more willing to use tech?) and/or the particular behaviors we're tracking (they're affecting grades in your class: use my form to get more support!).  I'm anxious to see if the participation level continues.

One neat thing is that I was able to provide instant feedback for the whole day to my school psych who is about to be a Google convert.

Another small move in the right direction was that another teacher and I in the department have made a de facto policy shift that should simplify everyone's lives and paperwork in the long run.  We, due to some rare moon alignment of circumstances, have the ability this semester to make a specific change to just under half of the students we serve.  This will be enough of a start that our co-workers will judge for themselves how effective the change is.

Sadly, I can't share my google form results publicly due to confidentiality.  When I get a chance, I will take a screen shot of the summary of results and scrub the names.
I hope that in the future we can use automatic methods for a big portion of our case management and data collection.

Thursday, October 24, 2013

Creating an Automatic Emailer from a Form Submission

I'm very happy that I could impress myself and solve a little problem at the same time: Raising two kids requires large amounts of communication and more time than is in the day.  I put together a little Google Apps Script (taken mostly from tutorials and Codecademy.com) that will save me time and allow some speedy communication of important kid-facts.
The problem was simple and solvable in several low-tech ways--some less clunky than others--however, this high-tech method is transferrable to education (hence my post on this blog).

I believe I could have used something like the autocrat script to get the same result.  But the way I did it allowed me to learn some javascript code.

Here's the original problem: I have two kids, so I look after one in the morning and my wife looks after the other.  She needs to know what I took care of in the morning and at night with that kid so nothing important gets missed each day.  This is pretty complex depending on how sick or fussy or tired each child (and each parent!) is that day.  Asking single questions for each topic took up too much time.

I solved this using a google form, reachable from my phone, and a script that emails both my wife and I when I submit the form.  The email displays a simple table with information on what I did with our child that day.

Below I've attached the code. If anyone knows how to pull the headers off of a Google Sheet and turn them into an array in javascript, that would be useful (in the "Properties" variable in line 5).

This can be used in education very simply if you have a tracking form that students fill out, it can email the whole team and/or mom and dad to inform how often a student is submitting the form.  For example, if they are coming in for after school tutoring and you need to track and document that.  I can see some ways to use this type of thing for back to school night with parent meeting requests as well.  Another functionality that Google allows is to trigger the script (i.e. send the email) on a time trigger (e.g. once a day) or on edit if the spreadsheet is edited.  This could be useful for collaborative writing projects in an English class or as a summary email for a project where you are tracking some kind of form-submitted data.  Basically, anything you used paper for 15 years ago you could collect frequency data on and get an email.  I could think of how to use this type of script in a small business as well.

Autocrat is, of course, a much more robust script that could be used more flexibly.  With this project, I was able to customize it for my uses and pick fancy colors for my email, etc.  Someone with more time than me (i.e. the website club at school) could expand this short code easily and add in some graphics to support the school. That would make a pretty neat looking response email.


Here's the code:
//Thanks to this code: https://gist.github.com/anonymous/4960553
function OnSubmit(e) {
 
  var ownEmail = "your@email.com"
  var NewSubmission = {}
  var Properties = ["DateTime","Time of Day","Data1","Data2","Data3","Data4","etc."];

  for(var i in Properties){
    NewSubmission[Properties[i]] = e.values[i];
  }

  var table = "<table style=\"border:2px solid black;width:500\"><thead><tr><th colspan=\"2\">What did I do today?</th></tr></thead><tbody>";
  var j = 0;
  for(var Properties in NewSubmission){
    j=j+1;
    if (j % 2 == 0) {
      table += "<tr  style='background-color:orange'><td>" + Properties + "</td><td>" + NewSubmission[Properties] + "</td><tr>";
    } else {
      table += "<tr style='background-color:black'><td style='color:white'>" + Properties + "</td><td style='color:white'>" + NewSubmission[Properties] + "</td><tr>";
    }
  }
  table += "</tbody></table>"
  var emailText = "Oh hey there!" + "<br/>" + "Here's what we did this " + NewSubmission["Time of Day"] + ":" + "<br/>" + table + "<br/>" + "<br/>Love from FormBot"
  var advancedArgs = {htmlBody:emailText};
  MailApp.sendEmail(ownEmail, "Daily Digest",
                  "",advancedArgs);
  MailApp.sendEmail("another@email.com", "Daily Digest",
                  "",advancedArgs);
}


Monday, August 26, 2013

What I Did on My Summer Vacation

My time this summer was productive and exciting.  Aside from exploring with my 2 year old son and bouncing my baby daughter around in the back yard, I have managed to get a little work done this summer as well.  This summer for me and my family has centered around food, swimming, and a little bit of professional development.  I owe a big thank you to my lovely wife for taking on the two children while I went to a 3-day long mid-week conference.

Computer Using Educators is a group of teachers who find awesome new ways to use technology in their lessons that make sense for the content and the lesson.  For example, on presenter showed us how he has his history students compose scripts for "news reports from history" and then quickly and easily films them and publishes them within a day.  The students can do most of the work, or just the history side of things, depending on how much tech you want the kids to touch during the lesson (or how much control you want the teacher to have).  I have linked to some of his videos in the posts below:

CUE Conference Day 1
CUE Conference Day 2
CUE Conference Day 3
My Class Website -- thanks to the CUE presenters for showing me some tricks!
Here's a link to my syllabus and,
a link to the rules and first assignments.
On my own, I started some coding at Codecademy (I mostly learned HTML5 and JavaScript). This blog background is Cascading Style Sheets that I learned at Codecademy.  Sadly, my class website and blog have very little on them right now, and may not during this first semester while I get things figured out at my new position.
A beginning programming assignment.

Wednesday, August 7, 2013

Raspberry Pi

Quote:

Will it fit in an Altoids tin?

What is Raspberry Pi?
I had to look it up since I had only heard the name in passing and didn't quite remember the context.

Raspberry Pi is a computer the size of a credit card (and almost as cheap!).  It's made to use in education and will do most basic tasks like word processing and spreadsheets and some graphics. It runs at 300MHz (Pentium 2) but can be overclocked to 800.  For $40, were you expecting alienware?

It's made to run Linux booting off of an SD card, but once it's booted you can run off of an external USB drive. So the possibility is to get a huge solid state drive (large capacity, not large size) and put whatever OS and software you need.  I wonder if I could just get Chrome on there for the google apps?

Here's the link to the FAQ page I read.  All those extra possibilities are what would kick the price up, but still not a huge price tag, especially if you hook it to the TV through the onboard HDMI port.

Thanks to @alicekeeler for the tweet on the sweet deal.  I think I might pick one up just to see how it works and how well it works.  I kind of wish +Ken Daniels and I had seen this a year ago when we were budgeting for computers.

This reminds me of building Heath kit radios on the porch with my dad.  This also reminds me of building my own computers in college.  I managed to build one for $400 and it lasted all the way to 2004!  I bet I could beat that price (and probably the age) with the Raspberry Pi.

It seems like there's an endless variety of ways to customize this computer.  There are different cases, you can add stuff using a USB port, people are adding mini keyboards, etc.

In my classroom, I could hook it up to the unused TV (I use the projector) and connect it to the wifi.  Although, I'm not sure if the IT people at school will let me hook it up to the network.

Finally, no, it does not appear to fit in the Altoids tin. :(  At least, not without specialized modification.

Update:
I just put together an amazon wish list of some items to build a neat little one, and it totaled well under $300, closer to 250, so possibly competitive with chromebook on price depending on how hard you shop for components.  I'm sure there are better deals out there on specific parts than Amazon offers.  I bet if I spent some time on it, I could squeak under 200 and still have some good functionality.  Now just to learn how to program it and what it could be used for beyond word processing.

Saturday, August 3, 2013

Another Round of Room Preparations

More Cleanup

We went in to campus again on Friday to push around the furniture and finish cleaning the messy spots.  By lunch time, I had room 105 looking good enough to hold a class in--although I'd like to do some more work on the walls.  We could at least walk in tomorrow and start a class without too much distraction, which is a huge improvement to where I left it last time.  I also brought in my drill and moved some of the pegboards from wall to wall in order to make more space for a larger white board.  After lunch I went to the local hardware store and picked up an 8' by 4' piece of thin plywood to turn into a whiteboard extension.  I just can't work with that small white board up front--I need more space to work problems and have students work, etc.  We ordered some rolls of the whiteboard paper to stick to the plywood and then mount on the front wall.  It may look slightly "low-cost" but it will at least allow me to post up the required things like objectives and standards.  Then I can use the "real" whiteboard for student work and examples everyday.

The pegboards still need paper and boarders.  That's on order and should arrive Monday.  We'll have an orange and black theme in the room.  I hope the students don't get too bored of seeing every teacher post the orange and black colors all over.

The next task on my list is to really get down to the details on my 12 Angry Men project idea.  I'm going to create a couple just to see where the potential snags are.  Of course, I don't want to take away too much of the fun from the students creating this project themselves.  No spoilers here, I'm going to keep this project a secret for a little while longer so I won't go into any details on it in this post.

Blog Focus

Speaking of this (and previous) blog posts, once school starts I want to use this blog primarily for student work so I'm looking at other teacher's sites and blogs to get some direction on this.  For now, however, you will see posts about the classroom and other posts focused on me.  This is not because I want to be stuck on myself--I do want to get into the habit of posting on a regular basis, so if there is no student work then I will post just to keep the habit up.  Also, if there is no student work, you should contact me and bug me about when I'm going to give the students their assignment for the blog. 

Thursday, August 1, 2013

Setting up the Room!

This is a room in progress:
Still messy, but getting closer to the final look.
East Wall
Here are some pics of what the room looked like in mid-build.  I went in to campus yesterday to clean a little and move the furniture around so it looked more like a classroom.  As you can see, it still has a long way to go.  It could use some additions to the walls, although I've made the desks look a lot nicer than these pictures show.  Also, I could use some butcher paper on the pegboards.  Following this time-consuming work, I need to go get the pacing guides and curriculum maps for English 10 and Algebra 1.  Hope to see some eager faces on August 15th!  


West Wall
We have a small space and I hope that the way I moved the bookshelves and cabinet around from the last teacher will open up the space, because I really don't like cramped rooms!
Definitely need more white board and some cords for the projector.
North Wall

This setup will be cozy, but there's a lot to work with and I've been promised a few student computers along the side there (West Wall).
I can't wait to get some bulletin boards up and start planning some lessons.
I'm really looking forward to this new year.

Monday, July 22, 2013

Notes to Self

Just a brief to do list for my class web site this month:


  • I need to create the blurb that goes with my Useful Links page on my class website. Also, I need to add some more useful links from my bookmark bar so there's a few in there to start.
  • I need to complete the course syllabuses for Alg 1 and Eng 10 
    • get the curriculum maps from the department chairs
  • Need to find the permission slips that are used in district for video recording classes (mostly for reflecting on my lessons, but there are a few projects I want to do that would require some student faces in front of the camera.)
    • upload that form to website (embed as a google form?)
One of my previous goals was to include pictures with this next blog post, so here's a couple:
First is a screen shot of some summer work I've been doing:
You'll see this again soon.
Next one is a shot of all the faculty in their Master's hoods as we walked out for commencement in June at my last school.


Saturday, July 20, 2013

Appointment Booking up and running, and other progress!

I have successfully fixed the appointment booking widget.  Turns out, I had clicked an option that required me to tell the calendar when I was free instead of automatically being free all the time.  So, the computer did exactly what I told it to do.  Pilot error and the problem of clicking fun buttons without knowing what they mean.  I probably learned faster that way.

I also made some improvements to the skeleton of my class website.  I had used the google sites template and it has a lot of moving parts that I just won't be using at first.  So I blanked a bunch out, and plan to blank out some more.  Also, I tried to put in all the relevant Vaca High info in the appropriate spots.  I included a Twitter button and a google voice widget for parents to call and leave a message.
I hope I can get my parents and students (the ones with access) to use the electronic tools.

The electronic tools are not an end unto themselves--selfishly, I want to use them because they will ease the documentation of communications and interventions in that half of my job.  Also: they're neat new tools.

Goal for next post:  2 pictures included.

Tuesday, July 16, 2013

Appointment booking.

http://mrhyland.youcanbook.me/
I'm still trying to get this to work.  Click the link and try it out for me.  I had it working for a second and then I changed the colors to orange and it quit working.