Posts

No, Retakes Are Not a Bad Idea

There's an Edutopia article cycling around which argues against allowing retakes on assessments. The author builds a case focused on motivation, mental health, and teacher effectivness.

Instead of doing a large breakdown here, I annotated the original article with my pushback in context.

On a semi-related note, If you don't have the hypothes.is extension installed, you should grab it and leave replies on the original article. Comments are also welcome here.

On Being a Parent of Four

We had our fourth child, a boy, on June 28th. Since then, life has sped up in some ways and slowed down in others. I'm fortunate to have the entire summer off, the majority of which was with the baby. We've been able to focus on family time, the garden, and planning for our oldest to go to school in the fall. I've had some side projects here and there, but nothing compared to the magnitude of last summer's work.

I remember thinking ahead to what it would be like to have four kids at home. Some things I was right about, others...not so much.

We've come into a habit where one of us is with the baby and the other has the three older kids. It isn't 100% of the time for sure, but it's familiar. We take turns focusing on E and the day to day routine doesn't really change for the older girls.

It was hard to remember to call him "him." We had to erase "the girls" from our vocabulary when referring to all of our children collectively.

I tend to want to watch movies when I'm up late with E and read books whem I'm up early with him. Not sure why.

I head back to work in about two weeks and we're working on stepping up to full days away. The older girls have done a really amazing job playing together kindly, involving their youngest sister (still just 18 months old) in their adventures outside.

I think my biggest lesson has been to let go of some of the control I feel I need to have. If the kids are filling the pool with grass clippings and making pond scum, more power to them.

Brute Force Bike Lock

Two years ago, we took our kids to the north shore of Michigan for a camping trip. Part of that included a day on Mackinac Islad with the girls and the bikes. Living in the country, I'd never had need for a bike lock. But, heading to the island without one didn't seem like a good idea, so we got a word-combo lock for the bikes for a few bucks.

Two bikes next to one another A sign for M-185 on Mackinac Island

Fast foward two years. I got the bike back out because this summer, aside from having anoter baby, I don't have any major house renovations to do.

There was the lock. Not in the way of anything, but it was a little annoying to have hanging on the frame.

My memory isn't as good as it used to be.

We started by breaking out a pad of paper and looping over each dial, making a list of words changing one letter at a time. This took...a long time to do.

My wife is much smater than me and did a Google search for words used my Master Lock. Beacuse the Internet is a wonderful place (sometimes) she found a page which not only detailed Master Lock's four-dial lock but also provided a link to a Google Sheet of each of the words, in order.

An hour later with nothing more than slightly cramped fingers, I was in.

The opened bike lock in my living room. The bike and computer are in the background.

I wrote the combination down this time.

What is a Grade?

I had the pleasure of working with about 15 people yesterday on moving to standards-based grading next year. We started off with a long discussion about what grades are and what they mean. It's easy to get into what they should be, but I wanted to make sure we all had a solid understanding of what grades actually do in most of our classrooms.

I had a couple of guiding questions and one that generated the most interesting response was the following:

A student rarely comes to class and when they do, work isn't turned in. At the end of the semester, that student easily passes the final exam. Does that student pass your class?

Lots of eyebrows furrowed.

There was some uneasy looking around.

About half said yes, the other half said no.

Now, there are major assumptions here. Is the test valid and reliable (standards-aligned)? How did the teacher intervene? Did a student show growth before taking the test in some other way?

All issues aside, the root of the question forces us to consider whether a grade in our class represents learning or compliance.

Better than them doing well all year and then flunking the final exam?

—Brandon Dorman (@brandon_edu) June 13, 2019

I also wonder why we're more accepting of the inverse situation: a student who has not taken the class who passes the final is allowed to skip the course (or is given credit, etc).

If we're comfortable with allowing students to skip a class (be given credit) by testing out we should be just as comfortable allowig a student who "shows no effort" to be given credit for hitting the same benchmark. The difference is our perception of that student.

Challenging our biases is important, particularly long-held assumptions that dictate our perceptions about "good" vs "bad" students. Grades are the output of those biases in many cases.

