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.

The Why Loops

I spent some time last week running through some "why" loops to hone in on reasons behind my potential research question. I think the question is broad enough to allow for several avenues of exploration, but it was insightful to run through the cycle several times (below). We've actually used this mechanism as an instructional coaching team in the past and being familiar with the process helped me focus on larger issues. Granted, some of the issues contributing to some of the behaviors we see are well beyond my specific purview and definitely outside the scope of my AR project.

Below is a straight copy/paste of my brainstorming. I think items two and three are most within my realm of influence. I can use my time to focus on teachers who have recently participated in PD to help provide that instructional support. I can also work proactively with principals, helping them follow up with their staff members learning new methods or techniques and recognizing those either with informal pop-ins to see students in action or public recognition in front of their staffmates.

Why don’t teachers implement the training they’ve received in PD?

  1. Teachers don’t put their training into practice   
    • There are good ideas presented, but no time to work on building their own versions.   
    • The PD was focused on the why, not enough on the how   
    • Teachers don’t understand why they need to change practice   
    • The district’s communication about the offered PD is lacking clarity   
    • There is a lack of leadership when it comes to instructional vision.
  2. Teachers do now show evidence of putting training to use with students.   
    • Teachers don’t know how to implement ideas they’ve learned in the workshop   
    • There are so many demands on their time, planning new lessons falls to the back burner   
    • In-building support systems are lacking   
    • The district is strapped for money and hiring instructional coaches isn’t a priority.
  3. Teachers do not put learning from PD into practice.   
    • There is no outside pressure to implement ideas learned in training   
    • Principals are spread too thin to pay close attention to inservice teachers are attending   
    • Principals do not know what to look for after teachers attend inservice.   
    • Teacher evaluations are based on outdated expectations and promote superficial expectations.
  4. Teachers do not communicate implementation of learning   
    • Workshops in the district are often standalone with no formal structure for long term support   
    • The resources committed to PD for several years were focused on one-off training   
    • The district lacked a vision for teacher development as a continual process   
    • District leadership did not see the value of instructional support as a formal position in the district.
  5. Teachers do not implement learning from workshops   
    • No one follows up on the learning from the PD   
    • There was no formal method for recognizing PD   
    • There is no formal expectation of implementation from supervisors (principals, etc)

"Loop" by maldoit https://flickr.com/photos/maldoit/265859956 is licensed under CC BY-NC-ND

Checking Implementation

Running PD for an entire district is a challenge. The biggest gap I see is knowing how or when teachers actually use what they've learned in a session or a series of sessions. We have automated systems in place, but it doesn't give us information on the effectiveness of our instruction.

We coach our teachers to check for understanding and watch for application of learning with their students, yet this is something I have not done well with the teachers I work with. Granted, I work with all five secondary buildings (and teachers in general with my partners), so geography and time are a challenge in gathering and collating the right kind of information.

I'm interested in what kinds of supports we provide will help teachers actually use what they've learned. We run several programs, but which ones are the most effective at engaging and enabling our teachers to make changes to their teaching? What kinds of environments or availabilities are the most helpful to the staff?

Homing In

I haven't defined a specific question yet, but several I'm thinking about include:

  • How long do teachers wait before implementing training they've received from the district?
  • What professional development structures or systems best enable teachers to implement skills or strategies learned in professional workshops?
  • How does student engagement or learning change as a result of a specific instructional change by a teacher after attending a training event?
  • What are the reasons teachers do not put strategies or systems in place after a workshop?
  • Do professional development workshops make an impact on day to day instruction by the teaching staff?

My main concern is that several of these questions are very subjective. Measuring the result - either quantitatively or qualitatively - will be difficult and rely on select groups of teachers self-electing an evaluation tool. We already send a basic implementation survey to teacher three weeks after an event, so my intent is to go through all of those records and begin to identify the response rate as well as the most common responses for implementation vs non-implementation by teachers. I'm also hoping to gain some candid insight on the state of our professional learning opportunities from teachers' perspectives.

Potential Action Research

Cobblestone walk in France

