I was asked recently to write an Ed Tech Philosophy Statement. Here is what I came up with:

I have had the pleasure of working alongside some really great teachers. In my observation, the best teachers are those who make a sincere effort to understand, respect, and honor their students’ individual abilities and learning styles. They find ways to make every lesson resonate with each student. They also make sure they are not just teaching disconnected facts. Instead, they attempt to help students understand context and underlying systems so they can bring isolated facts together into a cohesive, sensible whole. Finally, they make learning fun and engaging by planning innovative lessons and activities that stimulate students’ innate curiosity. 

I have seen technology used poorly in schools and I have seen it used well. When it is used well it doesn’t replace the elements of great teaching I listed above. Technology, if used appropriately, can actually enhance a teacher’s ability to recognize, reach, and engage students. The key question when planning curriculum with technology integration should be: Does this enhance teaching and learning? If we are just checking the technology box rather than thinking hard about how to integrate technology in innovative, effective ways, it will not be a useful exercise. 

Schools will continue to be transformed by the pace of technological innovation whether they plan for change or not. Figuring out how to stay ahead of this transformation rather than just keeping up, or even falling behind, is a major challenge. It is essential to stay focused, align on the use of technology that can enhance the core mission of the school, and find ways to give teachers tools that will augment their educational practice without distracting them or their students from the simple goal of learning.


I'm co-teaching the journalism/yearbook class this year. My part of the class focuses on graphic design and page layout. When I was studying design I had a grumpy old teacher who learned his craft from some of the original Bauhaus people in Chicago. Of course, all modern design work is done on computers but he didn't let us touch a computer for the entire first semester. Instead we practiced all the classic techniques of cutting with X-Acto knives, pasting things onto poster board, hand lettering, drawing logos, etc.

One of the most useful assignments for me was a cut/paste exercise designed to teach us about the grid system. I decided that before I would let the class start designing on computers I would at least make them spend one day doing some real, physical cutting and pasting. I
gave a short demonstration and showed them a video about old-school graphic design technique. Then I gave them poster board, pencils, T squares, glue sticks, cutting tools, and old magazines. The assignment was to draw a grid then cut out images and text from the magazines to paste into the grid.

The idea is to show students first hand how using a grid for layout makes a composition more coherent and pleasing to the eye/brain. They did some great work and I think the hands-on exercise got them much more engaged in thinking about the design process that jumping straight to the computer would have. Of course, they still wanted to listen to music on their laptops while they worked.



Our Lower School science teacher recently asked me to help her find a good system for creating a field guide for our campus. Our school is located in a semi-rural area on about 10.5 acres. There are lots of trees, flowers, bugs, and woodland creatures. I did some research and found a great site called iNaturalist. The have good IOS and Android apps that allow the students to roam around campus and take pictures of interesting flora/fauna. Once they take a photo they can add some field notes and save their observation. The observations are then uploaded to the iNaturalist site where other members of the community can comment and help make identifications.

The students used iPads from our cart and had a great time. One thing I learned from the first group was to spend time emphasizing that 'less is more'. The students tended to take a lot of pictures of the same things. With our second group we asked them to limit their observations and spend more time writing detailed notes.


I created this inventory management system because I couldn't find one with features specific to schools and without a lot of other unnecessary features cluttering up the UI.

The code is on Github here:

https://github.com/rabbitfighter/inventory

I set up a demo system on my personal website so people can try it out and see if it would work for them.

http://www.imipolex.org/inventory/

username: admin
password: admin


I ordered new Chromebooks for our 3rd and 4th grade classrooms this summer. The Chromebooks are going to stay in the classrooms so I needed to find a good storage and charging option. This is what I ended up with.

Copernicus Tech Tubs:
http://www.amazon.com/Copernicus-School-Classroom-Office-Version/dp/B00GFTAA6E/

Blue Lounge Cable Drops:
http://www.amazon.com/Bluelounge-Design-CableDrop-Management-System/dp/B004K2YBQI/

Self Adhesive Velcro (for power bricks):
http://www.amazon.com/gp/product/B00FQ937NM