What do you think?


The featured image is Br... flickr photo by Peter Schüler shared under a Creative Commons (BY-NC-SA) license

Change Course Role in Canvas via the API

Continuing my Canvas excursions...

We recently made a change where teachers could not manually add students to their courses. The change was made because manually enrolling a student breaks the grade passback to our SIS, which causes double the work to fix the problem in the first place.

But, this also affects manually-created courses that don't need the grade passback. One workaround is to add all students as a TA or teacher, but then you run into issues where students have access to grades.

The API doesn't allow you to directly change a user's enrollment status. You need to delete the user object from the course and then re-enroll to change the status. The change in the UI on the website does the same thing, but they make it look nice with a dropdown and it doesn't actually tell you that the user was deleted and re-added all in one step.

The nice thing about the API method is that you can set their enrollment state to active by default, which removes the course invitation notification and acceptance step for someone who is just having their status changed.

The example below is what I used to convert all students who were added as TAs back into Students. As always, I'm using the UCF Open Python library to handle the API calls.

from canvasapi import Canvas

canvas = Canvas('your_url', 'your_key')

course = canvas.get_course(course_id)

enrollments = course.get_enrollments(type='TaEnrollment')

for stu in enrollments:
    user_id = stu.user_id

    # the `deactivate` method takes a **kwarg to define what type of deactivation.
    # accepted strings: ['conclude', 'delete', 'deactivate', 'inactivate']
    stu.deactivate(task='delete')
    course.enroll_user(user_id, 'StudentEnrollment', enrollment_state='active')

This does wipe out the 'Last Activity' field in the People tab, so if that's important to you, make the change before the course is published. I made the change for a user, going from student to teacher and back with no loss of grade data, which was nice to see.

Creating a Curated RSS Feed with TinyTiny RSS

I've been using Tiny Tiny RSS (TTRSS) for several months now and I'm finally getting into some of the more advanced uses. It's more than just an RSS reader - it can be an RSS curator which makes it so much more powerful.

Here's what I mean.

TTRSS can collect and categorize feeds like any other reader out there. I have mine grouped by topics I'm interested in. Each installation also has something called a Generated Feed which allows me, the consumer, to republish my own curated feed with any article I want to share.

A unique URL is generated for my installation. Each article has a publish option that adds it to my public feed.

https://blog.ohheybrian.com/wp-content/uploads/2019/06/2019-06-07_07-58-29-1.jpg

Here's the generated feed, if you're curious. You can subscribe to this if you want to know what I think is worth reading. I can also hook this into IFTTT to auto-tweet new items, etc.

That's one layer. What if I want to share curated articles based on a topic? I can only have one published feed for my account.

That's where labels come in.

If I create a label - a custom tag, essentially - in TTRSS, it also has a feed I can publish out.

Woah.

Even more, there are filters in TTRSS, kind of like Gmail, which can automatically add a label to an incoming post. This is triple powerful because I don't have to manually mark articles I want to share out.

Here's a full example of how I'm taking advantage of this:

Next week, I'm kicking off a standards-based grading cohort with ~20 teachers from across my district. I want a way to easily curate and share articles with them. Instead of emailing everything, I'm going to use TTRSS filters and labels along with Diigo to collect SBG reading and share it all out in one, continuously updated place.

First, I set up the label in TTRSS. That created this RSS feed pushing back out.

Any post in my incoming feeds can be labelled with SBG which publishes it back out to the world.

Next, I set up a tag in Diigo for SBG-related stuff. This is anything I come across on the Internet that isn't from a blog feed. It can be YouTube videos, PDFs, newspaper clippings...whatever I want. Diigo gives a good RSS feed of tags and labels, so I ingest that with TTRSS and use a filter to automatically apply my SBG label, which then updates my outgoing feed.

TTRSS is becoming less of a pipeline in to me and more of a packaging complex which takes information in and allows me to publish it back out to serve a purpose.

RSS isn't dead.


Featured image: Pipes flickr photo by derekbruff shared under a Creative Commons (BY-NC) license

Lightning Fast Spotify Playlists

Update

