Day 37: Plug it in

Day 37: Plug it in (Photo credit: lorda)

Tomorrow I leave for a camping trip where the family and I will be mostly disconnected from the Internet, definitely disconnected from tv.  We will have our phones with us and we’re not going to be far from civilization as we plan to visit Mr. Geeky’s family while we’re traveling.  We need it.  All of us, myself included, have spent far too much time this summer in separate spaces with our heads in a screen.  For me and Mr. Geeky, this has mostly (though not entirely) been for work, but for Geeky Girl and Boy, they’ve got their own forms of entertainment online.  Gaming mostly for Geeky Boy and social media for Geeky Girl.  We all need to have some significant experience with life beyond the screen.

I really, really like being outside, and in fact, do some of my work out on my deck when the weather is nice.  I’m looking forward to being only outside, to being able to see stars, to see some cool birds, and to walk through the woods.

Mr. Geeky and I often debate where we want to retire to.  We could move downtown, be in a walkable city where there are shops, bars, and coffee shops.  Or we could live in the country somewhere where you can’t see your nearest neighbor.  We could go either way.  I do enjoy cities, but those are easy enough to visit.  I have this sense that the countryside is disappearing and that it might be nice to soak it in for a while.  I’ll get a taste of that for a week at least.

There will be–connections willing–photo posts from the road, but otherwise, it will be a bit quiet around here.

Teaching K-12 vs. College

Education in general is under attack, if you read the news at all.  Public school teachers and less prestigious institutions of higher ed seem to be in for the most criticism.   I try to stay out of the public school debate as much as possible since I don’t teach in a public school and therefore my experience of it is quite different from someone who works in one.  But I do think public education is a common good that is being worn away by budget cuts, charter schools, and other issues.  And that concerns me.

On the teaching side, I looked into being a public school teacher twice.  Once I considered enrolling in an education program and was turned off by its low standards for admittance (shallow, I know, but true) and the second time about 6 or 7 years ago as I cast about for what to do after leaving my previous job.  I rejected the notion the second time around when I saw what was required to get certified and then what I would be required to teach.  Coming from higher ed, the idea of a super strict curriculum made me squeamish.  And the fact that a Ph.D. can’t get certified to teach in a public school in less than two years is problematic.

Another reason I rejected K-12 teaching when I was first thinking about careers (which I didn’t think about that much) was a prestige thing.  My peers, all of whom were headed for advanced degrees, frowned upon becoming just a teacher.  I, too, had adopted this mentality, seeing teaching as lesser than.  And so, I, too, headed down the path of presumed prestige in teaching at the college level.  Not only did that not work out well for me.  It hasn’t worked out well for lots of people.  Adjunctification is a huge problem, and not only do adjuncts lack the prestige of the tenured and tenure-track faculty positions, but often a basic living wage.

A post by Dean Dad earlier this week reminded me of this debate I’ve had with myself over the years.  In his post, he hears from a correspondent who has offers at both the college and high school level and who wonders which is the best option.  Note that the college option is not tenure-track.  Many of the comments speak positively about the high school teaching option, which is nice to hear.  The work is, indeed, just as challenging intellectually (imho) as teaching at the college level and sometimes more so.   It is also often more rewarding.   A post I made a couple of years ago echoes many of the comments on Dean Dad’s post.  They suggest that the feeling of camaraderie and contribution to students’ lives that one gets from teaching at the high school (or lower) level is invaluable.  Even the public school teachers I know feel pretty committed to their work and sometimes their school and get a lot out of that commitment, something I don’t see as often in higher ed faculty.

I often feel that teaching at the level I do is more rooted in the real world even as I know that the real world for my students is much further away than it is for college students.  There’s just a practicality to what I do that feels almost tangible.  In higher ed, I often felt like I was searching for ever more esoteric topics to focus on in order to carve out my own niche.

Five years into my current gig, my enthusiasm for my work hasn’t waned.  New challenges have come up every year and I enjoy facing them and figuring out good solutions.  I enjoy coming up with better ways to teach my subject and mentoring students to pursue computing as a field.  Those are things I had to some extent in higher ed, but they weren’t valued.  And I think not only was this a problem for me personally, but it’s becoming a problem for higher ed as a whole.  Teaching has become less valued in both realms over the years, but never more so than in higher ed institutions.  Which is a shame, because it’s needed more than ever.  Instead, most institutions are trying to MOOCify teaching, to pawn it off on adjuncts or to otherwise make it the red-headed stepchild of the institution (either to research or sports or both).

