Google VR. Ohhh, shiny.

December 2, 2016

I admit it, I like shiny objects.  A new shiny object comes along and I have to go look at it and play with it.  I like shiny objects in my programming classes.  Shiny objects attract students.  My latest shiny object is Unity.  I have been poking through the tutorials as mentioned in my previous post and decided this is one of the best shiny objects I have ever seen.  Then I stumbled on Unity with Google VR (Google Cardboard apps).  It is now so shiny it is blinding.  I found this tutorial (https://www.youtube.com/watch?v=AFGOhZJwoFw) on how to make Google Cardboard apps.  Ohhh, super shiny!!!

Now the question is: is this really programming or Computer Science?  I have to admit that I do not think it is the traditional concept of either.  But oh boy does it get the kids interested in the field.  It gets the kids wondering what else is out there that can take them in interesting directions.  Traditional programming and CS is not for everyone.  Just look at typical class sizes in a high school Java or Python course.  The percentage is real low.  I have said many times I am not training programmers in my classes, I am teaching kids how to learn to program.  (I am not a good enough programmer to teach programmers.)  I want my kids to come out of my classes saying “That was interesting.  Maybe I will take a closer look at CS/programming to see what else is out there.”  Unity is a hook.  Set the hook deep enough and maybe they will stay with it.  With shiny objects like this I can hook a whole lot of kids that normally would never look in this direction.

I will not retire my Python and Java courses, they still have their place for the kids that are really into programming but with Unity and Lumberyard (my next learning project) I can get a whole new population of kids thinking.

Unity again

November 11, 2016

I found a nice set of YouTube videos by Dawn Dupriest (search YouTube for “Unity and VR in the classroom”) on how to make a very basic maze game using Unity.  She has four videos that do a simple job of walking through the basic process.  There are a few glitches were Unity was not cooperating (the collision box handles were missing when I tried to resize the box but a little Google work found the issue) but the videos themselves were spot on.  I am going to throw this at four of my sharper students and see how kids handle it.  There is such a big difference from me working through these things with my years of working through things, and their limited number of years of working through things.  If I am going to give this a try next semester I want non-experienced kids doing a pre-run.

A couple of years ago I tried using the tutorial on the Unity site.  Too many leaps of assumed understanding.  I see they have been redone so after completing this series I will try them again.  Too many tutorials are just a list of tasks without any explanations.  This is fine if you do not want to do more than the tutorial.  A little bit of “why” goes a long way in really understanding what you are doing.

I already found one issue.  I have the kids working on some school tower computers because I can setup dual monitors on them.  The towers were on the school domain and only admins can save on domain computers.  Opps.  I pulled the computers off the domain and just made a workgroup as the easiest solution.  This is not an issue with BYOD or the school laptops (school laptops are not in the domain) but dual monitors is a must when doing video learning.  My older laptops have a VGA output so I could have dual monitors on them but the newer i5 laptops have HDMI only.  I do not have HDMI monitors, adapters or cables.  So towers it is.  Something to consider if I want to do a Unity class.

Unity is just such a tempting environment to teach.  3d objects, game feel, C#, make cool things; what more could you want to get kids into coding and problem solving?  Admittedly it looks and is pretty intimidating, lots of things going on and lots of stuff on the screen but for the sharp kids I think it is doable.  I just want the kids to learn how to learn.  Follow directions, read, and when the tutorial and book do not seem to jive with what is happening on the screen, to be able to scratch their head and figure it out.

First Game Programming Course and misc stuff

November 1, 2016

This semester I offered a game programming course.  Fourteen students signed up, freshman to seniors.  Only one girl.  I started the course using Gamemaker with Ben Tyers “Gamemaker Studio Course: Space Shooter – Level 1”.  The book walks the reader through making an Asteroids-like shooter game by using the coding language built into Gamemaker.  (Gamemaker also has a drag-and-drop programming environment.)  The book is intended to be used as a high school level text book so the progression level is supposed to be somewhat gradual.  We got through Lesson 3 and I decided to switch to a different language.  There was just so much left out of the book it was extremely hard for the kids to do any of the assignments.  The book would show the basics of programming but would not give enough on how to use what was learned.  I was also not to enamored by the Gamemaker programming environment.  Lots of moving parts and not enough “why”.  I do think that given enough time to write my own material to add to the book a course could be designed around Gamemaker.  It does teach programming with tradition line code but I am not sure the other requirements for building the game using the Gamemaker interface would lead to being successful in other, more tradition languages encountered at the college level.

So we are going with Corona for a while.  Corona SDK is a very traditional programming language for making apps and games for Android and iPhones.  Corona is just a front end for the language Lua.  Corona adds the physics and handlers needed for a touch screen gaming environment.  Like Gamemaker, Corona is just 2D games but the coding is much more to my old school liking.  I will be using Brian Burton”s “Beginning Mobile App Development with Corona”.  Again the book is intended to be a textbook so there are assignments and discussion.  Compared to Tyers book the chapters are much more complete with fuller explanations of the ”whys”.  Being a more traditional language I think it will lead to a better understanding of other traditional languages like Python and Java.  (These two seem to be the big two when it comes to programming in intro college CS courses.  Why do I not just teach these two if I am trying to prepare kids for college you may ask?  Because making games is fun and the course title suckers the kids into my class.  Yes, it is possible to make games with Python and Java but the level of difficulty seems to be a lot higher and the games are not as cool.  Some of the students are a bit surprised when they discover making a game involves much more work than playing a game.  Surprise!)

I have been working through Burton’s book for the last few days.  All I can say is it works.  You cannot ask for much more from a book.  As can be expected there is a lot of explaining to do to overcome the “assumptions” authors seem to make but so far nothing major.

I am going to do a coding club with 6 – 8 graders for 6 days once a week after school starting this month.  I want to do Corona but using the book is out.  Just not exciting enough for middle school and a bit dry.  So I started digging.  Now a good place to dig is the product’s website.  I had a successful dig.  Under Learn > Getting Started > Create an App is just what a middle school coding club needs.  Build this simple little game where you touch the screen rapidly to keep a balloon from touching the floor.  The really nice thing about the tutorial is that it explains every line of code.  There is a second tutorial on how to build a simple asteroid shooting game and again it is perfect for middle school.  It is definitely a step up from the balloon game but not so bad it is going to bury them.  Since I do not deal with middle school kids much these little tutorials are going to be life savers.  Building little phone app is also a really big hook for when these kids show up at the high school.  Sort of an introductory drug.

It is amazing how the number of students increase when you change the name of a course from “Introduction to Python” to “Introduction to Game Programming”.  Now I am sure there are some experts out there that will flap their hands above their heads and protest that I am not teaching language X so my students will not be ready for a college programming course.  Nope, I am not.  I am teaching them why programming is interesting and why it can be fun.  That might temp them into a college programming course with a positive look at programming.  I do have a book on writing games in Python.  There is just something different from writing a number guessing game and writing an asteroids game you can put on your Android phone.  Maybe that is just me and every middle and high school kid in the world.

I have been looking at different editors for Corona.  I have used Outlaw IDE the most but I notice it has not had an update since 2014 and the company seems pretty dead.  I am now looking at ZeroBrane and Sublime Text.  Neither is quite as nice as Outlaw for file management (Outlaw is drag and drop) but both are active products.  Sublime is definitely the most visually pleasing of the three.  I am going to need something easy for 6 – 8 graders to use.  “Full featured” usually is not a good thing with beginners.  (One of the reasons I like Small Basic is the editor is as simple as a brick.  Nothing fancy, just enough to do the job.  I was considering using Small Basic for the coding club but writing a phone app that they can actually put on their phone pegs the cool meter to the super cool pin.)

I cannot believe I volunteered to do that 6 – 8 coding camp.  I have enough trouble communicating with high school kids.  Oh well, it is important to have the occasional social challenge every now and then (besides being married that is).

Teaching with Windows 10

October 13, 2016

This summer I switched the school computers from Windows 7 to Windows 10 with the thought the kids should use what they are most likely to encounter in the “real” world.    In other words, I had good intentions.  It is an operating system, what could go wrong?  Zoiks.  The updates is what could go wrong.  I use mostly non-domain computers in my classes.  Loaner laptops the kids can take home or the kids use their own laptops.  Let it sit for a day or two, turn it on and there is an update downloading.  Some of the kids know how to turn off the auto-update feature, some do not.  I have tried to turn off the auto-update on the domain computers through Group Policy but for some odd reason it does not do to much.  This is one of those lovely unplanned things that can throw a class schedule off.  Today one of the kid’s loaners started an update when he turned it on at the beginning of class.  It was still cranking 90 minutes later.  He did not get much done.

Interruptions like this are in my programming assignment due-date planning.  All my due dates are “to be determined”.  Not a big deal but it can mess with the class progression and it does throw off the kid’s “flow”.

Automatic updates should never be the default.  They should not be weekly.

Techs all over the state are complaining about this feature of Windows 10.  Labs being useless while Windows 10 updates take over.

I like Windows 10.  I just wish Microsoft had written it right the first time so they do not have to keep updating it.  Or at least cut the updates to once a month.

The obvious solution is to have a WSUS server so the updates are not acquired by the client computers from the internet but from the WSUS server and the WSUS server is scheduled to hand out the updates at a convenient time, like midnight on Saturday.  Building a WSUS server is one of those little tasks I have not had the time to learn how to do.

Death of a Server

October 1, 2016

Tuesday I had a server die.  The hard drive was making a loud clicking noise which is a bad thing for hard drives.  (I had a student tear it apart just out of curiosity.  The read/write head had actually scratched the disk.)  It was not an important server; it was the student files server and most of the kids are on the cloud.  The box itself was an old Dell Optiplex 320 with a single drive running Windows Server 2008.  It was not really intended by Dell to run as long as it did, I figure about 6 years as a server without a break.  I thought I had a mirror drive in the box.  So much for thinking and not checking.  Originally I was not even going to replace the server but two teachers did use the server for students to turn in homework.  One of the teachers was the elementary tech teacher.  K-4 do not have Google accounts so this is how she collects their computer work.  For her this is an excellent solution so I had to replace the server.  Not a big deal box-wise.  I have a staff file server that is not used by many of the staff (the cloud again) so all I have to do is create a folder, share it and point the student’s domain policy at that folder with a drive mapping.  Piece of cake.  Yah, right.  I do this kind of stuff once in a blue moon.

The staff server is Server 2012.  Server 2012 has a slick process for mapping users to drives.  I tinker for a couple of hours.  Now I can do this mapping one student at a time by manually putting the folder address in their policy one at a time.  A real pain.  I continue to tinker with no luck.  I probably have some folder permission buggered up.  I tinker some more and finally resign myself to pasting the mapping into every student’s profile.  Bummer.  I am sitting there looking at this long list of names that I am going to have to do one at a time when I am struck by a moment of brilliance.  Can I highlight the kids and paste in a generic username and have it work?  Yup, I can.  Two minutes later I am done.

So here are some lessons learned.

  1. Mirror a spare drive in these non-multidrive servers.  I will check the staff server Monday.
  2. File permissions are an ugly mess when trying to learn them by trial and error. I need a class.
  3. I could have done the paste thing three hours earlier. Sometimes doing what you know how to do even if it looks tedious is better than trying something new that you do not know how to do.

I have been the school’s sole techie for 10 years and I am always amazed by how little I really know about the job.  There is always something like this coming up that takes me hours to figure out when there is a 5-minute solution if I knew what I was doing.  Every time I do something like this I learn new stuff but by the time I have to do I again I have forgotten what I learned.

I have had to learn this job by 100% on the job training but with all the headaches, stress from lack of knowledge, lack of time to learn the job properly and duct tape solutions due to lack of budget this job is still more fun than a box full of kittens.

Computer Programming: Free stuff is everywhere

September 27, 2016

October 20th I am giving a presentation at the annual Montana Educators Association conference.  The topic is “Computer Programming:  Free stuff is everywhere”.  (Originally I was going with “Computer Programming: Free shit is everywhere” but it simply did sound professional and at all costs I must sound professional.  I also do not think the organizers would have gone with that title.)  I usually do not get into doing presentations like this.  I have a tendency to get enthusiastic which means I start waving my arms, jumping around, speaking excitedly and overall looking like a stone-cold idiot.  But I could not resist.  The reason I am submitting myself to a demonstration of public stupidity is simple.  For some odd reason many Montana schools have decided teaching CS and/or programming is an expensive proposition and therefore not introducing it into their curriculum.  I, on the other hand, consider it the cheapest subject to teach.  My feeling is the only expense that falls on the budget is the cost of a teacher.  Admittedly this is not trivial, in fact just finding a teacher qualified (or if not qualified at least willing to learn) to teach CS/programming can be a challenge for schools, especially out here in the boonies of Montana.  The other expense they seem worried about is computers.  Are there high schools out there without a computer lab?  Maybe but not likely.  Do the kids have their own laptops?  Usually.  If a school does not have the hardware (available lab or shortage of student laptops) there are solutions.  Montana has a State recycle warehouse with all the tech stuff available for free.  Computers, laptops, monitors, keyboards, etc, etc.  The stuff is free.  No, it is not new but a 5-year-old computer works just fine for almost all programming applications.  I would assume most states have the same warehouse somewhere.

So I want to expound on why I consider CS/programming such a cheap subject to teach.  Since most schools think CS and programming are the same thing I will look primarily on programming assets.  This post is just the beginning of me organizing my thoughts so I can prepare something that will not reinforce the appearance that I am in idiot.

In the beginning there was the programming language.  How many free (and good) languages are there out there?  Let me count the ways.  No, I won’t, there are too many.  Here is a list of the ones I have used that are worth the trouble of using or free applications that might be worth learning.  Some of these are what I would consider suitable for an intro programming course.  Some are suitable for advanced courses.  ALL of these have free versions and have free or dirt cheap learning materials available somewhere.  If it isn’t free or really, really cheap it does not fit my budget.

Logo – Lots of them out there.  Beginning programming.

Scratch  (https://scratch.mit.edu/)  –  Beginning programming.  Designed for teaching.

Alice  (http://www.alice.org/index.php) – Beginning programming.  Designed for teaching.

Touch Develop  (https://www.touchdevelop.com) – Beginning to pretty advanced programming.  Designed for teaching.

Small Basic  (http://smallbasic.com/)  – Beginning programming.  Designed for teaching.

Kodu  (http://www.kodugamelab.com/)  – Beginning programming.  Designed for teaching.

Visual Studio Express  (https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx) Intermediate to professional programming.

Corona/Outlaw (https://coronalabs.com/ and http://outlawgametools.com/game-dev-product/outlaw-ide/) – Intermediate to professional programming.  Phone apps.

GameMaker  (http://www.yoyogames.com/gamemaker) – Beginning  to intermediate programming.  Strictly game authoring.

Python/Pyscripter (https://www.python.org/) Beginning to advanced programming.  Designed for teaching but can be used for professional work.

Java – Intermediate to advanced programming.

Unity or Unreal Engine (https://unity3d.com/  or https://www.unrealengine.com/what-is-unreal-engine-4) – Intermediate to advanced programming.  Game authoring.

MIT App Inventor  (http://appinventor.mit.edu/explore/) Beginning programming.  Designed for teaching.  Phone apps.

 

Again all of these have free versions and all of them have free tutorials or teaching materials.

First week woes

September 1, 2016

I am not going to make it through the year, maybe not though the week.  This is the first week of the year and so far the Google Drive on my class laptop has died (folder is empty and it was not empty last week), some of the wireless APs in the elementary school do not want to work and I think I have narrowed it down to the quality of the switch they are attached to (???), the bells at the elementary school are ringing at random times even though the time is set correctly and the schedule seems to have downloaded correctly, and now something is doing a massive download on my network which is killing all the bandwidth.  Oh, I also am teaching one more class than usual, the school has expanded the day-care to a new site 10 blocks away that I am apparently supposed to tech and, worst of all, I have not had time to fill my beer growler in a week or so!  Woe is me!

A wing and a prayer,

August 23, 2016

Students walk in the door Wednesday.  I am not ready.  I say that every year and it is true.  My stuff for my classes is not ready and the computers for the school are not ready.  I spend all summer working on the IT stuff and when school is about to start it seems nothing is ready to go.  This year I can blame it on Windows 10.  I upgraded from Windows 7 to Win 10 this summer.  Not really that big of a deal.  I and my student tech aide wander from computer to computer and run an install, then cut and paste the Win 10 key and POOF, Windows 10 is installed.  Not.  For some odd reason if you let the computer with the newly installed Win 10 sit for a few days (not an exact measurement) then turn it back on it has the “Activate Windows” warning on the desktop.  I gave it the Win 10 magic key once so it wants it again?  I give it the magic key again and it is not happy.  It says wrong key.  It is the only key I have.  Now what?  I tinker.  (School techies do that a lot.)  After a little hair pulling and a lot of luck I find the solution.  Give it the Win 10 key then give it a Win 7 key.  In that order.  It is happy.  I have not the slightest idea why this should work but it does.  So I am back to legging around giving every (well, almost every, the pattern is not consistent. Some computers are happy without the reinstall of keys.  Go figure.) computer the weird key install routine.  The computers already had Win 7 so why need the Win 7 key again?  Weird.  This job is just so interesting.

For my classes I am just going to have to wing it.  The senior stats and the sophomore Algebra 2 are no big deal.  I have done them before so I know what I have to work with in the way of resources and syllabi so winging it is not a problem.  The Game Programming class on the other hand is going to be an issue.  I had planned on working through the book I am going to use during the summer to work out the bugs.  So much for that plan.  I do have a scheme but no syllabus or weekly plan.  I have never taught the course or used the Gamemaker software extensively so this will be a challenge.  Just what I need, a challenge.

I have never in the 30 years of teaching programming ever been prepped successfully for a first time programming class.  The couple of times I laid out the course in detail the detail fell apart.  Computer issues, students being smarter than expected (I have never had students been dumber than expected), projects I thought were easy turn out hard, projects I thought were hard some smart student finds an easy way to solve, and multiple other confounders.  So I am used to winging it.  I have been lucky so far in that I have never had a course crash and burn.  I have had one catch fire once because the tutorials I had planned to use turned to poop after the third one but the kids and I managed to survive without the tutorials.  You have to be fast on your feet if you are winging it (Yes, that is a mixed metaphor but if Shakespeare can do it so can I!).

So even if I am not ready school is going to start and we are going to have fun and on the way we are going to learn some stuff.

The exciting world of school IT life.

August 5, 2016

I have decided to re-wire the elementary school lab.  All the network cables were just stapled to the walls.  Really tacky.  (There is a pun there.)  Now this seems like an easy task, get cables from computers on tables to a switch on a shelf.  No big deal right?  That is what I thought too.  Since it is an elementary lab all sorts of weird things come into play.  The cable cannot be hung under the tables.  The first graders feet swing there.  I cannot tape them to the bar at the back of the tables because the third graders rest their feet there.  So I am back to the walls.  Now realize this is a very low budget operation.  No nifty cable channel at several dollars a foot to hide the cables in.  I found some stick-on cable hangers at Home Depot and a couple of I-bolts to screw into the wall to tie the network cable to at the switch.  Not elegant (ever notice how elegant and price seem to have a bit of a direct correlation?) but functional and better than cables stapled to the wall.  The cables will still be hanging on the wall but now they will be an organized mess.  I also bought some rainbow colored Velcro straps to bundle the cables with.  Add color to ugly and it is still ugly but now it is ugly with pretty colors.  The lab has a couple of islands of computers.  The network cable used to be stapled to the ceiling and just hang down to the islands.  Again it lacked visual appeal.  I am going to blow the big bucks here.  $30 gets me 15 ft of that rubber strip that cables can be stuffed in to run across the floor to the wall.  Much better than the ceiling dangling motif.  I am also going to add a couple of switches to the tables to reduce the number of cables running around the room.  I have a lot of 8-port switches in my stash.  I can get them free from the Montana State surplus warehouse.  (This is also where I get my computers, monitors and printers.  Free stuff rules.)  I am going to actually make custom cables for most of this operation.  Cables cut to the right length will help a lot to get rid of the cable mess.  Putting RJ-45s on the end of cat-5 cable can be a pain but after the third or fourth one it becomes an art.

Now a public school with a real budget would just buy wireless cards for the towers and be done with cables completely.  I am going to do this lab for about $50.  That we can afford.

The decision to redo the lab was started on a really weird issue.  Half of the elementary lab suddenly decided it would not see the network.  One wall of computers was fine, the rest not so fine.  After an hour of trying to find who was plugged into what because I thought it was a bad cable in the mess of cables I just started unplugging everything.  When I plugged it all in everything came back up for a couple of seconds then lost the internet again.  Let’s see.  It worked fine last week and it does not work fine this week.  What has changed?  I still do not know what started the problem but I think it was an IP conflict somewhere between two computers in the lab.  Why they suddenly decide to be unhappy now makes no sense but whatever.  After changing some computers to dynamic IP addressing the problem seems to have vanished.  I need to check every IP address in the lab and match computer number, computer name and IP just to get things organized again.  After I get the cable mess less messy.

Oh, the exciting life of a school techie.  No expensive certifications or CS degrees needed.  Just the ability to unscramble cables and spell “ip”.

It is over and it has started.

August 1, 2016

Well the Butte 50 mountain bike race is over.  I did not make it to the finish line.  I had to quit at 30 miles.  I started cramping at about 20 miles and it reached the point where I could put no pressure on the pedals.  I had to walk everything that was up.  The water and electrolytes were OK; the hot weather conditioning was not.  It was in the 90s which is HOT for western Montana.  I am a bit gimped up right not.  The cramps ripped the heck out of my quads.  Stairs are a real joy at the moment.  A large number of people had major heat issues.  Next year I will either do the 25-mile race or help with the support team.

So I am back in the office today trying to figure out how I am going to manage the next year.  The elementary school has moved the pre-school to a church a mile or so away.  Apparently I am their tech support.  Of course the powers did not discuss the possibility of me being able to support them with a half-time tech schedule but I am used to not being in the loop for things that involve tech support.  That would make life too easy.  We shall overcome.  Besides, how much tech support can a pre-school need?  Cackle!!

I have to start working on my gaming course this week.  I have about 13 kids signed up for the course and some of them are going to require I actually know what I am doing.  Smart, ambitious kids can be such a pain.  No more naps for me.  I have a warm and fuzzy as to what I am going to do but that really is not enough for the first day.  I am going with Gamemaker using the Gamemaker Language (GML).  There is no drag-and-drop, the kids actually have to code.  GML is very C-like with semicolons.  It is close enough to many languages that if they have to use another language they will have a good foundation.  I looked at a large number of options but considering the make-up of the students (freshman to seniors and zero to two years of programming experience) Gamemaker seemed to fit the best.  I wanted something that they actually had to write line code, had a book to act as a guide, would result in some usable game products and would be fun for the kids.  I looked at Unity and a couple of other like game engines but the learning curve looked a bit steep for a first try.  Gamemaker also does not require much in the way of a computer.  An important factor when the kids are having to use their own laptops.  All my CS courses require the kids have their own laptop or do a long term loan from the school.  No high tech CS lab here with all the stuff needed already installed.  We have all sorts of fun learning install issues.  CS down in the mud.

Time to run to Best Buy and get a DisplayPort to HDMI adapter.  Lenovo computers do not have HDMI output any more.  Learn something new every day, especially when you look all over the computer trying to find the HDMI port on a new computer.  School IT is never boring.