After posting this and tagging WDBM on Twitter, they sent the following:

Hey Brian! We upload our playlists on Impact89fm’s Spotify every week! Thank you for the support, happy listening! ?

—Pity Party (@pityparty_wdbm) June 5, 2019

If you want to listen, just search next time ¯\_(ツ)_/¯


Python has been my programming language of choice lately. Today, I gave myself a little challenge to create a Spotify playlist from a tracklist posted to a website.

I'm a big fan of WDBM out of Michigan State University. They have a great college station that reminds of my the music scene back in Rochester, NY (what was awesome). Every week, they have a live show called Pity Party and it highlights alternative/emo/rock goodness. I try to catch the show if I can, but I often miss it because I'm not always near my computer to stream.

They post their playlist each week on their website. I fired up a Python project with BeautifulSoup and requests to get the web page data and a new (to me) library called Spotipy which gave me API access.

This happens in a couple steps. The first thing to do was scrape the web page, which is super easy with BeautifulSoup and Requests. The website uses the same format for their playlist each week:

<span class="storycontent">
  <p>Track 1 - Artist 1</p>
  <p>Track 2 - Artist 2</p>
</span>

BeautifulSoup lets me set up a quick loop to grab each of the <p> tags in a list that I can loop over.

The Spotify API allows you to search by artist and track name. If a single result is returned on the search, its ID is added to a list to post in bulk to the playlist. This is more efficient than looping each one individually.

Any track that isn't found for whatever reason is added to an errors list that is shown to the user when everythig is done. That way, they can go back and check them manually. It may be that the track doesn't exist or their was some weird punctuation or something.

Instead of taking 20 minutes to search and add each song manually, this runs in less than 10 seconds.

https://blog.ohheybrian.com/wp-content/uploads/2019/06/typing.gif

Rock on.

Here's the full script if you're interested in checking it out. The entire WDBM specialty show catalog uses the same format, so you can try it with other pages over ther.


Featured image is lightning flickr photo by Tom Gill. shared under a Creative Commons (BY-NC-ND) license.

Methods of Calculating Grades in SBG

I'm prepping a full-day workshop on standards based grading for about 20 teachers in a couple weeks. One major part of the day will be centered on converting a SBG report to a 100-point scale letter grade, mostly because we just have to.

Here are some of the methods I've come across, which have all (in one way or another) informed my own method, which is last in this post.

Equalized Weighting

I saw this calculation method first from Frank Noschese on his KISSBG blog post. He glances over it in the post body, but the comments below get into some of the details. Here's the formula:

50 + 50 * (earned/total)

At first, the additional 50 points added in look like a bonus, which feels weird. In reality, this wipes out the 0-50 F range. Now, each letter grade rougly corresponds to a 10-point spread:

  • F: 50 - 60
  • D: 61 - 70
  • C: 71 - 80
  • B: 81 - 90
  • A: 91 - 100

It's an equivicator, not a bonus.

Reflective Grading

Shifting away from assigning arbitrary points is a big piece of standards-based grading. Laura Gibbs, Kathryn Byars and Ken Bauer are the three names that jumped out in this region. Feedback is the main driver. Work is given feedback and only feedback. The focus between teacher and student is on demonstration, not on points or numbers.

For assessment, students reflect on and provide evidence of proficiency on each standard. Laura, Kathryn, and Ken all did this differently, but the main flavor is the same. Take a look at Kathryn's helpful Google slides, Laura's deep-dive book chapter and Ken's various blog posts. This is by far the most flexible, fuzzy, and subjective method of reporting.

Standard Purism

The most "pure" method of standards-based grading removes all items from the gradebook except for the standards. The methods of grading these varies. Some use a straight average of binary items (pass/fail). Others put each standards on some kind of rubric scale and give an average.

The main benefit of this structure is that practice work (homework, classwork, etc) is excluded. If a student forgets or decides not to do an assignment, their grade is not affected because it is practice.

On the other hand, this opens the door for assignments to be completely optional. This is a detriment, in my opinion, because students may not have the self-awareness or diligence to do independent work otherwise. Additionally, if a student skips a test or quiz because it doesn't go in the gradebook, it can set up an awkward situation where a student is racing to prove standards at the end of the year.