I would never go back to higher ed for lots of those reasons.  I don’t even see it as a prestigious job anymore, though I respect many folks who are in higher ed (I’m married to one after all).  As I’ve kept tabs on the industry, though, it just feels like it’s having a “failure to thrive” moment.  It’s not dead, but it’s not doing so hot.

Hard Reboot

Cat lounges by the toolsOver the weekend, I did nothing.  Yesterday, I didn’t even shower.  Occasionally, I just need to power down, not use my brain too much and start fresh afterward.  It’s like holding in the power button and waiting for a couple of minutes before turning the computer back on.  Only for me, it was a couple of days.

Last night we had some major thunderstorms that hit just as we were going to bed and again an hour or so later, so sleep was restless for me.  Still, I plan to get a few things done.  I starting thinking about my 8th grade class, which I haven’t done much with and thinking about general trajectories for it.  Right now, it goes something like: digital, physical, digital plus physical, group project, individual project.  I think.  The idea is to start learning some digital things: html, css, processing.js.  Then learn how to build some things: cardboard, wood, laser cutting, 3D printing, all of the above.  Then combine the digital with the physical in some way.  Then do a group project to learn about working together, divvying up tasks, tracking progress, etc.  And finish with a big individual project.  Since I was thinking about this as I fell asleep, I had a dream about it.  In the dream, they made me teach the entire 8th grade at once in a weirdly shaped lecture hall, where some of the kids were in closed off areas.  Then the password for the computer wasn’t mine.  And, I was being observed by our new middle school director.  I woke up before I could find out how bad it went, but let’s just say, I don’t think it could possibly have gone well.

So, yes, back to school anxiety has begun.  We’re a month away, but that month will go fairly quickly.  This week, I want to finish my little personal projects, and work on 8th grade, and a little Mobile Computing (which I’m not teaching until spring but won’t have real time to plan).  I also want to start organizing some areas of the house.  I know, ambitious.  I won’t get everything I want to get done done, but I hope to put myself on a trajectory where I can feel relatively calm when the craziness of the beginning of the year starts.  And the hard reboot is a good way to clear out the cobwebs and take a deep breath before diving in.

Here I go!

Problem Solving: Peeling Back the Layers


Problem solving flowsheet

Problem solving flowsheet (Photo credit: aka Jens Rost)


One of the things I enjoy about working on a project like my dog door logging project is that problems crop up that challenge me.  This is something I find fun, but my students sometimes find frustrating, so I’ve been thinking about how to present the issues of problem solving in a way that will be more appealing to my students and will encourage them to dig as deep as they need to to solve the problem and not give up.


I tend to approach problems in a step by step fashion.  As I’ve built this dog door project, I’ve done it one step at a time rather than trying everything at once.  First, I tested the tilt sensor itself to see if it would work, printing it’s state to the monitor.  The wiring and programming for the tilt sensor have been well documented (thanks, Adafruit!), making this step fairly straightforward.  Understanding the programming language and how circuits work allow you to change things up if needed, but the basic tutorial gets things off the ground quite nicely.  Early success is important!


The next step was to figure out how to save the data from the tilt sensor. This involves thinking about a couple of things.  First, what does the data coming out of the sensor look like? Is it a string? A number?  Here’s where tutorials sometimes break down.  The tutorial I used lit a light when its state changed.  I needed to print text somewhere, preferably in a format I could use elsewhere to create a graph.  I had in step one, printed to the serial monitor, adding a single line to the tutorial code.  I actually ended up making my own string, so that “Up” printed to the screen when the “door” was “Up”.  Basically the tilt sensor registers a high or low value of electricity, similar to an LED receiving a high or low value of electricity, so I just converted the high or low value to the string “Up” or “Down”.


There’s a lot to unpack in just that one solution.  I think we underestimate that when teaching students.  Understanding what’s coming out of a function is challenging for most.  Knowing that printing to a file requires a string or a number and that other data types might not work is a pretty big step.  And then you have to figure out how to convert your data to the right type if necessary.  Also, you have to know that some sensors might actually give you numbers and then you don’t need to convert!  Crazy.