The Economist Intelligence Unit (EIU) has published a report that attempts to identify key skills students need to learn now in order to be well prepared when they enter the workforce. The report was sponsored by Google and is based on polling of business leaders and students.

It's no surprise to me that the skills they recommend are communication, collaboration, and problem solving. It is difficult to predict what specific skills will be useful in twenty years but it's a safe bet that these general skills will prove useful in helping people adapt. I think there is a basic assumption embedded in this list of skills that students need to be encouraged to become adaptable, lifelong learners.

My main takeaway from the report is this sentence:
"Technology is changing teaching, but education systems are keeping up with the transformation rather than leading it."
While I'm configuring new computers and installing new networking equipment this summer I'm going to be thinking about how my school can lead transformation instead of just 'keeping up'.


I taught a beginning Python programming class this Spring using the Codecademy intro to Python curriculum (http://www.codecademy.com/en/tracks/python). The class went well and the students seemed to enjoy it. Here are a few things I would do differently next time though:

1. The codecademy curriculum is self-guided and each student can work at his/her own pace. However, I noticed some key concepts that most students had trouble with. I would give short presentations on the following concepts so that I could be sure everybody understood them and thus avoid frustration. It would be fun to do some 'unplugged' activities (a set of activities that teach CS concepts through physical action--http://csunplugged.org/) to help kids understand these ideas.

Variables -- Python is dynamically typed (variable types do not need to be stated when creating the variable). I don't think codecademy does a very good job of explaining this and I noticed a lot of confusion.

Functions -- Students didn't seem to really learn what a function is and what it is good for simply by reading the text.

Lists -- Also not well/thoroughly explained.

2. I would stop at the 'Advanced Topics in Python' unit and have the students work on real, hands-on projects instead. This could include projects with programming raspberry pi microcomputers, playing around with Sonic Pi (http://sonic-pi.net/), or maybe writing a simple game using something like pygame (http://www.pygame.org/).

3. It might be a good idea to introduce the students to Monty Python's Flying Circus via some curated youtube clips. My class was 7th and 8th graders most of whom have never seen Monty Python. The examples and activities use a lot of references to Monty Python sketches (this is a Python tradition) so it would be helpful for the students to have some idea of where the stuff is coming from.


This OS X command line tool is very handy. Every time I need it though I have to google it to remember what it's called. So, I'm making a blog post to remind myself. Hopefully it will be useful to others who happen across this post.

> sips -Z 200 *.jpg

The -Z tells to utility to maintain aspect ratio
The 200 can be changed to any maximum height/width (in pixels)
The *.jpg tells the utility to resize all jpg files in the current directory. This can be changed to *.png, *.gif, etc.

You can also change the format of a folder of images by running the following command:

> for i in *.jpg; do sips -s format png $i --out $i.png;done

This would convert all jpg images to png.





This is a great article. It offers some (much needed) historical context to the claims often made by school reform advocates that our education system is structurally analogous to the factory system as it existed over one hundred years ago. These same reform advocates often valorize educational technology as a means of radically changing our broken education system and reformulating it in a modern context:

I actually just heard a keynote speaker at the ATLIS conference a couple of weeks ago use the old 'our education system is hopelessly outmoded because it was modeled on the Prussian system of universal education which was specifically designed to educate the population for factory work' argument. 


I do not disagree that there are a lot of problems with education (preK all the way up to University) in the U.S. but I think we have to accept the reality that schools are not in business solely to teach abstract ideas. Schools are embedded in the social fabric of nations. They exist as much to provide socialization into a system of laws and norms as they do to teach kids math, reading, writing, etc. Eugen Weber outlines how schools came to serve this function in his seminal work "Peasants into Frenchmen: The Modernization of Rural France 1870-1914". Furthermore, schools do not have infinite resources. The structure of schools must always reflect the practical need for a small number of adults to manage a large number of children. Independent schools often have fewer students per teacher and so have more leeway to experiment. In public schools where teachers often have many more students per class, it is difficult to conduct school without resorting to strategies that may be reminiscent of factory style discipline. 


Having said that, I am currently reading a book by the keynote speaker I mentioned above that I would highly recommend:


http://www.amazon.com/EdJourney-Roadmap-Future-Education/dp/1118898583


Despite his possible misuse of the Factory/Education analogy, I think Grant Lichtman's ideas are really sound and well articulated in this book.



A Sample Card
Our teachers have a system of passing on information about students when they move up a grade. They use 5 x 8 cards with four sections (Social, Academic, Parents, Developmental) where they can enter notes and draw a circle with four quadrants filled with red, green, or yellow to indicate how a student is doing.

One of our teachers asked me to create a digital version of this since the teachers were tired of creating the cards by hand. I decided a simple web page with some javascript would work well. The teachers can type their notes into the text fields and they can click on the quadrants to cycle through red/green/yellow (this is the part that required javascript). When the card is ready they can print it and put it in the student's file.



The source is available on github: https://github.com/rabbitfighter/student_eval_card


I was asked by our tech teacher to set up WordPress sites for our 8th Graders to use for a final project. WordPress has a special mode called multisite that makes this fairly simple. With multisite you essentially have a single installation of WordPress but you can create multiple blogs within that single install each of which can have its own admin user, theme, content, etc.

Here is a basic set of steps for accomplishing this task (or how I did it anyway--there are many other possibilities). This process requires some knowledge of Linux server administration and probably some prior experience installing web apps under Apache:

  1. Set up a new Linode (https://www.linode.com/) and deploy an image to it. I used Ubuntu 14.04 LTS. I actually tried the WordPress stack script first but I didn't like the way it was set up so I just deployed a basic Ubuntu image. I chose Linode because I really like the management interface and I've found the service to be highly reliable. We run our main school website on Linode as well. 
  2. After setting up the new Linode I created a new A record in our DNS settings (studentblogs.ourdomain.org) pointing to the static IP address of the Linode and then waited a couple of hours for the new record to propagate.
  3. Install the LAMP stack. There's a good article on how to do this here: https://help.ubuntu.com/community/ApacheMySQLPHP
  4. Install WordPress. Here's a good article on doing that: https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-on-ubuntu-14-04
  5. Set up WordPress multisite: http://codex.wordpress.org/Create_A_Network
  6. After that is done it's a good idea to harden your server to prevent hacking: http://www.lampnode.com/linux/howto-harden-ubuntu-1404-after-installation/
  7. Now you can create users and sites.

Update: The students made some cool sites! Here are a couple of my favorites:


our sad old OD server
I recently took over the IT Director job at a school that had been without a full-time IT person for almost a year. One of the awesome gifts from the previous IT person was a ten year old iMac with 1GB of RAM acting as the Open Directory server for the whole school. It was running OS 10.6 (Snow Leopard Server).

I decided to just start fresh with a new mac mini running Yosemite. I needed to transfer all the student accounts to the new server though so I wrote a bash script for that purpose. The script pulls from a CSV file that has four columns: grad_year, first_name, last_name, user_name. Here is the script in case it is useful to anybody else:

The script is pasted below. Here is the github repo:

https://github.com/rabbitfighter/OD_user_migrate




#!/bin/bash
INPUT=student_list.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }

# set the starting ID to a number higher than the highest current userID
ID=1000

while read gradyear fname lname uname
do
echo "Creating: $fname $lname"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname
echo "Unique ID"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname UniqueID $ID
echo "fname"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname FirstName $fname
echo "lname"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname LastName $lname
echo "real name"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname RealName "$fname $lname"
echo "primary group"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname PrimaryGroupID 1026
echo "home dir"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname NFSHomeDirectory /Users/$uname
echo "password"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -passwd /Users/$uname "$uname"
echo "comment"
dscl -u diradmin -P your_dir_admin_password /LDAPv3/127.0.0.1 -create /Users/$uname Comment "$gradyear"
((ID++))
echo $ID
done < $INPUT
IFS=$OLDIFS