Some kind of blend

I ended up blending several of these ideas into a system I like. I used components of KISSBG (binary yes/no for standards) with a weighted course average to calculate the final grade.

Category Weight
Classwork 20%
Standards 80%

In my gradebook, any classwork/practice was lumped together into one category. Homework, tests, quizzes, etc, all contributed to 20% of the total course grade.

Standards were individual assignments worth one point. They were assessed over time on a four-point rubric:

Description Score
Exceeds Expectations 4
Meets Expectations 3
Approaches Expectations 2
Does Not Meet Expectations 1
No evidence 0

The cutoff for toggling a 1/1 in the gradebook was a 3. This meant they demonstrated proficiency in the concept in that situation. A 4 was given if the student could connect different related ideas...showing the relationships between standards.

Rubrics were used on every assignment and that aggregate score was used to determine the gradebook 1 or 0. Over time, patterns emerged and students were able to track their growth/decline in Canvas (more on that another time). I rarely graded Classwork assignments in depth...if it was turned in, I often gave full credit just for having it done. The rubric feedback was the important piece and I tried to put the focus on learning from those pieces.


Is ther a best method? I don't think so. It really depends on your group of students and situational context. In 2012, I used a more reflective approach. In 2016, I was using more the 80/20 split with some reflection thrown in. Both were equally valid and I felt good about the grades I ended up reporting.

What others would you suggest? Leave a comment below.


[caption width="500" align="aligncenter"]2018-11-08-Couthuin-et-environs-automne-45

Adding Assignment Statuses to the Canvas SpeedGrader

Here's another little script I hammered out for Canvas today.

With the new gradebook, you can set assignment statuses like "late" and "missing." This is helpful in the gradebook for on paper assignments (digital assignments are automatically flagged) but you can only change the status in the gradebook grid.

This is a hacked together script to add the same buttons to the SpeedGrader controls.

https://blog.ohheybrian.com/wp-content/uploads/2019/05/2019-05-29_14-45-39.gif

The easiest way to add this is by adding an extension called Tampermonky. This essentially allows you to run code on websites you don't have access to edit.

After installing the extension, click here to install the script.

Last step: click on the Tampermonkey Icon, choose Dashboard, and then click on SpeedGrader Status. In the editor, update line 14 with your Canvas URL.

Comments

Paul Bui

Hey, I just wanted to thank you for this blog post. I forked your code, fixed a bug, and added modification of the late days.

https://github.com/paulbui/canvas-tweaks/tree/master/speedgrader_status
Brian Bennett

Nice! I always worry a little about sharing these tweaks because of bugs, so I appreciate you sharing the updated code back.

Managing Standards Based Grades in Canvas LMS

I'm trying to make standards-based grading more approachable for my teachers. When I was teaching full time, I held to Frank Noschese's Keep It Simple philosopy. Single standards correlate to single assignments that are scored as pass/fail. Now, I averaged these out on a weighted scale to calculate a 0-100 grade, but that's for another post

Using Canvas, I was able to set up a functional reassessment strategy to aggregate demonstrations of proficiency.

The Learning Mastery Gradebook in Canvas does not translate anything into the traditional gradebook. This mean that every week or so, I would have to open the Mastery report alongside the traditional gradebook and update scores line by line. This was tedious and prone to error.

Using the Canvas API and a simple relational database, I put together a Python web app to do that work for me. The idea is that a single outcome in a Canvas course is linked with a single assignment to be scored as a 1 or 0 (pass/fail) when a mastery threshold is reached.

The app

Users are logged in via their existing Canvas account. There they are shown a list of active courses along with the number of students and how many Essential Standards are currently being assessed (ie, linked to an assignment).

The teacher dashboard

In the Course view, users select which grading category will be used for the standards. Outcomes are pulled in from the course and stored via their ID number. Assignments from the selected group are imported and added to the dropdown menu for each Outcome.

The alignment menu