So I’m printing to the screen, but not saving the data anywhere.  How do I do that? How do I do that with what I have on hand?  To the Google machine!  As I mentioned yesterday, I discovered that the Arduino can store a small amount of data (512 bytes).  This was a test of two things: 1) that the data can be saved and 2) that I could read the data later and see that it was useful data.  Again, the documentation on this was good, but I had to know how to search for that.  I searched “how to save data on an Arduino” by the way.  And I got this, which led me to this.  And just this step is a challenge for many students.  There are different kinds of memory.  The amount is tiny, so one has to think about how many characters to use.  It’s a good lesson, but could be frustrating.  And there’s a whole other process for reading the stored memory out, which requires writing another program.   Phew!


In search of a more robust solution for saving and retrieving data, I went to the SD shield, a shield I’ve used before with some frustration.  Most of the time, I couldn’t even get the Arduino to recognize the SD card, which has to be formatted exactly correctly for anything to work.  I got past this step at least.  In theory, I’m writing to the SD card now instead of local memory (a one-line change plus some imported libraries and pin attributions, maybe 5 lines total).  But, the file is empty every time I look at it.  No errors, just not doing what I think I’m telling it to do.  And these are the issues faced by most of my students.  Things are “correct” but something isn’t right.  My card could be too big.  The documentation does say that SD cards that are bigger than 16GB are not supported.  Whatever that means.  My filename could be wrong, but I think I’d get an error.  Could be any number of things, programmatically or electrical or hardware.


And then I have to solve the problem of how to get the device onto the dog door itself.  This is going to pose an issue.  The best way to do it would be to solder everything together, and I think that’s the direction I’m headed.  We shall see.


But you can see how many layers of things one must dig through to begin to solve what seems like really simple problems.  To me, this is the crux of what we teach in CS.  We help students methodically step through solving a problem (often a problem they designed) and then recognize the smaller problems they need to solve one at a time in order to achieve the larger solution.  It’s breaking down problems into smaller parts, algorithmic thinking, and a touch of creativity, all things we’re trying to convey in CS.  But it’s not always easy and I think we need to recognize the frustration that might come with discovering another mystery with each solution, the feeling that maybe there’s no bottom to this.  Thinking through my own strategies for solving this particular problem reveals all the things I know that help me, things I might need to help my students learn as they bump up against these kinds of problems: different data formats, how data is read by a computer, memory types and sizes, formats for disks and files, not to mention electrical circuits and programming which are the main things we think we’re working with.  I find it fun to peel back the layers, and I hope to make it fun for students, with a little bit of coaching.


Limited success

The jump start mostly worked.  I started by trying to fix my light-up origami garden.  I checked my connections, ran to radio shack for some batteries, but still nothing.  I lack a multimeter at home, so I can’t tell if current is actually circulating, which would mean that I just need more power, or if there’s no current getting to the LEDs at all.  So it’s on my agenda today to get one.  I ordered one for school while I was at it since I’d been borrowing one.  Hooray!

Testing the Tilt SensorSo I moved on to an Arduino project.  I’m often inspired by my pets.  You might recall last year, I made a GPS tracker for the cat (which, you know, didn’t make it onto the cat, but it still worked).  I thought I might find a way to track the comings and goings of the animals through the dog door that connects the kitchen to the basement.  The door is primarily for the cat, who can then take the door from the basement to the outdoors.  The dog can’t reach the outside door.  I originally thought I’d use a light sensor, but decided the values I got out of it didn’t vary enough to tell when an animal crossed its path.  Plus, there’s the issue of the values changing at night.  I decided on a tilt sensor, which is simply on or off.  When the door goes up when an animal pushes on it, it should record that it’s on.  Simple.

I needed a way to store the data, and not having an SD Card shield around, I googled a bit and found that there’s a bit of memory on the Arduino itself to write to.  It’s only 512 bytes, though, not enough to record comings and goings throughout the day.  But I did prove it could work.  So that’s something!

Today, I’m headed to MicroCenter to get the SD Shield and some other bits and pieces to finish out the project.

Jim Tiffin pointed out to me that Little Bits partnered with IFTT (one of my favorite services) to automate this whole process by writing to a Google Spreadsheet.  That’s great, but it’s a little less DIY than I want.  I think of some of those automated Internet of Things produces (WeMo comes to mind) as great ways to start and to conceptualize how these things work, but they’re limited. They’ll only do what they were built to do.  And for most, you can’t get to the coding underneath at all.  It’s all been done for you.

