Posts

The role of the faculty in the post-LMS world (opinion)

However, working outside the LMS, well-trained instructors will be able to do far more than meet the minimal requirements for moving college courses online...

Source: The role of the faculty in the post-LMS world (opinion)

I don't work at a university, but we're in the process of moving teachers into using Canvas in our district, so this resonates. I see two groups of people:

  • those who already had material online and are struggling to work backwards (essentially) to fit items into Canvas.
  • those who have nothing online and are struggling to make sense of what works well digitally and what doesn't.

The LMS is a weird stepping stone. I've had materials online for years, so I don't like the constriction an LMS brings to what I've done in the past, but I _do_ appreciate the streamlined data I can grab from the system (I need to write more on using Outcomes in Canvas later...)

For the second group, it's a great intermediate step and I'm already seeing people look for more online on their own. They want to push the system now that they understand it more. They're seeing the benefit if using the Internet as a whole and not limiting their courses to the flow in Canvas.

Striking the balance between structure and variety is difficult. I'm not sure the LMS will ever completely go away, but I can see the influence waning as skills develop and alternatives becoming more accessible to teachers.

If We Don’t Allow A Redo, What Are We Teaching? – The Teacher And The Admins

Whatever the reason, he was afforded the opportunity to learn and apply. It hasn’t come easy, but that’s the point. Giving a chance to redo isn’t about being easy.

Source: If We Don’t Allow A Redo, What Are We Teaching? – The Teacher And The Admins

Still in my standards-based grading vein, this is inevitably the biggest sticking point for teachers I work with.

"What do you mean they can retake the test for full credit?"

Mentally, we can agree with the argument that redoing work or retaking tests makes sense in the scheme of student learning. The hold up, I find, is more with the work involved in making those opportunities reliable and valid more than the mental exercise of finding value in the habit.

There are ways to allow students to reassess work that does _not_ include sitting an exam again, which opens more possibilities for authentic learning and demonstration of mastery.

Fair Isn't Always Equal: Three Grading Practices to Avoid

Remember, though, that grades should not be used as rewards. Nor should they be used as affirmation, compensation, or validation. Grades should represent an honest report of evidence at this moment in time, nothing more. If we make them something more than that, we undermine the student’s maturation and any useful purpose for grading.

Source: Fair Isn't Always Equal: Three Grading Practices to Avoid

I'm working with several teachers on moving toward standards-based grading and we're starting to have conversations about grades themselves. I ask how they feel about zeroes, extra credit, completion, and makeup work. This article is a great primer and/or followup to those initial meetings.

Lesson Idea: Learning Objectives

Jessica Till asks a good question on Twitter:
[embed]https://twitter.com/JessicaTilli1/status/1044423084529389568[/embed]
and Graham's response stood out to me:
[embed]https://twitter.com/gfletchy/status/1044528699507449857[/embed]