Users align Outcomes to the Assignment they want to be updated in Canvas when the scores are reconciled. This pulls live from Canvas, so the Outcomes and Assignments must exist prior to importing.

As Assignments are aligned, they're added to the score report table.

Score reporting per assignment

Right now, it defaults to a 1 or 0 (pass/fail) if the Outcome score is greater than or equal to 3 (out of 4). All of the grade data is pulled at runtime - no student information is ever stored in the database. The Outcome/Assignment relationship that was created tells the app which assignment to update for which Outcome.

When scores are updated, the entire table is looped. If an Outcome has risen above a 3, the associated Assignment is toggled to a 1. The same is true for the inverse: if an Outcome falls below a 3, the Assignmet is toggled back to a 0.

I have mixed feelings about dropping a score, but the purpose of this little experiment is to make grade calculations and reconciliation between Outcomes and Assignments much more smooth for the teacher. It requires a user to run (no automatic updates) so grades can always be updated manually by the teacher in Canvas. Associations can also be removed at any time.

As always, the source for the project is on GitHub.

10 Years

Today is my 10th anniversary.

Mackinac Island, 2013 Easter, 2014 Wilderness State Park, 2017 Summer 2018

Making RSS Feeds for Instagram

tl;dr: I have a hacky proof-of-concept method for getting an Instagram account as an RSS feed. It uses Python and you can grab the source files here.


I'm not on Instagram because I got tired of only seeing three people's photos interwoven with ads. The problem is I still have friends who post frequently there and I feel like I should still be able to see those photos.

The wonderful thing about the Internet is that you can do things that weren't really meant to be done. Instagram (nor most other companies) provide RSS feeds anymore in order to force you into their platform. That's silly. I've been teaching myself Python and this seemed like a good way to flex some of my new powers.

Get that feed

Inspired by Andy Barefoot, who did some magic on his personal site with PHP, I decided to do the same using Python. What resulted was a command line program which can fetch any public Instagram account and create an XML document I could subscribe to.

I'm going to use Alane Levine as my guinea [STRIKEOUT:pig] dog for this post. To create the feed, run:

python subscribe.py cogdog

where the argument is the username of the account. I'm using a handly lbrary called PyRSS2Gen by Andrew Dalke to create the properly formatted feed. I ran the script and then threw it on my server and subscribed, just to see what would happen.

An RSS feed for an Instagram account. The feed exists in real life.

evil cackle

Update that feed

Instagram only shows 12 photos at a time. If I ran this script over and over, it would drop a photo from the feed each time it updated. That's no good.

I wrote up a second (notably more hacky) companion which takes almost the same form in order to update the feed rather than create one from scratch:

python update.py cogdog

This little guy looks for the existing XML doc and then fetches the user's Instagram page yet again. Instead of writing everything, it only writes things with timestamps newer than the most recent feed item. It's a little brute force, but hey, every tool can be a hammer if you swing hard enough.

Improvements

The subscribe script only loads those initial 12 photos. I may still go back and have it get the entire profile in the first go, but limiting it seems okay to me.

It's not general-purpose yet because you have to know how to install Python and several modules as well as have a web server to host the feeds on. I started finessing this into a small webapp which would do all the jobs, but my brain is stretched pretty far as it is.

If you want the source, it's in a GitHub gist and you can certainly tweak and improve. Let me know if you make changes or how I could do this better in the future.

Comments

Alan Levine

Holy cow, that's neat. I better post more photos for ya.

Grace Hopper Models a Billionth

This is worth watching. When we're describing principles to students - especially concrete thinkers - modeling and finding concrete examples of abstract ideas is critical to develop understanding.

Taking it one step better, scaffold your students to help them come up with the analogy. Or, better yet, challenge them to find the lengths themselves and then create the model.

Related video: modeling the speed of sound vs light with a metronome.

A Critical Gradebook

I am finding the right balance of scaffolding to provide the best learning environment for my students.

Source: A Critical Gradebook

The gradebook seems like the most frustrating and under-developed part of any LMS. We use Canvas and have had our own struggles with making the gradebook helpful, not hurtful. Laura Gibbs has more thoughts on that than I do.