I'm taking a graduate course this semester on action research, part of which is defining and designing a question to tackle. Most of the coursework relates to classroom-level research by teachers to drive reflection and instructional change, but I'm not in the classroom right now. I'm thinking through what kind of teacher-focused research could help me in a coaching role.

  • Can reflection be an emergent property in teaching given the right context to grow?
  • How can formative data push teachers toward ideas in contrast with what they think is the "best" instructional habit?
  • How do PLNs (local or digital) change teacher practice?
  • What conditions are favorable for teachers starting - and completing - PD regimens?
  • Are mixed-format (online, self-paced, in person) PD sequences more or less effective than single-format (single sessions)?
  • What kind of follow up intervention or touchpoints can spur implementation of methods or ideas learned in professional development?
  • How do student results from trying new methods impact the type and frequency of PD offered to teachers?
  • How does implementing a new lesson or instructional method impact teacher satisfaction or overall morale?

This definitely isn't exhaustive, but it's a start. There are some others floating around my head that I can't quite verbalize yet. Much of what I'm interested in surrounds teacher intent to join PD, their actual attendance, and then, most importantly, their implementation of the methods and techniques learned together. What kinds of prompts or supports are needed to ensure follow through?

At face value, it seems collaborative action - longitudinal groups of teachers - working together has a high impact on implementation. But, given time constraints (including perceived time restrictions) on the part of teachers, this is hard to get off the ground at a systemic level during the school day.

The district as a whole is ripe for this kind of problem solving. Department and cross-department PLCs are forming and they are given freedom to choose how to spend that time. Perhaps a good way to start is to identify a team at each building willing to go through a more formal process. While their focus is on student improvement, I'm more interested in the supplemental activities I can provide as a coach to develop the action research mindset of the teacher.


Featured image from Unsplash by David Papillon

A Case for Pi

I've never had a case for my Raspberry Pi because...well...I just haven't.

One of our schools recently purchased all kinds of STEM stuff and I've been spending some time learning how to use the 3D printers, drones, along with a bunch of Spheros. I've used the Spheros a bunch and while I've 3D printed in the past, I've not gone through the whole process by myself. Today was the day.

We have Flashforge Finder printers which, compared to others, are a _breeze_ to use. They're compact, easy to maintain, and print well (with one exception, but I think the extruder is a little blocked). I grabbed a [Thingiverse model](https://www.thingiverse.com/thing:2078231) for the sake of time and got started.