Turning this around (also mentioned by [Will Dunn later in the thread](https://twitter.com/Willmdunn/status/1044592375526510593)), what would happen if we taught a lesson or went through an activity _without_ positing the objective and then have students state the learning as an exit ticket or closing discussion. What insight could we glean?

Intentions are important, but implementation is harder.

H/T to [Darren Burris](https://twitter.com/dgburris) and [Dan Meyer for showing up in my timeline](https://twitter.com/ddmeyer/status/1044426373425586176).

The Psychology of Classroom Discussions

I've never heard of the Asch Experiment, but this video is worth watching.

[embed]https://www.youtube.com/watch?v=qA-gbpt7Ts8[/embed]

[Kaplinsky's article](https://robertkaplinsky.com/psychology-classroom-discussions/) gives some good classroom ideas on how to avoid groupthink in student responses, even highlighting the Desmos teacher view to anonymize responses (which _also_ works [outside of math](https://blog.ohheybrian.com/2017/04/desmos-in-science/).

During student teaching, questioning was the first thing my training teacher worked on with me. I was prone to asking, "Who knows..." which left the door open to zero responses. Moving to direct questions, "What is...?" or "How does...?" removes escape. I also recall another great post (I can't find it now) about leaving uncomfortable silence after asking a question. Letting several hands go up in the air allows for discussion as you can call on more than the first student.

Mixing Kaplinsky's ideas with leaving room for responses is a great way to help students feel comfortable with replying, even if they disagree with others.

[Read the original article here](https://robertkaplinsky.com/psychology-classroom-discussions/).

Back to School

It's appropriate to write a back to school post nearly a month into the school year.

I took Twitter off my phone back in July in an effort to put my phone down more often. It had become too easy to lazily open and scroll when my interest waned. That bled into time with my kids, and that wasn't cool. I suppose I could have just "worked on my self control," but I'm more of a "pluck your eye out if it causes you to sin" kind of person. Cold turkey it was.

July bled into August which has raced into September. My phone is still Twitterless and I'm feeling more connected to my teachers and schools _here_. The social-edu world had eroded my sense of here-ness...I felt beckoned by people I've never met face to face. My desire to help and engage with the digital friends overrode the drive to get to know people here, now.

By extension, because I was online less, the blog has also cobwebbed up a little bit. I can't write volumes like [Alan](https://twitter.com/cogdog) but I don't want to lose steam here entirely. Finding a balance has been hard. I need to write for me.

The evolving role of coach has pushed me to talk less and listen more. I think that's why I haven't really missed being online. Wanting to write, up until this point, feels like more of a drive to not waste the space than to share insight. Or maybe it's more that sharing insight shouldn't be the driving factor of having space on the Internet. Hubris kills just as quickly as stagnation.

Now that we're back, I'm planning on listening a lot. I'll probably do some processing here, in prose, just because it'll help me work through my own habits and thinking patterns. But I plan on listening more than talking.

Twitter still won't be on my phone.

Reading Summaries

I've decided to fire up a new, static website to reflect on books I read this year. In all honesty, much of this is bring prompted by my grad school reading, but my reading list is also expanding for once classes are done and putting longer pieces together in response have helped.

Anyways, I have two up right now:

1. [Deep Learning](https://sum.ohheybrian.com/books/deep-learning.html) by Michael Fullan, Joanne Quinn, and Joanne McEachen
2. [Poor Students, Richer Teaching](https://sum.ohheybrian.com/books/poor-rich.html) by Eric Jensen.

All books will be listed on the homepage, [sum.ohheybrian.com](https://sum.ohheybrian.com).

Yes, Relationships Matter

I'm in some grad classes right now and in one, we were assigned to discuss, "Does building relationships with students _really_ matter?"

Prior to the discussion, we watched Rita Pierson's [TED talk](https://www.ted.com/talks/rita_pierson_every_kid_needs_a_champion) and read two articles: The _Post_ on differences between [white and black poverty](https://hyp.is/tOOsAGf1EeiQRJdH6VpqFw/www.washingtonpost.com/news/wonk/wp/2015/08/12/black-poverty-differs-from-white-poverty/) and a piece from mic.com on [white poverty in America](https://hyp.is/k63hemf3EeiJ0etMp3WFlA/mic.com/articles/59829/what-white-poverty-really-looks-like-in-america). (Both links are to annotated copies of the articles.)

My unedited response to the discussion thread is below.

---

I must admit, I've started and restarted this post several times this week.

Of course building relationships matters. If we neglect to build relationships, we are missing a fundamental aspect of teaching and learning. Regardless of culture, our species is reliant on relationships with other members. We are predisposed to bond with other people from birth through death. Teachers are in the unique position of spending more time with students than anyone besides their parents, which leads to relationships in some capacity.

Fostering positive relationships will help lead to emotional and mental stability that students, especially students of poverty, are often lacking. We get into dangerous territory when relationships become the only support mechanism for the poor instead of improved services and social programs. In the Post article, the plan to open affordable housing in wealthy neighborhoods is only hindered by the free market and social biases. There is nothing stopping housing developers from lowering rent other than their own bottom lines. Poverty can be combated with solid public education, but to really change the landscape of American poverty, we need larger social change.

The support offered by teachers is critical, but so is support from school counselors and social workers. Since those services are underfunded (or nonexistent in some schools) teachers are left to figure it out on their own. Recently, the 'grit' narrative has taken hold, which is can lead to less obvious, yet counterproductive, results. Jensen (2016) and Kidd (2013) note that most poor families work more than their wealthier counterparts, so teachers encouraging students to get through their issues with perseverance and a belief that they can do better with harder work perpetuate the misconception that the poor are lazy. Students already working hard will be reluctant to form genuine relationships because grit places the blame back on the student, not by recognizing root causes.

Building positive relationships takes more than goodwill and a focus on mindset. Seeing students as people with real needs and real challenges is critical. Recognizing that our life circumstances do not reflect many of our students' builds empathy and allows bonds to form.

---

_Featured image is [December, 2009](https://flickr.com/photos/bennettscience/6851194168 "December, 2009") flickr photo by [bennettscience](https://flickr.com/people/bennettscience) shared under a [Creative Commons (BY-NC-SA) license](https://creativecommons.org/licenses/by-nc-sa/2.0/)_

The Big Dig

Our septic system needed to be upgraded, so we took the hottest weekend of the year (so far) to do it. My wife's dad and brother spent the day with me on Saturday digging large trenches to bury leach chambers. We redid all the plumbing. We plowed a new, larger garden and cut down some nuisance trees.

I've also learned about navigating the permitting stages with the health department. Good news is that I'll never need to do this again.

Septic Field Repair

Killing Pico (and Micro)

Earlier this year, I wrote up a really bare-bones blogging system I called [Pico](https://blog.ohheybrian.com/2018/04/pico-a-tiny-blog/). It's a Python app that reads plaintext files and publishes them to a website.

Well, something in serverland changed and now they're not loading. My experience with server configuration is nil, so I'm going to proclaim those two sites dead. It makes me a little sad, but they were also just proof of concept.

[The code lives on GitHub](https://github.com/bennettscience/pico). If you're someone who likes to poke, give a poke over there.

---
_Featured image is [Cemetery](https://flickr.com/photos/hpeake/37430662781 "Cemetery") flickr photo by [Fenrir Wolfy](https://flickr.com/people/hpeake) shared under a [Creative Commons (BY-NC-ND) license](https://creativecommons.org/licenses/by-nc-nd/2.0/)_

Moving back to WordPress

You might not have noticed (or you might have...who knows) but this site is now back on WordPress. I had shifted to Jekyll back in December for the speed and security of static pages, but I ended up writing less, and I didn't like that. So, it's back to WordPress.

_Most_ pages should be working correctly. There will definitely be problems with embeds (images, etc) and I'll be working through those over the next several weeks (years?).

Post categories and tags are also messed up and I'll be reindexing those as well. The search bar on the right works, so stick to that if you're looking for something specific.

---

_Featured image [Monopoly](https://flickr.com/photos/randomwire/4219093814 "Monopoly") flickr photo by [randomwire](https://flickr.com/people/randomwire) shared under a [Creative Commons (BY-NC-SA) license](https://creativecommons.org/licenses/by-nc-sa/2.0/)_

Reflector

I wrote this as a post to a discussion forum for grad school. It seemed fitting to post on the blog as well. It’s a response to a children’s story called ‘The Rag Coat’, in which a poor girl’s coat made of rags tells stories about everyone around her.

I’m not really a journaler; I do blog regularly, but it usually isn’t about life stuff. But, I always have a notebook with me. It’s a habit I picked up from student teaching, mainly for doing quick reflections on lessons I taught or observations of my host teacher. She really helped me establish a habit of reflection that started with pen and paper. Every year since then, I usually go through a full notebook.

A stack of notebooks on a table

They’ve become unofficial journals; memories elucidated by lesson plan ideas, to-do lists, and trip packing lists. I can pinpoint the spot in a notebook from 2013 when we moved back to the United States from South Korea. I’m reminded about recommendation letters I wrote for students who are now out of college (and some with kids of their own!)

There’s the notebook where the writing switches abruptly from a large project brainstorm to HR managers after I lost a job unexpectedly.

There’s a notebook with baby nursery lists as we got ready for each of our daughters.

Writing things down - even little things - has become my norm. It helps me connect with teachers, who see me as the “tech guy,” when they wonder why I still have paper and pen on hand. It bridges gaps caused by fear and apprehension of change.

I’m looking forward to finishing this year’s notes.


Featured image is History flickr photo by bennettscience shared under a Creative Commons (BY) license

A Case for Better Course Design

Campus Technology published an article last week about a biomed course that saw mixed results from flipped instruction. The full article is open access (CC-BY 4.0) and available to read. I’ve read and annotated the original article and I’m going to distill a couple of points from bot the published report and the CT article.

The Report

The authors state right up front that there “were no statistically significant differences in examination scores or students’ assessment of the course between 2015 (traditional) and 2016 (flipped).” Campus Technology (and other publications) often latch on to the grade implications rather than qualitative student feedback on the efficacy of flipping. To the researchers’ credits, they do recognize higher retention and application as reported by students on self-reported feedback surveys.

The biggest red flag for me was in the definition of flipping. As Robert Talbert regularly points out, many research articles limit flipping to “video at home, discussion in class.” The article elaborated on the at home experience in the methods section. From the article,

Students were introduced to new material each week by completing assigned readings from textbooks and journal articles, then by watching recorded lectures given by faculty experts at MSPH on one of 10 core epidemiology topics. Next, students completed short online graded assessments of their understanding of the new concepts presented in these media based on the Just-in-Time Teaching (JiTT) pedagogy…

Students were also able to submit questions to instructors prior to the in-person meeting that would be addressed at the start of the session. The article also makes note that doctoral students and instructors would monitor questions via email or office hours in between in-person meetings.

So, students watched a lecture (no discussion on the format, length, or content of the lecture), read some articles, and then began to apply material in preparation for the lecture. More on this later.

Students reported confidence in their learning and ability to apply materials with a slight increase in the flipped (84.1%) vs traditional (80.6%) cohorts (non-statistically significant, however).

Campus Technology’s Interpretation

The opening sentence proclaims:

A study at Columbia University’s Mailman School of Public Health found that in a health science course following the flipped classroom model, there was no statistically significant differences in test scores or students’ assessments of their course, compared to a traditional lecture course.

They do not note that the study took place over two years (two different groups of students) but did report positive impacts due to freedom to watch lectures when they wanted to (improved flexibility). CT also included an insightful quote from one of the authors about the lack of time to process information in a traditional setting after a lecture (discussion was immediately after lecture in the traditional design) but that flipping doesn’t allow for “[direct engagement] with the lecturers”

The Bigger Picture

The research study and the ensuing report highlight two things for me:

  1. Grades are often the motivating factor when flipped classrooms are studied which limits discussion of student impact and,
  2. the perceived importance of course design is negligible when studies are conducted or reported.

Students reported a higher satisfaction with the class due to flexibility and because they felt more confidence in the material. Time to process information is important and they were better able to contribute to discussions after having time to think through the lecture. But, all the CT article focused on was the grade. It isn’t a secret that few practitioners (K-12 or higher ed) actually read the reports unless they’re actively planning their own study. There is a responsibility for news outlets and blogs to include gains beyond the final exam score.

How did students grow beyond the test? What improvements did instructors see in the cohort? These are important factors that should be included in followup interviews if not in the research report itself. The research did have the six instructors full out surveys, but they were not reported in the results with student feedback.

Secondly, course design is critical if we want to improve student performance. Several of the citations were quite old (early to mid 2000’s) and were in a similar vein, looking at student exam scores rather than course design and teaching methodology (granted, several of the cited articles were paywalled so I couldn’t do a full evaluation of each).

If we simply bottle courses and reverse the time of interaction, why would we have an expectation of student improvement on exams? This article shows that the course is consistent, if nothing else, with no change in student exam performance. How would it have changed if students had explored material before the lecture, as in Ramsey Musallam’s or Dan Meyer’s work? How would students have benefitted from interactive items at the beginning of the discussion period rather than a rehash of the lecture from the instructor?

While the research makes some interesting points, it is far from conclusive in its results on the efficacy of flipping. The authors make conciliations at the end, but we need to continue to push the discussion away from a particular technology solution and start by analyzing our instruction methods as the real turning point in student learning.


Featured image is Lecture Hall, Chairs flickr photo by Dustpuppy72 shared under a Creative Commons (BY-NC-ND) license

Pico: A Tiny Blog

More of my life is run in plain text. I don’t really use word processors any more (other than Google Docs for work) because they’re heavy and not really compatible across various devices. So, I’ve gotten in the habit of writing in a text editor (Atom, at the moment) and syncing across devices with Git or Dropbox, depending on the circumstances.

I’ve also been trying to do more with Python rather than relying on JavaScript. I don’t always have an Internet connection, and you don’t need a connection to be productive with Python.

The third element in this perfect storm was looking at my site access logs. I moved this blog to Jekyll back in December mainly because I was running out of hosting space with WordPress. I don’t really know how to do crazy database stuff like Alan or Tom, nor do I need to. I also saw a ton of failed login attempts on my WordPress site (thank goodness for strong passwords), so I decided to go databaseless with the switch. It’s hard to hack plain HTML.

This is what birthed the idea for Pico.

Pico is a tiny blogging engine written in Python that reads plaintext files.

Jekyll is great for complex site structure, but it requires the site to be regenerated (pagination updated, categories and tags indexed, etc) each time you publish a post. What if you want something smaller?

Pico is written in Flask, a templating engine written in Python. The core is similar to Jekyll: a script reads data somewhere and renders it in templated HTML. The main difference is that Pico does that when the page loads from straight text files rather than rendering the site beforehand. The idea is that you can write a post somewhere with minimal markup and frills and have the browser do most of the work. Styles are minimal and the source files are kept to a bare minimum. It even has RSS!

You can see a demo of the site if you’re curious and grab the source and see some of the technical information on GitHub.


DSC_0146 flickr photo by bennettscience shared under a Creative Commons (BY-NC-SA) license

Mugs

Every Friday, our local NPR station has a segment called Michiana Chronicles which features essays by area writers. I don’t catch it often, but I happened to be driving today when it came on. It’s titled Mug Storiesand it inspired this post.

I definitely have my own preferred mugs. I usually look for the wide-mouthed blue mug that we got in the Korean equivalent of a dollar store. I bought it because I needed something for coffee in my first teaching position. We were 24, transplanted to the center of Seoul and learning how to build a life together. That was the same year I bought my wife the wide, hand-thrown mug with a violet painted on it from 인사동.

Our overseas mugs aren’t limited to Korean origin. We also have a nice heavy vessel from Austria adorned with Schladminger that my wife obtained while studying overseas during college. We’ve both been to Austria, though separately. I’d be okay going back some day with her.

(This photo is from Bavaria in Germany, but Austria is just past those mountains, so I’m going to count it.)

This is technically from Germany, but Austria is just past those mountains

IMG_3854 flickr photo by bennettscience shared under a Creative Commons (BY-NC-SA) license

We had a smaller mug from Thailand from our trip during Christmas in 2010. It was brown with a white glaze ring around the top and a mosaic-like pattern on the white. It was delicate and made the 7,000 mile trip home fine only to have the handle broken in our dishwasher one afternoon.

The Thailand mug before it broke.

Bottom of the cup. flickr photo by bennettscience shared under a Creative Commons (BY) license

Some of our mugs come out more frequently in particular seasons. We were gifted two mugs from a local potter as wedding gifts. We got to go to meet Peter the Potter in his workshop and pick out two hand-thrown pieces. One still survives today, nearly 10 years later (the other developed a hairline crack and it started leaking). We were married in the spring but the burnt orange and earth colors of the glaze make me reach for it more in the fall as we hunker down for the cold winters.

Other mugs don’t come out enough. It’s a reminder that we need to have people in the house…enough to use the mugs that don’t get used regularly. They’re just as good as others, but for one reason or another, they’re relegated to guests only. We ended up hosting Easter dinner this year. Family and friends came over for a meal and all of our mugs were in the dishwasher that night.


Featured image Full House Cafe flickr photo by pheezy shared under a Creative Commons (BY) license

Event Manager Web App

Adding to the list of things to blog so I don’t forget about them in the future, I built an event manager web app for prom.

Sales

Writing data to/from a spreadsheet through a webapp is faster and easier on the sales team than having them edit a spreadsheet directly. Names are pulled by matching ID numbers in a lookup database and populated in the form automatically.

When a ticket is sold, the name is added to a running list on the right side. The app also ensures no students purchase tickets more than once by comparing current sales with the submitted ID number and returns an error if the person already exists in the sales record.

image1

Manager

Students are checked into and out of the event by the door staff. A full list is returned to the app that can then be filtered by ID number by the staff. Clicking on a number populates a card showing the student information for verification. They can then be timestamped into and out of the event by the staff.

This worked well because each of our students has a unique six-digit ID number we can use to look up their information. It could be quickly repurposed to assign an ID number at registration rather than assign a name and have the manager page function the same.

Full code for the project is on this GitHub Gist.


Featurend image: Conference Queue flickr photo by Bearfaced shared under a Creative Commons (BY-NC-ND) license

Reclaiming Jekyll

In December, I moved off of WordPress to Jekyll. This is easy to do with GitHub Pages, but I wanted to self-host because keeping a SSL certificate was important to me. I followed Tim Owen’s sample had everything up and working well.

I faced two specific challenges, though.

  1. FTP and SSH uploads were blocked in several places where I normally work. That meant I needed to remember which files needed to be uploaded via cPanel every time I wanted to publish a post. I would often forget an image or have a broken link, which meant regenerating the entire site.
  2. Because SSH was blocked, I had to use a cron job to publish the post. I would set one up to run every 5 minutes while I was working to make sure the changes were correct. Then, I would delete the cron job.

The bigger issue was that building on the server duplicated the site files. So, I’d have a folder of all of my posts and assets (images, styles, etc) that would get copied into the live site. Instead of shrinking my server footprint, it was doubled. No good.

My next idea was to use git, which is preinstalled on Reclaim shared hosting (which is awesome), to manage all of my files. But, I ran into the SSH problem again (HTTPS doesn’t work out of the box with git and setting it up is a headache). I also had problems tying the folder to the Reclaim location for some reason. So, that idea was out.

I continued to think about the problem and I finally landed on it: I wanted to keep all of my files on Reclaim when I really only needed the _site directory. I can build it on my computer and then publish only the live components.

This introduced another problem: it’s more complicated than just uploading the new post. The _site directory is changed and paginated with each build, so all of the relative links have the potential to change. How would I limit my upload to the site directory without needed to build on the server?

It turns out that you can pull single directories from a GitHub repo online. The key is only checking out the directory you want. Instead of using git pull to fetch and merge everything, you break it down into several steps.

  1. Set up an empty repository using git init.
  2. Assign a remote repo via url using git remote add. So, mine is called nodes-site and maps to https://github.com/bennettscience/nodes.git.
  3. Fetch the entire project with git fetch nodes-site. This finds and maps the entire project to git but doesn’t actually add any files yet.
  4. Check out a single folder with git checkout nodes-site/master -- _site. This creates a read-only directory!

I don’t need to write any files on the server…I do all of that on the computer. This step just grabs what’s been published to the Github repo and displays it as a live page on blog.ohheybrian.com.

Here’s my new process:

  1. Write and build the site on the computer. It runs faster, no need for the Internet.
  2. Use git to track all of the changes and push it up to GitHub. All of the files are public already through the blog, so I don’t care that it’s available publicly there, too. In fact, it serves as a nice backup in case I really bork something up.
  3. Write the steps above as a cron job to pull the _site directory in a couple times per day. If nothing changes, no new files are copied over. If there’s been a new post, that’s reflected in Git and the entire directory restructures with the changes.

My original folder (with everything) came in around 300MB. The new folder, with only the published material, is about 180MB. So, I saved 50% of my disk space by publishing only the live pages.


This StackOverflow post got me moving in the right direction.

Featured image: Allen-Bradley Clock Tower flickr photo by kallao shared under a Creative Commons (BY-NC-ND) license

Dynamic Data Validation with Apps Script

My coworker, Kat, needed to set up meetings with our 13 elementary schools. Appointment slots would have been a lot of clicking back and forth on calendar events plus her dates were variable and subject to change. She set up a spreadsheet with each school on a row. The challenge was to set up data validation rules that would automatically update after a school made a selection.

cracks knuckles

The first thing to do was to list out all the possible dates. Updating a spreadsheet is easier than changing a validation object in Apps Script. I can also loop the sheet and make structural adjustments on the fly.

Once that list was done, we wrote a function to set validation on the sheet using the date.

Now that validation is set, we needed to listen for changes to the spreadsheet. The onOpen function has an event object which holds information about where and how the sheet was edited. This let us limit the function to changes in columns two or three only. If a cell was edited (ie the validation dropdown was changed by the user) the function gathers event data and passes it along to the workhorse.

Now we can update the validation range. Loop through the entire range of dates backwards. Once a matching row is found, delete the row. Looping backwards prevents your index from changing. We also remove validation from the edited cell at this point so it doesn’t show an error for having a value outside the validation list.

Because validation is pulled from a range, deleting the row (and the value) removes it as an option in all of the other cells! Once the sheet is finished and everyone has a date, you could even add a short loop to push dates to your Google calendar as all day events.

Here’s the full script if you want to add it to your sheet.

Comments

Ali

Very nice article, I’ve really enjoyed reading it. Dear, is it possible to set validation rules in Google forms for short text question type by mathematical logical equation e.g. Input should satisfy input % 2 ==0

Brian Bennett

No, you can’t use logic operations in form validation. The closest would be to use a regular expression (which you can do) to check for a valid input. If you want logic expressions, you’d have to either validate on the sheet and conditional format or host a web app form that saves data to a Google Sheet. Martin Hawksey has a blog post on a simple implementation.

Ali

Thanks sir for your prompt reply, I do agree with you that validation using regular expressions (regex) provide great way to do several rules that would be otherwise nearly impossible using the other available predefined rules. Despite that the given example above (input % 2 == 0) can be easily validated using regex, someone may sometimes need to validate using some logic by formulas similar to what can be done easily in Google sheets. Also using Google apps scripts (GAS) wouldn’t help as validation script methods provided by Google for forms makes also impossible to deviate from the above preset rules. I really appreciate your help for providing your suggested post, and if available please provide other basic sources of information for work-around tricks.

Mehul Gandhi

Hello Can you help me out for the below case?

I am working on one google sheet, where I have applied data validation on date (i.e. user (i.e. to whom I have shared the file) can enter / select only today’s / current date for data entry.)

Now the case is, sometime due to some reason, user was not able to do entry on same day, so I (i.e. Owner / admin of file) can violate that data validation criteria and can enter / select previous date.

I want app script for same.

Brian Bennett

When you set the validation, there are options in the object to either reject the change or to show a warning. In the script linked, change line 8 of

setValidation.gs
to:

let validation = SpreadsheetApp.newDataValidation().requireValueInRange(rules).setAllowInvalid(true).build();

Setting

setAllowInvalid
to true allows an invalid input, false disallows the input. As far as I know, there is no way to allow a single user to follow one rule and another use follow others. You could achieve the same without using data validation by checking the onEdit object trigger and seeing who made the change before accepting/rejecting the edit.

Nests

how to fetch data validation in different spreadsheet

Goolge Apps Script Knowledgebase Suite

This is another entry into the “fun, but probably not feasible” folder.

A colleague and I have been trying to show the importance of getting a knowledgebase set up for our teachers. It’s been a back-burner issue for a long time because:

There’s a little bit of hyperbole there, but in essence, it would be nice, but not now.

Google released Hangouts Chat for GSuite users. The main reason was to compete with enterprise chat apps like Slack (but you won’t hear Google saying that directly). Hangouts Chat allows you to set up discussions with teams that are threaded based on rooms. They’ve also added an automation API so users can find, or write, bots to discussions. I got Chat turned on for our domain just to see what it was like. I was able to use Google’s code lab guide to get a simple bot up and running. It pulled open tasks for a user from our project management suite and I was able to use existing code to get the data into the bot. In all, it took me about two hours to have a working prototype.

I decided to build a helpdesk chat bot which could pull answers to common technical problems our teachers face. That ballooned into a web app to pair with the bot because…why not.

Apps Script Knowledgebase

I’ll go through some of the code, but all of it is on GitHub. It’s written in Apps Script because again, a lot of the code was preexisting so I didn’t have to start from scratch. Most of it is modified from standalone functions I have running in separate functions on other sheets. The real challenge in this task was to wrangle the user input into something usable by the script.

The database

First things first - we needed a database. I threw together a spreadsheet with several data fields that hold different types of information. I started with our platforms as a high level filter and then added some tags. The user can search for all platform-related entries or narrow them down with keyword tags.

Screenshot of the database sheet
click for a larger view

There are two additional sheets to the template: one to authenticate users and one to build a list of district platforms. Authenticated users have a button to add new articles into the database from the web app (see below). Editing a really big spreadsheet, especially when typing multi-line, HTML formatted entries, gets really cumbersome, so I wanted a way to do that through the website. Additionally, standardizing the platform options helps the user narrow searches right from the start so they can find information quickly.

The bot

Setting up the bot is covered by Google’s Code Lab, so I’m not going into detail here. The main piece of the bot is that it listens for a mention by a user, finds the information, and returns a card-formatted response.

Screenshot of a card returned to a user's question

Our thinking for this app is that someone wants a quick video on how to do something, so only videos are returned. The main challenge is getting meaningful information from the user mention in order to match database entries.

The regular expression looks for any of the keywords mentioned by the user in a string. This was easier than trying to match array values and provides consistent results. Right now, a user can send simple requests like “Google” or “Canvas” to get general results. They can also include some refining search terms, like “Google gmail” or “Canvas assignment” to narrow searches down. If there are no videos that match the search, they’re pushed over to the web app which has articles that do not include video results. More work could be done to refine how the script processes user input to improve the experience.

The script takes the string an creates a regular expression which is then used to match a string built from columns one and two of the spreadsheet. If a result is matched, the YouTube URL is returned in an array.

Once the YouTube videos are grabbed from the sheet, they’re broken into video ID strings and put through the YouTube API to get the video title and thumbnail. The bot builds a card to return to the user with suggested videos. If there aren’t any videos available, the user is given a link to the web app where they can find written articles on their topic.

The web app

We also threw together a web app to display information that isn’t in video form. The idea being that these are longer articles that have step-by-step instructions and are meant to be used in conjunction with the chat application. Lookup can be done by either passing query parameters in the URL to the app or using the sidebar form to search for keywords within a given topic.

Web app view of the knowledgebase
click for a larger view

Web apps also allow you to append queries to the published URL out of the box. If a query string is included, the app creates an object that can be passed through your script functions to build a display from a template dynamically. For instance, navigating to

https://script.google.com/.../exec?platform=ios&tags=airplay

takes you to this:

Web app loaded from a URL parameter string
click for a larger view

When a video isn’t returned, we’ll pass back the user string to jump right to relevant answers.

Challenges

Writing logic to manipulate and understand user input that can vary wildly is very difficult. I’m relying on simple prompts (platform + search keys) to help return a video on every search. As the database grows, results will also improve. I’d like to spend more time refining the bot script to better process and use the chat messages. The regular expression approach is pretty brute-strength, but it works for most searches.

A bigger problem I discovered is that hosting a web app and a bot in the same script file causes things to break. Google makes it easy to deploy a bot from an Apps Script project. Hosting a web app is also quite easy and uses a similar ID string. What I think happens is that those ID numbers are conflicted when both are hosted from the same project. The bot’s onMessage listener wouldn’t register an event with a web app published. One solution is to host the bot in an unbound script that points to the same spreadsheet via the key. Another (probably better, in the long run) solution would be to write a web view that is hosted on a school server and access the Google Apps Script API to display database queries. More on that in this long demo.


In the knowledge economy, we need a Netflix of education - TechCrunch flickr photo by DigitalMajority shared under a Creative Commons (BY-NC-SA) license

Planning a Flipped Unit Part 4

Now it’s down to the What of your unit. Standards have been identified and selected, themes established, and your main mechanism for assessment has been designed to check what students know and can do at the conclusion of the unit.

/assets/img/modcircle.png

The center of the Golden Circle isn’t the most important. It’s the component that fits within each of the larger rings. The What of your lessons should drive students toward successful completion of the assessment mechanism which, in turn, shows you what the students have learned of the identified standards.

The What is hard to specify, because the variety of activity in a flipped environment depends on individual student needs. Using the 5E structure helped me plan meaningful and varied activities all within the large scope of the unit.

If you’re not familiar with 5E, here’s a breakdown:

  1. Engage
  2. Explore
  3. Explain
  4. Elaborate
  5. Evaluate

I bolded Engage and Explain because it’s where I focused much of my effort in early unit planning.

Engage

It’s easy for me to stand up front and teach a topic. I can communicate ideas clearly and succinctly and ask students to demonstrate understanding with a variety of mechanisms. But, that sucks the joy out of learning something new (not that all students will love chemistry, but you get the idea). Ramsey Musallam and Dan Meyer are two really smart people I found early in this transition who helped frame my view of the engage portion.

Ramsey’s Explore-Flip-Apply structure fit well with my goals. Science is the practice of observation and I wasn’t great at getting students to observe phenomena. Use EFA at times, I was able to both engage the students in an interesting question and push them to draw conclusions based on lab experience.

Dan has pioneered 3 Act Math approach, which works to drive student inquisitiveness as a carrier for math instruction. I took his advice about practicing capturing perplexing things and started trying to photograph or film things that would be useful for engaging my students. (The previous link is a video about halfway through Dan’s 2014 CUE keynote. I recommend watching the entire presentation if you can find the time.)

This is hard to do, mainly because what I find engaging might not be engaging to students at all. Expect to swing for the fences and miss with some. As you hone your units, your engage activities will improve.

Explain

After exploring an idea, there will inevitably be misconceptions which need to be corrected. This is the Flip in Ramsey’s Explore-Flip-Apply. I can assess and gather information about student understanding as they explore and then I can use the power of a camera and a short video to instruct where students need the intervention.

If you’ve been flipping for a while, you know where students struggle. You probably already have a library of support videos you can filter into the unit. This also helps you identify gaps in your own instruction! Pay attention to what material students need additional help with and continue to build those resources out. Structuring your unit (not just a lesson) this way will also help you target which lessons are the most important, and that’s what students do. You don’t have to assign everything every year because the goals of the unit stay the same while student understanding changes year to year or class to class.

More on 5E

Each step in the 5E structure were not prepared for every single day of every single unit. Some components were easier to run across several days (or even weeks) because of low overhead (no prep, etc). Others were limited to specific dates and times. This is particularly important in a science classroom because of lab availability and safety considerations. Giving students choice in how they tackle a particular activity does not mean carte blanche. Specific constructs and limitations are acceptable.

Without repeating the linked 5E article above, Elaboration focuses on connecting to other ideas rather than staying within the immediate context. This is a great place to spiral back to previous units or to build anticipation for future units. It forces you to continue to consider the connections at the standards level rather than looking 24 hours in the future. Not only are your units more powerful, but your course as a whole takes on a larger internal support structure.

Final Thoughts

Much of this is written from secondary math/science perspective because that’s my experience. If you’re not in the same context, pay attention to the support structures rather than the individual examples. How are your standards mapped out? Have you mapped them out? Start large and work down to the day to day. This ensures students have a consistent experience and that the unit has internal fidelity to specific ideas. Looking day to day narrows the scope and makes it too easy to dictate the entire path of the course.

This is a skill that develops over time. There are strong communities of teachers on the FLN website and Slack channel. Get connected with others to solicit feedback and suggestions from people working on the same ideas. As you continue to zoom your lens out and work down to individual lessons your skill will build and your students will benefit.

Thanks for reading the series. If you have questions, leave a comment or head over to my website and drop me a line.


Featured image by Danielle MacInnes on Unsplash.