The Learning Mastery component of the Canvas gradebook is immensely powerful if you take time to set it up correctly. It's a shift away from singleton points and gives students and teachers a more high-level view of what objectives/skills/standards a student has attained over time. This can be (but doesn\'t have to be) linked to the students course grade. Again, my view is to stick with Frank Noschese's Keep It Simple SBG schema.

Translating that is a chore of it's own, but I'm hacking away at a helper tool...more on that another time. I think this is where something like an LTI tool can help across multiple platforms, if the new gradebook (or commentbook) is flexible enough to focus on feedback rather than a specific assessment protocol.

New law will require Indiana high schoolers to take US citizenship test - FOX59

The new law in Indiana doesn’t say that students have to pass the test, but it does require them to take it to be able to graduate.

Source: New law will require Indiana high schoolers to take US citizenship test – Can you pass it? | FOX59

In today's Completely Frivolous Testing Update.

I'm not against new ideas or exposing students to the rigor we ask of people working to naturalize, but requiring students take a test - with no requirements set - is the definition of fivolous.

I wonder how many Indiana legislators could pass this.

Bent

My car stopped running suddenly on the Indiana toll road about 10 days ago. The timing belt decided to break, which makes the car not want to do anything correctly. To keep engines smaller, some are designed so that the valves sneak down into the piston chamber. (This also increases fuel efficiency.) These engines are known as "interference" engines and is controlled by precise timing to make sure the pistons don't hit the valves. When your timing belt breaks, well...things aren't timed so precisely anymore.
A bent engine valve.

This should not be bent.

It's such a small piece, but it took me a day to get it out of the engine. We took the head (all the valves) off and inspected the pistons. When it hits a valve, the piston itself can be damaged, which would realistically mean ditching the car. I was super lucky because the pistons looked good. There was one small dent, but it wasn't catastrophic. The real danger is shearing the head off the valve and scratching the piston chamber, but that didn't happen either.

My car with the engine head removed, exposing the pistons in the combustion chambers.

Instead of repairing the valves myself, I decided to take it to an engine repair shop because they can do the work in a few hours what would otherwise take me days to accomplish. I picked up the engine head within a week and got it all put back together.

This car is so great. It's at 230,000(ish) miles and with this repair, could probably go another 200k if I keep up with oil and belt changes. This year alone has seen a new engine head, the head gasket, timing belt and water pump, a new alternator, a new clutch and flywheel, and several new sensors and other bits.

Now, this would not have been such a big job had the belt not broken. In a couple years, I'll pre-emptively change the belt to avoid such a situation.

Turns out our minivan also has an interference engine so I'll be taking a day to change that belt before we run into the same problem.

KQED on Active Engagement, Not Compliance

More than that, the characteristics should be observable to anyone who walks into the room.

We work hard with our teachers to make sure they're changing instruction and not just flavoring old ideas with tech. The eight reflective questions in this article are a great outline (guide?) teachers can use as they're planning ahead with technology in general.

Beyond purposeful planning, if you can't see students engaging in some way, they probably aren't. Our indicators for engagement have to be updated as well. From earlier in the article:

...he looks for behavioral, emotional and cognitive engagement at play together.

Quiet seat work does not equal engagement.

Source: How To Ensure Students Are Actively Engaged and Not Just Compliant | MindShift | KQED News

Spring Broke

Spring break finishes tonight, so this is the "what we did over spring break" post in case any of my old teachers are reading the blog these days.

The whole family got sick. Except me. So, I played doctor (with no small role being played by my parents, whose house we were in while infirmed). It was your bona-fide Influenza A for Mrs. Bennett and the three Bennett children. Not the stomach bug nastiness, the everything-hurts-why-do-I-still-have-a-fever nastiness.

Backyard camping. CC-BY by me. `This has an interesting story. <https://photos.ohheybrian.com/#15533873363118/15546528233275>`__

Backyard camping. CC-BY by me. This has an interesting story.

`Outside grilled cheese <https://photos.ohheybrian.com/#15533873363118/15546528317716>`__. CC-BY by me. The crossed legs killed me. So grown up.