My biggest problem was using the wrong software. I grabbed [Slic3r](https://slic3r.org/) to do the print rendering because it's what I'd used in the past. But, for some reason, I couldn't get the print bed size to set correctly, so the prints were going off the edge. Then, I realize that Flashforge has their _own_ slicer, and once I installed that, it was all good.

The bottom print file was up and off, no problem. The upper half of the shell caused me some issues because the print file had it oriented as if it were fully rendered.

![This didn't work.](https://photos.ohheybrian.com/uploads/big/58a773c82e4e96c414cf3eee5f9bd84d.png)
*[Photo](https://photos.ohheybrian.com/#15436012063980/15436074451036) CC0 Public Domain by me*

I flipped it upside down and added a bigger print footprint and it was finally able to start running (after realizing an extruder was bad and changing machines).

Three hours later, I had two halves of a nice little case for the nice little computer.

![Two halves finished printing.](https://photos.ohheybrian.com/uploads/big/76abfa2702308fc1e4594968a3f562fb.jpg)
*[Photo](https://photos.ohheybrian.com/#15436012063980/15436079798027) CC0 Public Domain by me*
![Two halves make a whole case.](https://photos.ohheybrian.com/uploads/big/99b6dac4bdf18f58d50277fdfee88934.jpg)
*[Photo](https://photos.ohheybrian.com/#15436012063980/15436079697976) CC0 Public Domain by me*

Server Hardening and SSL

Last night, I got [a self-hosted photo sharing site](https://photos.ohheybrian.com) up and running on my raspberry pi 3. You can see more about that process [here](https://blog.ohheybrian.com/2018/11/forget-the-mac-mini-bring-on-the-raspberry/).

Putting it on the real, live Internet is scary. Securing a server is no small task, so I took some steps based on [these tips](https://serverfault.com/questions/212269/tips-for-securing-a-lamp-server) to make sure I don't royally get myself into trouble.

(I have a stinking feeling that posting this exposes vulnerability even more, but _c'est la vie_.)

To start: new user password. Easy to do using `sudo raspi-config` and going through the menus. It's big, it's unique and no, I'm not giving any hints.

As for updating the OS, I have a cron job which runs as root to update and reboot every couple of days. Lychee is [active on GitHub](https://github.com/lycheeorg/lychee) and I've starred it so I'll get updates with releases, etc. I also took some steps to separate the Apache server from the OS.

Putting a self-hosted server online requires port forwarding. That involves opening specific ports to outside traffic. I only opened the public HTTP/HTTPS ports. Several sites say to open SSH ports, but I think that's where I feel very timid. I don't plan on running anything insanely heavy which would require in-the-moment updates from somewhere remote. (There's also the fact that my school network blocks SSH traffic entirely, so there's even less reason to enable it.)

Once the ports were open, I had to find my external IP address and update my DNS Zone records on [Reclaim Hosting](https://reclaimhosting.com). By default, Comcast assigns dynamic IP addresses so they can adjust network traffic. Most tutorials encourage users to request static IPs for home servers, but others say they've used a dynamic address for years without issue. I'll see if I can work myself up to calling.

Anyways, I logged into my cPanel and added an A record for a new subdomain: [photos.ohheybrian.com](https://photos.ohheybrian.com) that pointed to my public IP address. The router sees that traffic coming in and points it at the Raspberry Pi. I tested on my phone and, hey presto, it worked.

Opening HTTP/HTTPS ports came next. It's easy to get unencrypted traffic in and out. But, like the rest of my sites, I wanted to make sure they were all SSL by default. I could't assign a Let's Encrypt certificate through Reclaim because it wasn't hosted on their servers. [The Internet came through with another good tutorial](https://www.tecmint.com/install-free-lets-encrypt-ssl-certificate-for-apache-on-debian-and-ubuntu/) and I was off.

First, I had to enable the `ssl` package on the Apache server:

```
sudo a2enmod ssl
sudo a2ensite default-ssl.conf
sudo service apache2 restart
```

Once it can accept SSL traffic, it was time to install the Let's Encrypt package, which lives on GitHub:

```
sudo git clone https://github.com/letsencrypt/letsencrypt
```

I then had to install the Apache2 plugin:

```
sudo apt-get install python-certbot-apache
```

From there, the entire process is automated. I moved into the install directory and then ran:

```bash
cd /usr/local/letsencrypt
sudo ./letsencrypt-auto --apache -d photos.ohheybrian.com
```

It works by verifying you own the domain and then sending the verification to the Let's Encrypt servers to generate the certificate. The default life is three months, but you can also cron-job the renewal if nothing about the site is changing.

After I was given the certification, I went to https://photos.ohheybrian.com and got a 'could not connect' error, which was curious. After more DuckDuckGoing, I realized that SSL uses a different port (duh). So, Back to the router to update port forwarding and it was finished.

There are several steps I want to take, like disaggregating accounts (one for Apache, one for MySQL, one for phpMyAdmin) so if one _happens_ to be compromised, the whole thing isn't borked.

---

_Featured image is They Call It Camel Rock flickr photo by carfull...in Wyoming shared under a Creative Commons (BY-NC-ND) license _

Forget the Mac Mini, Bring on the Raspberry

This weekend I decided to try and tackle [turning a Mac Mini into a server to host my own photos](https://blog.ohheybrian.com/2018/11/reviving-the-mac-mini/). Well, that turned into a real mess and I abandoned the idea after I had to disassemble the computer to retrieve a stuck recovery DVD. We went all kinds of places together, but this Mac couldn't go the distance with me this time.

So, I grabbed the semi-used Raspberry Pi 3 that was working as a wireless musicbox on our stereo (kind of) and gave it an overhaul. I removed the [PiMusicbox OS](http://www.pimusicbox.com/) and went back to a fresh Raspbian image. (Actually, I only grabbed the Lite distribution because I won't need to go to the desktop. Ever.)

I wanted a basic LAMP (Linux - Apache - MySQL - PHP) stack to run the website, specifically because the end goal was to have [Lychee](https://github.com/LycheeOrg/Lychee) installed and running on a public space. I relied on two _really good_ tutorials to help me through the process.

The first, written by a guy named Richie, is a [full-blown, step-by-step guide](https://pchelp.ricmedia.com/setup-lamp-server-raspberry-pi-3-complete-diy-guide/) on all the software setup. He even uses WordPress as his thing-to-install-at-the-end, so that's a bonus. It's written for non-technical people and isn't just a wall of command line code to type in. He had explanations (why does he always use the `-y` flag on his install commands?) and screenshots of what to expect. Really superb. If you're looking to try setting up a local server (available only on your wifi network) or have students who want to try, this is the place to start.

Once everything was going, I went to the GitHub project and used a quick command download the package into the Pi:

`wget https://github.com/LycheeOrg/Lychee/archive/master.zip`

and then unzipped the project:

`unzip master.zip`

This put all of the source files into the `/var/www` directory on the Pi, which becomes the public space. For updates, I can just use `git pull` in the directory and I'll get those updates automatically. A cron job could even take care of that, so double bonus.

I was able to go to my internal IP address and see the setup prompt. I signed into my MySQL admin and I was off.

CC0 by Brian Bennett

Photos are organized by album and tags, so you can quickly search for items. I uploaded an old photo of my wife, just to see if it would accept files.

CC0 by Brian Bennett

There's another option I need to dig into that says "Upload from Link," but I'm not quite sure what that does yet. In the short term, I can start uploading photos here rather than Flickr.

The second article had some hints about how to get the server visible to the public. Your modem and router take a public IP address from your ISP and convert it into something you can use in the house. So, getting the Pi up with an IP address is easy to do and use, but only if you're at home. Making it publicly available requires two things:

- Some serious guts (this was the part I was most scared about)
- Some IP address and DNS work (potentially)

RaspberryPiGuy, who apparently works for RedHat, has a guide on [taking your server public](https://opensource.com/article/17/3/building-personal-web-server-raspberry-pi-3). I added a couple more packages to help with security, like fail2ban, which blocks an IP address after too many login attempts. I'm also going to split my network one more time so my home computers are sequestered from this little public slice. I found my public IP address on [this site](https://www.iplocation.net/find-ip-address) and then edited my router to forward traffic to the **public** IP (my house) to the **Pi** (the internal network IP).

I was able to use my phone on 4G to go directly to the public IP address and see public photos in my library, so mission accomplished for tonight. The next steps are to do some DNS forwarding so you don't have to memorize an IP address to see pictures. Some other considerations are to get a static IP so those DNS records don't get messed up, but I have to work up to that call to Comcast.

---

Featured image is Looking Through the Lens flickr photo by my friend, Alan Levine, shared into the public domain using Creative Commons Public Domain Dedication (CC0)

Reviving the Mac Mini

My wife bought a Mac Mini toward the end of college that has been sitting in our basement pretty much since we went to Korea in 2009. I've been wanting to do something with it for a while and with Flickr changing its accounts, now seemed like a good time.

I was looking for photo sharing alternatives to Flickr, mostly because I can't afford a pro membership and I'm already over the 1000 photo limit being imposed in January. I came across [Lychee](https://github.com/LycheeOrg/Lychee/), which is essentially single-user, self-hosted photo management. (Check out their [demo site](https://ld.electerious.com/) - it's pretty impressive). My home photo collection could also stand being backed up somewhere more consistently, so my goal is to convert the mini into a self-hosted photo sharing site so I can continue to post out on the web and have a backup at home.

*cracks knuckles*

I set up in the dining room and got started.

I have to say, it was pretty amazing plugging in this computer, which hasn't seen use in nearly a decade, and watching it boot up as if I had used it yesterday.

Macs have [long-had web hosting built right in](http://www.macinstruct.com/node/112). Apache and PHP are included by default and it's easy to install MySQL for databasing. I was hoping to go the easy route and just use the default tools. LOL.

Lychee requires PHP 5.5+. The mini (late 2006 model) has PHP 4.4 and Apache 1.3 installed. No good. I started searching for [ways to upgrade both](https://jeromejaglale.com/doc/mac/upgrade_php5_tiger), but the recommended site with ported versions for old copies doesn't exist anymore.

So, I grabbed another Mac for more efficient Googling. There was also beer.

The best option, I think, is to boot into Linux rather than OSX 10.4. So, I started researching Debian distributions that would work on older hardware. My plan was to wipe the entire hard drive and dedicate it to server resources. When I landed on the Debian wiki, they had a page specifically for older, Intel-based Macs. This line caught my eye:

The oldest Mini (macmini1,1) is typically the most problematic, due to bugs in its firmware. When booting off CD/DVD, if there is more than one El Torito boot record on the disc then the firmware gets confused. It tried to offer a choice of the boot options, but it locks up instead.

That's not good. I have two choices: I can partition the drive to prevent losing the entire machine or I can go for it and hope that the OSX recover DVD I have in the basement still works. (I'll probably partition, just to be safe.)

Luckily, two lines later, the Debian wiki notes that specific builds are now available which only include _one_ boot record, which solves the problem. [A quick 300MB download of the Mac-specific distribution](https://cdimage.debian.org/pub/debian-cd/current/amd64/iso-cd/) later and I'm ready to burn then disk image to a USB drive with [Etcher](https://github.com/balena-io/etcher).

Next steps are to actually do the Debian install.

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).

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/)_