As I’ve mentioned before, I’ve been spending Friday evenings programming with my 10-year-old, while his older sibling practices with his soccer team. We started out with python, did some work with Google Fusion Tables, and last week and this week again we’re back to Python. Someone at a recent THATcamp shared a link to Invent With Python and it’s been great fun for us to work through. So now instead of creating from scratch, we’re working through the examples and tweaking them here and there.
Here’s what we did to Chapter 4: Guess the Number. To run this code you’ll have to copy and paste it in a text editor, save it (numberguessing.py) and run it from the terminal (type: python numberguessing.py). You can really see my kid’s…uh…sense of humour… in these programs. Keep in mind he’s a beginner. I realize some line breaks, etc would add to the aesthetics, but I’m trying to reduce cognitive overload. One thing at a time!
# March 11, 2011. Mama & me
# based on _Invent with Python_ by Albert Sweigart
# Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.
# This is a guess the number game.
import random
guessesTaken = 0
print('Hello! My name is Robo-Sam. What is your name?')
myName = input()
number = random.randint(1, 50)
print('Well, ' + myName + ', I hate that name, but I will let you play anyway. I am thinking of a number between 1 and 50. Normally you would get 10 guesses, but since I hate you, you only get 5.')
while guessesTaken < 5:
print('You will probably be wrong, but go ahead: take a guess.')
guess = input()
guess = int(guess)
guessesTaken = guessesTaken + 1
if guess < number:
print('Bad guess, Robo-Sam is laughing . Toooo Low.')
if guess > number:
print('Bad guess. What is wrong with you? Your guess is too high.')
if guess == number:
break
if guess == number:
guessesTaken = str(guessesTaken)
print('You were really lucky! Play again and place a wager ' + myName + '! You guessed my number in ' + guessesTaken + ' guesses!')
if guess != number:
number = str(number)
print('Nope. You ran out of guesses. Bwahahahaha! You failed...again. The number I was thinking of was ' + number)
You might argue that this makes my kid look pretty rotten, but I promise you, he really is a sweetheart.
On Friday nights while my middle kid practices with his soccer team, my youngest and I go to the nearby coffee shop and work on code. He’s 10 years old. Our first project was a Choose-Your-Own-Adventure program in Python, then we moved to a random generator (again in Python), and last night he mapped some of the places he’s been, using Google Spreadsheets and Fusion Tables. The original plan was to map all the places he’s been, but he decided to cap it at 15 since we had just under two hours. I wanted to finish the night with something completed.
Here’s the map he made:
Blue is for pools
Red is for libraries
Purple is for schools
Orange is for stores
Green is for restaurants
I’m inspired by my daughter, who’s taking her last year of high school computer science. The school she’s at offers three years of courses. In year one they do Turing (and Flash), the next is Python, and in the last they do Java. She’s planning on going on to study either Computer Science or Engineering at university in another year. She also loves the humanities so I’m excited to see what combination she puts together with double majors or minors.
I’m eager for my kids to grow up as creators, not just consumers of technology. The two younger kids both have old computers that run Ubuntu (one has no internet, one has restricted internet) so their use of the machines might be different because of that. They first started out making their own levels in kGoldrunner, but they’ve moved on to spreadsheets of stats for the characters in the role-playing games they create as well as using the word processor in Open Office to write stories for their games. Learning to program seemed the next step, but one they weren’t making on their own. Friday night at the coffee shop seemed like a good way to clear away distractions, learn something new, spend time with mom, and wait for big brother to finish practice. It’s also great for the youngest to learn something before his older brother. Youngest kids often get stuck tagging along and doing everything last. An added bonus here is altering that pattern.
We made the above map in about an hour. We started in Google Spreadsheets, which he’d never used before (limited Internet), though he’d used OpenOffice Calc so understood how a spreadsheet works. He made the list of fifteen places he’d like to map. Then we used map search plus everything search to track down the street addresses and postal codes of all the places on the list. We got to talk about good web practices because the first few addresses we found were images of text instead of text — frustrating! He quickly learned we wanted addresses as selectable text so that there’d be no need to retype long strings of text.
Once all the addresses were found (we took turns after awhile because this was tedious) we added a data type for each: pool, library, school, restaurant, or coffeeshop and had a look at our choices for map icons. He decided which marker he wanted for each data type and we added that to the spreadsheet.
Next we imported the spreadsheet into Google Fusion Tables, set the map to grab location using the street address in the Address column and visualized as a map. Then we modified the map style to use the marker specified in the Icon column and cool! a map was born! He knows that he can go back to his map and add more data, re-purpose it, or use it as an example for a new one.
Once it was done, we shifted to a conversation about places he’d like to go. He navigated Google Street Maps to travel to Spain, Venice (to see canals), Paris (to see the Eiffel Tower), Iqaluit, Japan, Korea, and Rome. We walked down the streets in every place that had street view (we’re both bad at controlling the little person) and looked at the relationships between cities and large bodies of water.
I really do love these Friday night nerd sessions and I know that I’m making it normal to use computers for more than surfing. He’s learning that he can visualize his data, turn his stories into games, and make whatever he can imagine.
Woke up to a freezing cold house this morning. Apparently when the batteries go in an electronic thermostat the furnace no longer cycles. 18.5 C (65 F) is not my idea of a comfortable working temperature. It’s been working for the last hour trying to catch up. I’m much cozier at a balmy 21 C (69.8 F) and hoping we’ll get there soon.
Kids are all back at school for the first time in a week. The oldest and the youngest have been sick. I don’t recall the last time anyone missed this much school and it certainly has never happened where two were this sick at the same time. Because it’s been awhile, our morning routine was a bit off. The kids who got used to sleeping in (albeit with fevers) were up early today for a change.
And then the pant wars began. It isn’t even about the pants I’m sure, but rather one of those chances to practice being stubborn/defiant/independent. I don’t know where they find the worn out pants with holes in the knees, but one kid manages to find them on school days when I’m extra tired. Once they’re on, he’s committed to them, and it’s a battle to get him to change into something else. Today the first change was into dirty pants from the hamper, covered in materials from a 2-days-ago project. Eventually everyone made it out the door dressed for the winter weather, with plans for pants shopping after school. /sigh/
This map uses open data from the City of Windsor Open Data Catalogue. If you’re interested in the process used to make this map I’ve included step-by-steps at the bottom of the page. Drag and zoom to explore.
Key to icons:
| Large red = Community Centres | |
| Large purple = Libraries | |
| Large blue = Arenas | |
| Small green = Heritage Sites (listed & designated) |
Process
This is how I made this map, but not exactly what I’d do next time. See note below.
*Next time I plan to use Google Refine to clean the data. Working across multiple spreadsheets was a pain.
Total time to make the map: 30 mins.
The best session I went to all weekend was Gene Becker’s Augmented Reality 4 Poets. It was exactly what I’d hoped for in a Bootcamp: intriguing, informative, hands-on, and fun. Gene was very helpful and took his time going through what we needed to know to author our first AR using Layar and Hoppala. He kept it nice and simple since the bootcamp pitch was to non-programmers and by the end of the bootcamp I had uploaded an image which was visible in the Automattic Lounge using my smartphone. I also found some of the uploads by other people in the Bootcamp. I have an Android HTC running 1.5 so was worried it’d be too old, but was thrilled when it worked without a hitch.
photo © 2010 Sander Veenhof | more info (via: Wylio)
Rather than go through all the steps Gene showed us I’ll point you over to the tutorial he wrote up from the session. I’m anxious to fill my neighbourhood with giant pigs and old architecture. I’m interested in the applications of AR for history & place projects, particularly oral history audio files. My real fear of AR is people crashing into things while they walk around holding their phones out in front of them, but it’s a risk I’m willing to take.
While there seems to be plenty of interest in AR in the San Franciso Bay Area, I haven’t found any locals working with it yet. If you’re in Windsor/Detroit and want to get involved in some local AR please let me know!
In the spirit of THATcamp and trying new things, I’m trying something new here. If all goes well, my notes from the “Everything Google” Bootcamp this past weekend at THATcamp Bay Area should be embedded below. The session was run by Mano Marks, a developer advocate (DA) at Google. My reflection on the session is below that.
I’m not sure what type of research I’d use Fusion tables to model, but as I work through the examples I might figure that out.
I spent a lot of my time trying to copy Mano’s urls into my own browser so I could follow along with what he was doing. It got easier once I found a data set to manipulate, but I would have gotten more out of the session if I’d been able to work through some meaningful visualizations instead of watching a demo. There were some great examples shown and I tried to gather the urls for those for working through later.
I thought we were going to get an intro to working with the api, but I think we attendees were more beginner than Mano had expected. I’m not a developer yet, but I’m working on it. He did mention that as a DA it’s his job to answer questions people have as they work with the api and if a group gathers 25-50 people (local to SF) or 50-100 (outside the area) Google can send an advocate to run a bootcamp session. Something to keep in mind as I get further along here….
I started my THATcamp Bay Area weekend in a bootcamp session on Text Mining with Aditi Muralidharan, a graduate student at UC Berkely. (@silverasm & http://mininghumanities.com). Links to the slides from the session are here. The session was geared for people who collect the data then ask “what do I do with all this stuff?!?” This definitely describes me. I have hours and hours of collected oral histories plus a few diaries and log books I’d love to analyze.
I’ve never done anything remotely close to text mining, which is why I attended this session. Here’s what I learned:
A variety of tools were suggested:
An example of text-mining an historical diary done by Cameron Blevins @historying at StanfordU:
Some limitations of text mining:
I’ll be working through this list (just as soon as I get my text in a digital format that can be processed).
So THATcamp Bay Area is winding down. The unconference is over and a handful of people are hanging around having post-conference conversations, enjoying the sun, finishing the beer. Pizza has been ordered and a couple of us are working on wrap up posts before we return to our daily grind. I want to try to maintain the momentum that THATcamp has begun so am writing my notes and posting them before I get distracted by work and family responsibilities.
It’s been an incredible weekend: 75 people shared their ideas, projects, successes, and failures. I’ve met so many incredibly talented, intelligent, and generous people and I want to continue the conversations we started this weekend. I’ll post the notes I took in the sessions I attended and I hope others will do the same. I want to read your notes; I want to know what everyone learned.
I have notes for Text mining, Organizing an Unconference, Augmented Reality 4 Poets, Google Fusion Tables, and some possibilities for After THATcamp. I’ll link them up as I post them.
I’d like to send out a special thank you to Jon Voss and the rest of the THATcamp Bay Area organizing committee for an incredible weekend. It was wonderful to meet people that I’ve been following on twitter and to find so many new people to follow. I’m excited for the follow ups we started cooking up in the last session of the day and hope we stay connected.
This Thursday, 8 April 2010, graduate students of the History Department at the University of Windsor will present papers from two courses being offered this term:
43-510: Post-Colonialism and 43-511 Modernity
The symposium will take place in McPherson Lounge at Alumni Hall on the University of Windsor campus.
Schedule:
9:30 AM: Welcome
9:30-11: Modernity and Colonialism in Canada
11-11:15 Break
11:15-12:45: Modernity and Colonialism around the World
Lunch 12:45-1:30
1:30-3: Modernity and Culture
For more information contact Jennifer Rocheleau in the History department: history@uwindsor.ca
I’ve been a regular reader of ProfHacker since its launch. The posts (tips and tutorials for higher ed), are helpful – and usually timely. Just as I’m thinking about or needing something, a post turns up providing useful tips, often with links to more info. However, the mass of bookmarks I’ve accumulated is losing its effectiveness because there are just too many. What I really needed was an easy way to search the site.
Enter OpenSearch.
I’ve taken my ProfHacker addiction as an opportunity to create a Firefox search plugin. Now when I need to find something on ProfHacker, I tool over to my browser search bar (using Ctrl+k / Cmd+k), choose ProfHacker from the list of available search engines, enter my query, and I’m off.
And because I like to share, you can click here to get the plugin that will search ProfHacker.