Outside grilled cheese. CC-BY by me. The crossed legs killed me. So grown up.

`Garden prep <https://photos.ohheybrian.com/#15533873363118/15546528415743>`__. CC-BY by me.

Garden prep. CC-BY by me.

One of the best parts was that even though I took my computer to Kentucky, I forgot my charger at home. There were no emergencies, the world did not end. I ended up reading a book and a half in between of nursing kids and my wife, which was a great treat to myself.

I think I might start leaving my charger places so I have a hard-stop deadline for working.

My Phone is a Phone. (Mostly.)

I have a love/hate relationship with phones. Several years ago, the "shitphone" post on Medium caught my attention and made me start thinking more seriously about A) what I spend my money on, and B) why I did that. This year has been a year of disentangling myself from my phone. I started by deleting all social media. That was easy and didn't feel too painful. I wasn't constantly

Next, I removed Gmail completely. I no longer check email on my phone. There are few instances in life where an email is so urgent it needs a reply while I'm walking somewhere. Those times were better solved with a phone call or text anyways. That was a little more painful because of the instant-reply expectation that comes with email.

The next step was adding an app called Action Dash which reported my usage time daily. I respond to data, so seeing hard numbers about my use helps me meet those goals. Now that I have data, I can start making some more difficult decisions.

After a week, I got my phone usage down to under an hour consistently. Even then most of the use was using Hangouts through the day to keep in touch with my team while I moved around different buildings.

I got thinking about how I use my phone and what I wanted to be using it for. Andy Crouch's The Tech-Wise Family is a big influencer in how I think about technology in general and my phone use specifically. The premise is that a phone has a proper place, just like toys and books. The challenge is that we have to define the proper place in the face of manufacturers and developers trying to define it for us.

My proper place is to focus on communication. Calling and texting (through various apps) is my goal. The phone is a utility, not an entertainer. After entertaining thoughts of moving back to a flip phone, the loss of a calendar in my pocket would be a huge burden to manage because my schedule is so variable. I can't realistically limit my phone to only communication, but I can make some other changes to define its role in my life.

I went on a deletion frenzy. I deleted YouTube and Netflix. I deleted Goodreads. I deleted non-family and non-work related chat apps. Games are gone. I deleted and disabled all of the browsers this week. I deleted everything I could that didn't directly relate to communication as a rule of thumb.

It felt great. It feels great.

My phone isn't completely locked down to communicating, but I'm getting closer to having a very specific and well-defined role for its place in my life. I still have my Kindle and Overdrive books, I still have a podcast manager and an RSS reader. I'm solidly in young-children mode, so my camera gets plenty of use. But each of those consolations has a specific purpose in specific situations.

My phone is here to stay, but now it's on my terms.


Pattern flickr photo by Jonas B shared under a Creative Commons (BY) license

Spring

We heard the first group long before we could see them. Almost as small as long-distance airliners, the Sandhill crane call is distinct, clear. The kids and I are craning our necks, looking for the group of birds heading north for the summer months.

This week, the girls asked why they were going to bed while it was still light out. The first time this year when it's been light enough to look at books in bed without a flashlight. We look forward to the nights where we can fall asleep and wake up to the light in the windows.

Spring teases us here. Glimpses of green grass and blue skies here and there. Sometimes they're swept under a late snow shower or heavy frost. But we know the sunlight is coming back.


"Cardinal."

"Chickadee."

"Woodpecker."

"When will the hummingbirds come back?"

`Keeping watch <http://photos.ohheybrian.com/#15578415044774/15578363605227>`__. Taken by me, CC-BY.

Keeping watch. Taken by me, CC-BY.

We practice our bird calls outside. We're all rusty from a winter spent indoors, faintly hoping some winter holdovers will visit our bird feeder in the front yard from time to time. Even if we can see them, we can't hear their songs. Sometimes we practice with an app, but they know it isn't the same as listening outside, picking calls from among the noise.


The flock wheels around, calling to one another. This one is smaller...maybe 30 or 35 individuals. When they're gone, we go back to raking and tending the fire, listening for sounds of the next flock to float down.