Using something like an Arduino instead reveals all the layers underneath that.  Just understanding the limits of onboard memory is hugely important.  Most of us take memory for granted now since it’s so cheap and plentiful.  It wasn’t always that way, and there are still applications where saving memory is important.  Yeah, I’m starting to sound like one of those “back in my day . . . we walked both ways to school uphill and in the snow” people.  But every time I do something like this, I’m reminded of how cool the technology is that I use every day, and how amazing it is that we got here at all.  Surely that’s a lesson worth teaching.

Jump start

I kind of took yesterday off.  I had to go into school to take care of some things, and I had intended to do some work when I got home, but instead I sat on the couch and did nothing.  I had lunch, puttered around, went for a walk, and then Geeky Girl and I went to the pool.  I’ve worked almost every weekday this summer.  I felt I needed the day off.  My family has traveled a lot separately, so we haven’t really seen each other that much.  We had the week at the beach, but then after that, Geeky Girl was off visiting my dad; Mr. Geeky went to DC; I left for NH, then Chicago, and Geeky Boy went to Seattle.  We saw each other for a day, maybe in between all that.  We are trying to plan a family trip sometime before Geeky Boy heads back to school (he starts earlier than the rest of us).  So I’m kind of in a limbo mode of being sort of on vacation and sort of needing to do some work.

I’m going to try to jump start my work mode today by doing some fun things.  I have an origami garden thing I started with my students at the end of the school year that I’d really like to finish.  I think I’m going to use the Hummingbird Robotics Kit I have to finish it out.  We’ll see how it goes.  I also want to build a motion detector for our cat/dog door and see if I can calculate how many times the animals come in and out–just for fun. :)  Most of the work I’ve done so far this summer has been plotting out curriculum and lesson plans.  I enjoy doing that, but I need to play a bit before I dive into more of that.  In fact, what I really need to work on is my 8th grade elective, which I haven’t taught before.  I have a general plan, but need to see what will work.  I especially need to think through the plans for the physical aspects of the course.  The first 6-8 weeks, I think will focus on coding and digital skills.

The other thing I want to dive into is figuring out a badging system.  I want to use Mozilla‘s open badge system somehow in all my classes, and especially in the 8th grade class where, yes, I will have to grade some things, but want to use the badges as additional feedback and incentive.  Sounds like a much more fun plan than just writing lesson plans and maybe it will lead to writing those plans.  Here’s to getting a jump start!

The Limits of Data

I’m a big fan of data.  I read The Circle, which kind of creeped me out, but I also loved the access to data the book explored.  I often find that when I look at data, I see things I didn’t expect to see.  For example, I look at tests and how people answer questions.  The questions I think are hard sometimes have the most right answers.  It doesn’t mean the question isn’t hard; it means there’s another story there.

The data issue from my last post is a case in point.  That’s raw data there, but it’s been interpreted by someone (or group of someones) in a certain way.  Subjects and industries have been grouped arbitrarily.

Often people bring up data as a way to solve problems.  If we just have enough data, then we can fix X problem.  Think about data and students and schools.  We’ve been trying to use data to create better schools forever.  It’s hit or miss at best.  Data only tells us so much.  And what it does tell us is often our own interpretation.  It’s rare that you crunch some numbers and a graph appears and it’s suddenly clear what needs to be done.

I’ve been thinking about my own data lately as I try to lose the handful of pounds I’ve gained in the last few months.  I invested in a fitbit to help.  And I’ve gone back to tracking my calorie intake and my weight.   What my initial data tells me is that I’m pretty sedentary naturally, that I have to make myself move.  I don’t think that’s a desire on my part, just a factor of where and how I live.  I have to drive most places to get stuff.  To walk more than a couple of miles, I have to plan it.  It doesn’t happen naturally.  Also, I eat more than one might think.  I like food and cutting back is a challenge.

Looking at losing weight as just a numbers game can be helpful. It’s useful to know that I went 162 calories over today based on my intake and my activity.  But knowing that doesn’t necessarily make me want to get out of bed right now and go for a 2-mile walk (which is what I’d have to do to burn off those extra calories).   There’s a human element to all of this.  Yes, the data gives me valuable feedback, but I have to do something with that feedback.

