Saturday, January 10, 2015

NCSS 2015 - Day 6

Thanks @takafael for the use of the photo:
https://twitter.com/takafael/status/553389458255396864/photo/1

Excursion Day!

Today is a different format. No lectures and labs but tours of the big sponsors and lots of food. I didn't go on the tour this year because I went last year and was desperate to try to de-rust some of my python skills before the evening activity but i've polled some students and teachers for feedback. In general it was a fantastic day.

Morning: Went to Wisetech Global for second breakfast, a short talk and a tour. Wisetech Global are an Australian software and embedded systems company that helps companies to manage logistics of truck fleets and deliveries and things like that. It's great to see a proudly Australian tech company. It really appealed to the the embedded kids to see real embedded systems being tinkered with.

Middle of the day: Went to Atlassian for a talk, tour and lunch (pizza!). Atlassian is an Australian software development company that develops software to help software development teams. Their most famous product is JIRA. They're pretty famous around the world (and keep being mentioned in my Educational Leadership university subjects) because they have an open attitude to smart people using some of their time to explore new ideas. They also have "Ship-it" days which used to be called "Fed-ex" days because something was delivered overnight. Completely subjectively, Atlassian appears to have won the "awesomeness" award among those polled. Everyone wants to work here.

Afternoon: Went to Google for a talk and tour. I think everyone knows Google. Feedback was that it's completely understandable but a bit of a shame that the tour was of the building rather than of any of the work spaces.

SCHWAG! The kids get given branded merch at each company and they love it! T-shirts and bags and lollies Oh My!

Important Thing Learned: If I stay back to try to bone up on Python I apparently get distracted by the emails from work.

Light interlude: After everyone came back from the tours we had a fun session with maths comedian @mathemaniac.He was great fun and seemed happily surprised to be talking to a non-standard audience. There may have been some math-nerds in the room.


Evening Activity: Programming Comp! Yay!
The kids are mixed up into groups of 3 or 4 and get 2 hours to answer 20 questions. The answers are usually short and can be scribbled onto a slip of paper and handed in. the way to solve the problem to get the answer is *much* less short. We had two teacher teams and we did pretty well considering we don't tend to play around with this stuff every day like many of the kids do.
Examples of tricky questions included tree traversal, regex search and analyse. There were some easier ones and you can use the internet. I barely registered there was a score until the end because we were all working so hard. One of my fellow teachers said afterwards "So that's what 100 engaged kids looks like."

Great Day!

Murder: I'm still a human and alive but I still don't really get how it works. there doesn't seem to be a lot happening this time around. I heard a rumour that there was a mass attack planned by either the werewolves or the vampires at the School of IT today. See what happens.

Thursday, January 8, 2015

NCSS 2015 - Day 5