Data can tell us all kinds of things, but it’s still up to us to either interpret the data or act on it or both.  And sometimes our interpretations or actions are wrong.  And then what?

Where do STEM Grads Go

This is a cool graphic of what fields various majors end up in, but I have some issues with it (of course).  I find it problematic that computers, math, and stats are lumped together.  Those are very different fields.  I would also like to see engineering broken down a bit.  Someone majoring in biomedical engineering has very different career aspirations than someone majoring in mechanical engineering.  A biomedical engineer is likely to end up in the health or education sector doing research.  I’m sure someone will use the graphic to say, see? majors in STEM don’t end up in STEM.  We don’t need anymore majors.  But the graphic says nothing about why they don’t end up in STEM.  Maybe it was their choice.  And, if you major in math and end up teaching math, you’re in the education field, which is not STEM, but I’d argue you’re still in your field.

If you look at the non-stem majors, the same story can be told.  An awful lot of people do not end up in the same field they major in.  I’d venture that most students do not major in something they expect to be employed in.  They major in something that gives them a general skill set and a solid knowledge base to work from.  It’s work experience that likely matters.  Also, the graph does not show advanced degrees.  Someone who majored in English might have had enough Computer Science to go on to a Master’s in CS.  Or someone who majored in CS might have gone on to an MBA and ended up with a business job.  Frankly, I think we need more detail here in order to really see some granularity.  While the graphic is cool and shows us something about where people end up, it’s not the whole story, I don’t think.

A Day Off

Wednesday, I took the day off.  I had a leisurely breakfast with a new-found colleague.  Then I scheduled a massage and wandered the hotel complex.  In my wanderings, I bumped into a fellow CSTA board member and we made dinner plans.  I had a luxurious massage, worked out, and then went out for an early dinner.  I was asleep before 10.  It was much needed.  I was in meetings all day yesterday, and will be for most of the day today.  I plan to spend some time in the pool today.  I head home tomorrow morning and plan to take the whole weekend off.  At some point soon, I’m going to take a few more days off with the family before school starts.  I enjoy my work, but it is good to pause and not do anything for a while.  I always feel ready to tackle the next thing after some down time.  Here’s to taking a few days of doing nothing!

CSTA: Learning, Programming, and Making

The closing keynote at CSTA was by Michael Kölling, creator of Greenfoot and BlueJ.  The gist of his talk was that learning to program is not the same as being a professional programmer and the tools one uses for each should be different. In fact, he said that the tools you need to learn are the opposite are what you need when you’re programming professionally.  Block-based programming languages are great for learning, but the tools for text-based programming tend to move quickly into the professional programming area and are too hard to use for learners.   There’s not much in between.

Kölling then demoed a new tool that is that in between space.  It eliminates the issues of missing curly braces and semicolons and automatically groups blocks of code together (boolean statements, for example).  It seems like a very promising direction. I enjoyed much of what he said, and have been arguing for years (sometimes with programming parents) that learning to CS is not learning software engineering.

Four years ago at my first CSTA conference, I had lunch with a woman who claimed that every CS teacher should work in industry for 2 years before they teach CS.  I found it very frustrating because I believed that teaching CS is very different thing and requires different skills than what one might get from working in industry.  The tools change and depend on what part of industry you’re in.  If you’re building apps, your tools are going to be different from someone in web development.  It doesn’t make sense to me to teach those tools to a freshman in high school.

In evening, I hosted a #makered chat where we discussed the intersection between CS and Making.  It was a lively discussion.  My sense of things is that Makers use coding a lot and in fact, we sometimes hear that those who don’t code much feel like they’re not doing “real” making.  I don’t think that’s true.  Many maker programs (like mine) have come out of CS programs or are incorporated into it.  However I’ve heard some CS people not want to deal with hardware or electronics (much less paper, glue, and glitter).   I was thinking about this intersection more, and here’s how I think it works:

Intersection of CS,coding, makered and computational thinking

Intersection of CS,coding, makered and computational thinking

Computer science and making both include coding, but Computational Thinking is the umbrella for both, I think. CT doesn’t need coding necessarily.  The Rube Goldberg machine we made involved a lot of computational thinking (the logic alone was quite challenging), but no real coding.  Thinking broadly makes the relationships make sense and eliminates some of the territorial-ness some people feel about both CS and Making.  Maybe there’s an even broader category we could use, but computational thinking makes the most sense to me.