By Kaj (Own work) [CC BY-SA 3.0
 (http://creativecommons.org/licenses/by-sa/3.0)],
via Wikimedia Commons

We have a Project!

Lecture 7: An overview of the project and some other stuff.
In light of the many health Apps and embedded systems (think fit bits) that are around. We're going to be doing a project that takes inputs along the theme of health and uses one of the Boe Bots (http://www.adafruit.com/product/749) to manage the output. Something along the lines of "balance on one leg to make the robot go forward". Only our idea will be better. 
We talked about the kinds of sensors health apps use and these include accelerometers, glucose trackers, heart rate monitors, gps positioning etc. We won't have access to many of these but I'm happy I got my accelerometer working yesterday. Now we have to do some bench-marking and work out what shape of information we want to track (e.g. if we want to track steps we need to see what a step looks like and define a range of movement).

I want to do something like a "Bop-it game" (http://en.wikipedia.org/wiki/Bop_It) where a speaker plays an instruction (kind of like fast simon says) and the person has to do that movement in order to get their robot to do something and "win". Still working out the fine details so I can pitch it to my team.
I wonder if my attention is wandering because I'm feeling a little overloaded?
An easy day was deserved and warranted.
No labs in the morning - it was the tutors' day off so there were "Master class" sessions with invited lecturers. I didn't realise I was invited so organised to go to the pool. I will try to get some summary information to add later.

Free time in the afternoon. Last year I went to a movie with the teachers. This year I played squash with the tutors. Let me think about which was more relaxing...

Important Things Learned: 
Dr James Curran https://twitter.com/DrJamesCurran really can play squash
That was need a common header file to share definitions between different parts of a project. Also Git http://en.wikipedia.org/wiki/Git_(software)

Evening Activity: Formal Industry Sponsors' Dinner. A great night where teachers, tutors, industry reps and the students all talk and intermingle in a friendly, non-intimidating atmosphere. Well done to the team of organisers. There was a "back of the envelope calculation" where as a group you have to use logical reasoning to come up to the answer to an impossible question. Tonight's question... on Day 1 for the newspaper tower challenge there was a stack of newspaper for each team... if you laid the newspaper short sides together end to end how far would it stretch? 

Murder 2.0: I don't really understand this game but I'm not dead, not undead and have no way of killing anyone. I'm flying under the radar. There appear (from conversations at dinner) to be quite a number of people in the same situation.

NCSS 2015 - Day 4


Lecture 6: Polling again. We've learned about interrupts as a remedy for some of the disadvantages of polling and today we learned about adding timeouts to inputs --> keeping track of time.
millis() is a function that keeps track of milliseconds for the loop function so far. Millis returns a long integer so there is a possibility of overflow (but admittedly not for 49 days!) if statements checking on the value of millis should not have exact values because you can't predict a value of the milliseconds because of the processes coming before, so always use a range.
Then we moved on to communications and I was back in 2nd year uni desperately trying to keep my protocols straight and not doing a very good job of it. We discussed the SPI and I2C (called I-squared-C). These are two protocols for communicating between the Arduino and particular peripherals or other Arduinos. I really wasn't very sure about all of that so I'm going to have to do some research -- and quickly.
By Arvind Sanjeev (http://maker.diyhacking.com/)
[CC BY-SA 4.0
(http://creativecommons.org/licenses/by-sa/4.0)],
via Wikimedia Commons

Lab 5: UART and SPI (Oh My!) We first connected up two Arduinos in pairs and tried to send and receive messages between them in serial. Then we tried to have a button on one Arduino turn on a light on the other Arduino. Success!! A good lab.
The SPI stuff was apparently broken and needed another couple of lines of code which someone was working on. I had some of my questions answered by the tutors and then it was time to head back for lunch. (Two of the boys are trying to hook up two arduinos to play a MIDI rendition of Europe's "The Final Countdown" with full chords. It's a bit of an in-joke but still very impressive in terms of a challenge.


Lecture 7: Theme for this lecture... "You'd better know what you are doing!" Our lecturer keeps saying this about the "relaxed" attitude of the C compiler. There are a couple of instances where we've discussed breaking the program with empty arguments and weird data type assignments and they will still compile but who knows what they'll do in the actual run-time.
First thing we covered was enumerated data types. You can create your own data types for things such as Three-way boolean ("troolean?") like True False and underfined. States of a game or system (vending machine example coming) enumerations are pretty close to named integer value. There is no real object oriented stuff in C. There are some classes that have methods within the language but you can't write your own unless you want to write your own compiler.  Importantly you can enumerate a record (called a structure) and create an array of records.

Vending Machine example: A vending machine is an embedded system that needs to change states at different points. First it's waiting for a wake up signal. Once it's woken with the insertion of a coin it needs to detect the value of the coin. It then waits for another coin. When it receives another coin it detects and then tallies the total, if the correct total has not been reached it continues in this loop. Once a correct value or greater has been received it waits for selection, once selection has happened it then delivers the selection and then tallies and delivers change. Each of these stages need a different set of sensors and actuators so the processor needs to keep track of which ones are needed. This could be enumerated this way...
enum states_vending {
  waiting;
  detecting;
  adding;
  selection;
  delivery;
}
You can then use these in if statements to shift between one state and the next with some simplicity.

Lab 6: I missed a bit of this lab. Some colleagues and my family turned up. I probably needed the break. I got my accelerometer hooked up (wiring nightmare - note to self and everyone else, despite sounding like a good idea staples don't act as wires on a solderless breadboard.) It was just detecting x y z enough for me to show it to my kids before we walked down to Glebe for dinner.

Important Stuff Learned:
sprintf http://www.cplusplus.com/reference/cstdio/sprintf/
String. functions http://arduino.cc/en/Reference/StringObject

Evening Activity: Family came and whisked me away for dinner - Yay! Everyone else had free time including a board game championship.

Murder Game: Dead for most of the day. A new game started while I was at dinner. It's basically the same as the last one except you don't have a specific target which means it's a free-for-all. I'm not entirely sure of how it works (missed the briefing) but there were a couple of people designated vampires and werewolves at the beginning of the game. Here's the bit I'm unsure about...
Vampires turn people into vampires if they "kill" them
Werewolves turn people into werewolves
Werewolves kill vampires entirely
Vampires kill werewolves entirely
People can kill werewolves and vampires if they have some kind of weapon (not literal, there are paper thingies floating around)
I'm not sure what werewolves do to werewolves because I thought they would kill them but there seemed to be a whole pack of werewolves on the prowl this evening. - Pack animals?
I really don't want to be as paranoid this time!

Missing the site visits tomorrow to go for a swim. I saw them last year.

Tuesday, January 6, 2015

NCSS 2015 - Day 3

Thanks oomlout Creative Commons Attribution-Share Alike 2.0 Generic
Lecture 4: We are still dealing with the syntax of the C language. It's tricky to pitch something like this because unlike the Python sessions there isn't a regular versus advanced lecture. I feel it's a bit slow and want more of the electrical engineering to fit in with the labs but there are some non-programmers in the class so that's hard too.

Check out my shiny shiny 3!
I'm think I'm going to do some of the Python activities to prep for the Programming challenge and Crypto challenge to supplement the next lecture.

Lab 3: Was a little disobedient and completed the 7-pin  digital display extension activity from yesterday. I'm pretty happy with it. I need to workout how to use a capacitor to smooth the signal fluctuations on the button but I've put a delay in the software to manage it at the moment.

The proper lab was really interesting. We used temp sensor and soft potentiometer to control outputs, first to read the temperature in the room (mine was incorrect but more about that later) and then to control the output on an RGB LED so that it moved through a spectrum. Missed the extension activities but thankfully I've played with other sensors before.

Lecture 5: Defined #define. If you want to reference a particular pin number throughout the code and you don't want to sacrifice storage to variables or constants you can use #define XXXXX(any string, convention is to use caps) and then the number. This means that the compiler conducts a find/replace at compilation replacing the string with the value, but doesn't need any more RAM to run.. Dealt with function definition and calls. I'd used non-returning functions for the digital display (Note to self: upload interesting code). Interesting note that if the function returns a result then it needs to be defined with a type...

  • int function_name(params) {}. 

Thanks for making this Public Domain Eighthave
Lab 4: A fantastic lab! We used PWM (Pulse Width Modulation) to make a digital signal masquerade as an analogue signal. First we made an LED dim to close to off, close to full power and somewhere in the middle. Then Matt and I set ourselves the challenge of taking input from a joystick to control three LEDs, 1 was binary based on the fire button, 2 were graded based on the x and y inputs of the joystick. That was so much fun! Finally, we just got the buzzer hooked up for experimentation when the end of the lab was called. It was a really irritating noise anyway.

Important stuff learned:
Accuracy vs Precision - Precision speaks about the overall encoding measure accuracy speaks about one individual value.
Map Function - https://www.udemy.com/blog/arduino-map/

Evening Activity: Scavenger Hunt - my favourite! We run through the university grounds looking for clues, challenges and photographs. It was an incredible 2 hours (except it wasn't quite 2 hours because we were back early and got an early arrival bonus).

Memorable moment: Winning the Scavenger Hunt!!

Murder Game: Is it wrong that I keep hiding in my room to avoid my own demise? (Spoke too soon, got killed while showing photographic evidence of the scavenge hunt win... it was almost worth it!)
Murders performed: 1 (it took a very long time to identify the intended victim)

Monday, January 5, 2015

NCSS 2015 - Day 2

Thank you to Afrank99 Creative Commons Attribution-Share Alike 2.0 Generic license
Lecture 2: Going over the C required to make the Arduino do our bidding. A bit revision for me... The Arduino has two necessary functions void setup() and void loop() but you can add more. The setup function allows you to define how different pins will perform. The loop function allows you to define what happens over and over again (all the Arduino can do once autonomous is do the same thing over and over again.) You can nest other loops but once it's got to the bottom it's going back to the top. This explains the need for delays from time to time. 

Lab 1: Beginner circuitry. Hooking up a breadboard, powering an LED, Blinking etc. It was a bit basic. The extension activities had us reading and writing to the serial port which requires the USB cable at this stage but I believe it will be applicable to the Bluetooth portion of the project.

Lecture 3: New Stuff! I encountered some entirely new material! We learnt about polling versus interrupts. The whole time I've mucked around on Arduino this would have been brilliant to know! My Baby Groot project may now be one step closer to fruition. They then did a bunch of conversion of number systems. Finally, we wrapped up learning about volatile variables another crazily useful thing to know. Time to get stuck in!

Lab 2: #TECHWARNING We used a switch to manage an LED programmatically rather than simple circuitry and sent messages to the Serial at the same time. We then implemented a Binary counter for a nibble (half a byte) using 4 LEDs, incremented on the button press. This was a little dodgy, the Interrupt was bouncy and we needed a delay of 200 milliseconds to get rid of the fluctuations. There was some discussion about smoothing the signal with a capacitor.
Source: http://www.texample.net/tikz/examples/seven-segment-display/
I'm really enjoying talking to the tutors about these problems because when it's just you and the internet you can hack workarounds to problems that aren't really best practice. Was just about to adjust the counting program to work for a 7 segment digit display when a teacher meeting was called. D'Oh! I will master you tomorrow 7 segment digital display!

Important stuff learned:
Serial.Read - http://arduino.cc/en/Serial/read
How to write functions - http://playground.arduino.cc/Code/Function
Gangnam style had so many views it caused an overflow error! Not up on internet culture.
There is code for a seven segment display on Nerd Club (http://nerdclub-uk.blogspot.com.au/2013/05/messing-about-with-7-segment-displays.html) but I won't be reading it until I've succeeded.



Evening Activity: Trivia - All students in their teams from the camp, teachers in a team together, tutors in a team together. We came second last and they came last. There may have been some weighting of the answers.



Memorable moment: Making unauthorized newspaper costumes for our 30 second rendition of the complete Lord of the Rings trilogy (subtitled -how long the Lord of the Rings trilogy would have been with all the boring bits taken out)

Murder Game: Still alive!
Murders performed: 2 (today)
There's not many of us left now so I have definitely earned some cred from last year. Paranoid!

NCSS 2015 - Day 1

This image was originally posted to Flickr by
SparkFunElectronics at
http://flickr.com/photos/41898857@N04/8406865680. CC BY 
New Year's Resolution - Restart Blog!

Easy to say but tricky to do without something to write about. Hang on a second! I'm hanging out with geeks for 10 days as part of NCSS 2015.

NCSS stands for National Computer Science School. It's a 10 day programming course for Year 11 students (+some kids returning from last year +some overly keen teacher) with two streams Python and Embedded (arduino).

I was here last year doing the Python stream to help me support my senior kids at school, this year I get a go at Arduino robotics.

Day 1: arrived late. I had a uni assignment due that was still being typed when I was supposed to be here for the teacher briefing. (Please forgive me fellow teachers, I promise to make it up.)

First Lecture: Introducing sensors, actuators, processors and have a look at the hardware. To be honest I was a little worried at this point because last year I was really learning from day 1 and this was pretty basic stuff. Have been promised it gets harder FAST!

First Evening Activity: Build the tallest tower that can support a shoe using nothing but newspaper (no not even tape). Our team went with the high risk, high reward strategy that resulted in a pile of newpaper and a shoe about knee height above the ground. :-( May have to conduct experiments at home to do better next time.

Murder Game: A game where you have to "kill" a fellow camper by saying "You're dead!" without being overheard. Last year I died in the first night's activity. This year I am proudly still alive. Murders performed: 1

All Fall Down - Source
https://twitter.com/katrinapuranik/status/551741852085280769/photo/1
Thanks  


Saturday, July 20, 2013












Graffiti Creator
This is a fun, no login necessary, way to create titles with a Graffiti style for projects. It doesn’t do much other than make pretty cool text but the kids like it.

PiktoChart (Data Visualisation)
This is a great way to create Data Visualisations. These are printable posters that display large amounts of data pictorially with graphs and size comparisons. It’s pretty easy to use but you do need to sign in.

Google Fusion Tables

This one is perfect for the scientists and social scientists; it’s a bit tricky to use but worth the effort. You and your studnets can create interactive maps with images and data by putting information into Google Fusion Tables. The link is to a tutorial to follow (I thought just linking to the tool itself would not be very useful) and please ask if you want to use something like this in class.

Blooms Digital Taxonomy the Wiki

This is a great site that teachers from all over the world contribute to. It is teachers ideas of how to implement Bloom’s taxonomy in a digital world and has links to other tools that you can use in the classroom. The great thing about this site is that it is a community of teachers and learners and you can contribute to the community youselves.

Interactive, Media Rich Timelines

This gorgeous website allows you (or the students) to create timelines where each point in time includes any combination of text, graphics and video (youtube). It allows the students to visualise the distance between events in time. You can even upload the data in spreadsheet form.