What I Wish I Knew Before Applying Graduate School

At the end of this summer I will have completed my last semester of graduate school.  The Master of Arts in Public History at the University of Western Ontario has been a phenomenal experience.  Last year, I completed my first masters degree in Library and Information Science at Western.  As I reflect upon my three years in grad school, I have realized that there are a few things I wish I knew before  I applied.

1. Make your application interesting

A lot of people are as qualified as you are for a spot in your program.  Because of this, graduate schools are looking to admit people that are interesting to them, and frankly, don’t worry as much about your GPA as you might think.  They are looking for smarts as well as life experiences.  Did you do some community service work in Honduras?  Find a way to mention it in your application.  Did you do a semester abroad in Asia? Highlight that experience.

Don’t underestimate the power of work experience. This can demonstrate maturity and excellent time management skills.  In addition, life experience can be the great equalizer if your grades are on the low end.  Nearly every applicant can complete the degree you’re applying to, set yourself apart by making yourself unique and memorable.

2. Talk to the program director before applying: be the “devil” s/he knows

This is a no-brainer that a lot of applicants don’t do.  If you are able to, make a visit to campus and speak with the program director and ask some questions about the program, even if they are just to clarify the requirements application.  Also, discuss your employment aspirations and ask how their program could prepare you for your vocational goals.  This gives the school an extra chance to get to know you, and put a face to your application.  If they need to break a tie between equal candidates, they’ll take the devil they know over the devil they don’t.

*Also remember, you are spending thousands of dollars in tuition, fees, rent etc. to attend this school, so you want to make sure the program is a good fit for you too.

3. Marks don’t matter…unless you’re planning on a Ph.D.

Newsflash: Employers don’t give a crap about your marks.

If you have a master’s degree on your resume, employers will already know you’re smart.  Again, they’re looking for people that are interesting, that can do the job, and people they can get along with on a daily basis.  Don’t have a hissy fit if you get an ‘A-‘ when you clearly deserve an ‘A’, employers could care less.

4. Treat grad school like a nine-to-five job

To be honest, graduate work isn’t that difficult, but the volume of work required borders on the ridiculous.  Plan everyday to do be doing schoolwork.  You may even have to sacrifice weekends in the name of a huge paper or project.  The days of starting a paper the night before its due are over.  And yes, you have to do your readings or else you’ll be lost in seminars.

5. Be nice to your classmates

Guess who your colleagues in the field will be after you graduate?  Guess who could be on the hiring committee for a job you’re applying for?  Your classmates could be your best friends or your worst enemies, it’s up to you.  If you’re in a professional program, chances are you will be engaged in a lot of group work.  This is your chance to show your future colleagues in the field how good a team player you are, and what kind of quality work you do.  You never know who will be giving you your next job, so make your time in grad school count and make some friends and allies among your classmates.  Likewise, you might be on a hiring committee some day and hire a classmate you know who is great to work with.

Hoop Dreams: Building Pains

Though the concept for my interactive basketball hoop project is quite simple, the most frustrating part was building the actual unit. The finished product has four main components:

1. The computer and MakeyMakey: the brains of the product.

2. The stand: a small box my vacuum cleaner came in.  The backboard hangs from the top of the box, and houses and protects the MakeyMakey and some of the wiring.  I also placed a bunch of heavy books in it to weigh it down and keep it stable.

Inside the stand: housing the MakeyMakey

Inside the stand: housing the MakeyMakey

3. The backboard, hoop, and ball: I purchased these as a set from Amazon and attached a bottomless plastic contained to the rim to funnel the ball so that it goes straight down; and,

4. The landing ramp: which consists of a small box top to which I embedded two arcade buttons, and used a cardboard paper towel tube as a beam so that it would hang from an angle.

By far the landing ramp was the most difficult component to create and went through a few incarnations before I designed the most optimal model.  My first idea was to embed the arcade buttons in a piece of foam core measuring approximately 3″ by 5″.  This was difficult to use from the get-go because I could not figure out an effective way to bind it to the stand at an angle, and sometimes the ball would miss the ramp completely because it was too short.

My next idea was to create a sort of landing pad on the floor.  For this I used an 11″ x 8 1/2″ x 2″ box made of strong cardboard and embedded the buttons on top of the box and simply laid it on the floor.  This was more problematic because the landing pad was further from the base of the funnel giving the ball more time to go off course and miss the button.  I also found that the box itself was too flexible so when the ball did make contact with a button, sometimes the button wouldn’t be pressed because the box could not provide enough resistance to the force of the ball coming down onto it.  I also found that, occasionally, the ball would bounce too much on the box and push the button twice, or push both buttons.  This was frustrating, and at that point, my wife told me to take a break for the rest of that particular night.

I came up with this disaster of an idea prior to the landing pad

I came up with this disaster of an idea prior to the landing pad. The problems here are self-evident.

Landing Pad

Landing Pad

Landing Pad 2

Landing Pad 2

In the end, I decided to combine my first two ideas.  I cut the top off the box, leaving the front and side flaps intact.  I attached the back of the box top to the stand using cable ties.  I took the cardboard roll from a roll of paper towels and bound one end to the front flap of the box top and the stand, again, using cable ties.  The cardboard roll serves as a beam for the landing ramp, maintaining its angle, and helps reduce some of the flexibility issues previously discussed.

The support beam and buttons underneath the landing ramp

The support beam and buttons underneath the landing ramp

The final product

The final Product

I did my final experiment and I made 100 shots sitting from about four feet away.  The hoop stands about a foot and a half off the ground.  Of the 100 made shots, the buttons were set off 82 times, and only one shot bounced on the button twice, double counting the point (I only counted that as 1). The design still is not perfect.  I have found that when the ball goes straight through the hoop from an angle, it is less likely to hit a button than a ball that bounces or rattles through.  Sometimes the ball will hit in between the buttons when it goes straight in.  I was also found that sometime the ball just did not hit the button accurately enough to push it.  Ultimately, what I needed was a larger button.  One that was four inches in diameter would have been more helpful and would have led to more accurate scoring.

Screen shot of Final Experiment

Screen shot of Final Experiment in Presentation Mode, it reads 83 only because one shot double-counted, it should read 82.

Going through the process of creating this basketball hoop, I came to appreciate the workmanship and ingenuity that go into creating arcade games like whack-a-mole, skee ball, and pinball.  The unfortunate thing is that we don’t often associate “workmanship” and “ingenuity” with these kinds of games.  I don’t exactly know why.  Perhaps its because of their slow-but-inevitable obsolescence with the advent of  home video game systems like XBox and Playstation 4, superior technology.  It could also be that they’re associated with the waste of time and money with visions of children popping quarters to best the current high score.  Putting aside the ethics of profiting off childhood game addiction (which is still very much an issue today), the creators of these games deserve recognition for the work that they have done.  Creating my basketball hoop was challenging, and took many hours to conceptualize and build, and it’s still not working properly.  I don’t know that I am inspired by their work because, ultimately, these games do little to improve the overall quality of life of their communities, but I do appreciate the technology and creativity that has gone into them, and let’s face it, they’re freaking fun.

Improved Max 6 Patch for the Interactive Basketball Hoop

Simply copy the following raw data and paste it into your own Max 6 patch.  Back to Hoop Dreams: Programming Problems.

{
“boxes” : [ {
“box” : {
“maxclass” : “newobj”,
“text” : “trigger 0 l”,
“id” : “obj-16”,
“fontname” : “Arial”,
“numinlets” : 1,
“numoutlets” : 2,
“fontsize” : 12.0,
“outlettype” : [ “int”, “” ],
“patching_rect” : [ 498.0, 51.0, 61.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “0”,
“id” : “obj-13”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 12.0,
“outlettype” : [ “” ],
“patching_rect” : [ 120.5, 445.0, 32.5, 18.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “1”,
“id” : “obj-6”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 12.0,
“outlettype” : [ “” ],
“patching_rect” : [ 279.75, 343.0, 32.5, 18.0 ]
}
}
,  {
“box” : {
“maxclass” : “comment”,
“text” : “RESET”,
“presentation” : 1,
“id” : “obj-68”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 20.0,
“presentation_rect” : [ 684.0, 86.5, 230.0, 29.0 ],
“patching_rect” : [ 564.0, 11.0, 230.0, 29.0 ]
}
}
,  {
“box” : {
“maxclass” : “comment”,
“text” : “SCORE”,
“presentation” : 1,
“id” : “obj-46”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 20.0,
“presentation_rect” : [ 409.5, 21.0, 236.0, 29.0 ],
“patching_rect” : [ 564.0, 209.5, 236.0, 29.0 ]
}
}
,  {
“box” : {
“maxclass” : “number”,
“varname” : “number”,
“presentation” : 1,
“id” : “obj-39”,
“fontname” : “Arial”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 2,
“fontsize” : 72.0,
“presentation_rect” : [ 409.5, 52.0, 163.0, 87.0 ],
“outlettype” : [ “int”, “bang” ],
“patching_rect” : [ 564.0, 96.0, 163.0, 87.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “counter”,
“id” : “obj-32”,
“fontname” : “Arial”,
“numinlets” : 5,
“numoutlets” : 4,
“fontsize” : 12.0,
“outlettype” : [ “int”, “”, “”, “int” ],
“patching_rect” : [ 311.75, 163.0, 73.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “number”,
“id” : “obj-14”,
“fontname” : “Arial”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 2,
“fontsize” : 12.0,
“outlettype” : [ “int”, “bang” ],
“patching_rect” : [ 381.5, 59.0, 50.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “key”,
“id” : “obj-12”,
“fontname” : “Arial”,
“numinlets” : 0,
“numoutlets” : 4,
“fontsize” : 12.0,
“outlettype” : [ “int”, “int”, “int”, “int” ],
“patching_rect” : [ 279.75, 11.0, 59.5, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “select 32”,
“id” : “obj-10”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 2,
“fontsize” : 12.0,
“outlettype” : [ “bang”, “” ],
“patching_rect” : [ 279.75, 59.0, 59.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “button”,
“id” : “obj-4”,
“numinlets” : 1,
“numoutlets” : 1,
“outlettype” : [ “bang” ],
“patching_rect” : [ 279.75, 96.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “live.gain~”,
“varname” : “live.gain~”,
“presentation” : 1,
“id” : “obj-5”,
“parameter_enable” : 1,
“numinlets” : 2,
“fontface” : 0,
“numoutlets” : 5,
“fontsize” : 12.0,
“showname” : 0,
“presentation_rect” : [ 480.5, 278.0, 54.0, 136.0 ],
“outlettype” : [ “signal”, “signal”, “”, “float”, “list” ],
“patching_rect” : [ 50.5, 445.0, 54.0, 136.0 ],
“saved_attribute_attributes” : {
“valueof” : {
“parameter_unitstyle” : 4,
“parameter_mmax” : 6.0,
“parameter_mmin” : -70.0,
“parameter_initial” : [ -70 ],
“parameter_type” : 0,
“parameter_initial_enable” : 1,
“parameter_shortname” : “live.gain~”,
“parameter_longname” : “live.gain~”
}
}
}
}
,  {
“box” : {
“maxclass” : “ezdac~”,
“prototypename” : “helpfile”,
“presentation” : 1,
“id” : “obj-7”,
“local” : 1,
“numinlets” : 2,
“border” : 1.75,
“numoutlets” : 0,
“presentation_rect” : [ 480.5, 428.0, 44.0, 44.0 ],
“bgcolor” : [ 1.0, 1.0, 1.0, 1.0 ],
“patching_rect” : [ 50.5, 595.0, 44.0, 44.0 ],
“bordercolor” : [ 0.501961, 0.501961, 0.501961, 1.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “sfplay~ 2”,
“id” : “obj-43”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 3,
“fontsize” : 13.0,
“outlettype” : [ “signal”, “signal”, “bang” ],
“patching_rect” : [ 50.5, 398.0, 89.0, 21.0 ],
“save” : [ “#N”, “sfplay~”, “”, 2, 40320, 0, “”, “;” ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “open”,
“id” : “obj-41”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 50.5, 352.0, 39.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “set 0”,
“presentation” : 1,
“id” : “obj-66”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 20.0,
“presentation_rect” : [ 619.0, 86.5, 55.0, 27.0 ],
“outlettype” : [ “” ],
“patching_rect” : [ 498.0, 11.0, 54.0, 27.0 ]
}
}
 ],
“lines” : [ {
“patchline” : {
“source” : [ “obj-66”, 0 ],
“destination” : [ “obj-16”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-6”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-5”, 0 ],
“destination” : [ “obj-7”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-5”, 1 ],
“destination” : [ “obj-7”, 1 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 0 ],
“destination” : [ “obj-5”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 1 ],
“destination” : [ “obj-5”, 1 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 2 ],
“destination” : [ “obj-13”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-41”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-4”, 0 ],
“destination” : [ “obj-6”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-4”, 0 ],
“destination” : [ “obj-32”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-32”, 0 ],
“destination” : [ “obj-39”, 0 ],
“hidden” : 0,
“midpoints” : [ 321.25, 195.0, 549.0, 195.0, 549.0, 93.0, 573.5, 93.0 ],
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-16”, 1 ],
“destination” : [ “obj-39”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-16”, 0 ],
“destination” : [ “obj-32”, 3 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-13”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“midpoints” : [ 130.0, 465.0, 117.0, 465.0, 117.0, 429.0, 36.0, 429.0, 36.0, 393.0, 60.0, 393.0 ],
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-12”, 0 ],
“destination” : [ “obj-14”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-12”, 0 ],
“destination” : [ “obj-10”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-10”, 0 ],
“destination” : [ “obj-4”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
 ],
“appversion” : {
“major” : 6,
“minor” : 0,
“revision” : 8
}
}

Problematic Max 6 Patch for the Interactive Basketball Hoop

Simply copy and paste the following raw data into your own Max 6 patch.  Back to Hoop Dreams: Programming Problems. 
{
“boxes” : [ {
“box” : {
“maxclass” : “comment”,
“text” : “RESET”,
“presentation” : 1,
“id” : “obj-68”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 20.0,
“presentation_rect” : [ 684.0, 86.5, 230.0, 29.0 ],
“patching_rect” : [ 740.0, 283.0, 230.0, 29.0 ]
}
}
,  {
“box” : {
“maxclass” : “comment”,
“text” : “SCORE”,
“presentation” : 1,
“id” : “obj-46”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 20.0,
“presentation_rect” : [ 409.5, 21.0, 236.0, 29.0 ],
“patching_rect” : [ 766.0, 176.0, 236.0, 29.0 ]
}
}
,  {
“box” : {
“maxclass” : “number”,
“varname” : “number”,
“presentation” : 1,
“id” : “obj-39”,
“fontname” : “Arial”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 2,
“fontsize” : 72.0,
“presentation_rect” : [ 409.5, 52.0, 163.0, 87.0 ],
“outlettype” : [ “int”, “bang” ],
“patching_rect” : [ 787.5, 39.0, 163.0, 87.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “counter”,
“id” : “obj-32”,
“fontname” : “Arial”,
“numinlets” : 5,
“numoutlets” : 4,
“fontsize” : 12.0,
“outlettype” : [ “int”, “”, “”, “int” ],
“patching_rect” : [ 318.0, 163.0, 73.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “toggle”,
“presentation” : 1,
“id” : “obj-40”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 1,
“presentation_rect” : [ 402.0, 184.0, 20.0, 20.0 ],
“outlettype” : [ “int” ],
“patching_rect” : [ 280.0, 351.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “button”,
“id” : “obj-33”,
“numinlets” : 1,
“numoutlets” : 1,
“outlettype” : [ “bang” ],
“patching_rect” : [ 400.0, 118.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “number”,
“id” : “obj-14”,
“fontname” : “Arial”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 2,
“fontsize” : 12.0,
“outlettype” : [ “int”, “bang” ],
“patching_rect” : [ 354.0, 58.0, 50.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “key”,
“id” : “obj-12”,
“fontname” : “Arial”,
“numinlets” : 0,
“numoutlets” : 4,
“fontsize” : 12.0,
“outlettype” : [ “int”, “int”, “int”, “int” ],
“patching_rect” : [ 307.0, 18.0, 59.5, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “select 32”,
“id” : “obj-10”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 2,
“fontsize” : 12.0,
“outlettype” : [ “bang”, “” ],
“patching_rect” : [ 258.5, 49.0, 59.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “button”,
“id” : “obj-4”,
“numinlets” : 1,
“numoutlets” : 1,
“outlettype” : [ “bang” ],
“patching_rect” : [ 286.0, 87.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “toggle”,
“id” : “obj-6”,
“parameter_enable” : 0,
“numinlets” : 1,
“numoutlets” : 1,
“outlettype” : [ “int” ],
“patching_rect” : [ 454.5, 391.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “loop $1”,
“id” : “obj-2”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 454.5, 422.0, 54.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “comment”,
“text” : “play/stop current file”,
“presentation” : 1,
“id” : “obj-9”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 13.0,
“presentation_rect” : [ 434.0, 184.0, 147.0, 25.0 ],
“bubble” : 1,
“patching_rect” : [ 300.0, 351.0, 147.0, 25.0 ]
}
}
,  {
“box” : {
“maxclass” : “comment”,
“text” : “open an audio file “,
“id” : “obj-27”,
“fontname” : “Arial”,
“frgb” : 0.0,
“numinlets” : 1,
“numoutlets” : 0,
“fontsize” : 13.0,
“bubble” : 1,
“patching_rect” : [ 102.5, 351.0, 137.0, 25.0 ]
}
}
,  {
“box” : {
“maxclass” : “live.gain~”,
“varname” : “live.gain~”,
“presentation” : 1,
“id” : “obj-5”,
“parameter_enable” : 1,
“numinlets” : 2,
“fontface” : 0,
“numoutlets” : 5,
“fontsize” : 12.0,
“showname” : 0,
“presentation_rect” : [ 480.5, 278.0, 54.0, 136.0 ],
“outlettype” : [ “signal”, “signal”, “”, “float”, “list” ],
“patching_rect” : [ 50.5, 445.0, 54.0, 136.0 ],
“saved_attribute_attributes” : {
“valueof” : {
“parameter_unitstyle” : 4,
“parameter_mmax” : 6.0,
“parameter_mmin” : -70.0,
“parameter_initial” : [ -70 ],
“parameter_type” : 0,
“parameter_initial_enable” : 1,
“parameter_shortname” : “live.gain~”,
“parameter_longname” : “live.gain~”
}
}
}
}
,  {
“box” : {
“maxclass” : “ezdac~”,
“prototypename” : “helpfile”,
“presentation” : 1,
“id” : “obj-7”,
“local” : 1,
“numinlets” : 2,
“border” : 1.75,
“numoutlets” : 0,
“presentation_rect” : [ 480.5, 428.0, 44.0, 44.0 ],
“bgcolor” : [ 1.0, 1.0, 1.0, 1.0 ],
“patching_rect” : [ 50.5, 595.0, 44.0, 44.0 ],
“bordercolor” : [ 0.501961, 0.501961, 0.501961, 1.0 ]
}
}
,  {
“box” : {
“maxclass” : “button”,
“id” : “obj-42”,
“numinlets” : 1,
“numoutlets” : 1,
“outlettype” : [ “bang” ],
“patching_rect” : [ 120.5, 523.0, 20.0, 20.0 ]
}
}
,  {
“box” : {
“maxclass” : “newobj”,
“text” : “sfplay~ 2”,
“id” : “obj-43”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 3,
“fontsize” : 13.0,
“outlettype” : [ “signal”, “signal”, “bang” ],
“patching_rect” : [ 50.5, 398.0, 89.0, 21.0 ],
“save” : [ “#N”, “sfplay~”, “”, 2, 40320, 0, “”, “;” ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “seek 300”,
“id” : “obj-34”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 444.0, 571.0, 65.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “seek 300 600”,
“id” : “obj-35”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 420.0, 538.0, 89.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “resume”,
“id” : “obj-36”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 454.0, 482.0, 55.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “pause”,
“id” : “obj-37”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 462.5, 455.0, 47.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “open”,
“id” : “obj-41”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 13.0,
“outlettype” : [ “” ],
“patching_rect” : [ 50.5, 351.0, 40.0, 19.0 ]
}
}
,  {
“box” : {
“maxclass” : “message”,
“text” : “set 0”,
“presentation” : 1,
“id” : “obj-66”,
“fontname” : “Arial”,
“numinlets” : 2,
“numoutlets” : 1,
“fontsize” : 20.0,
“presentation_rect” : [ 619.0, 86.5, 55.0, 27.0 ],
“outlettype” : [ “” ],
“patching_rect” : [ 543.0, 218.0, 54.0, 27.0 ]
}
}
,  {
“box” : {
“maxclass” : “textbutton”,
“hint” : “”,
“id” : “obj-11”,
“fontname” : “Arial”,
“rounded” : 60.0,
“parameter_enable” : 0,
“textcolor” : [ 0.34902, 0.34902, 0.34902, 1.0 ],
“textovercolor” : [ 0.2, 0.2, 0.2, 1.0 ],
“numinlets” : 1,
“border” : 0,
“fontface” : 1,
“numoutlets” : 3,
“fontsize” : 13.0,
“text” : “2”,
“outlettype” : [ “”, “”, “int” ],
“background” : 1,
“bgcolor” : [ 1.0, 0.788235, 0.470588, 1.0 ],
“patching_rect” : [ 260.0, 351.0, 20.0, 20.0 ],
“ignoreclick” : 1,
“bordercolor” : [ 0.0, 0.0, 0.0, 1.0 ]
}
}
,  {
“box” : {
“maxclass” : “textbutton”,
“hint” : “”,
“id” : “obj-93”,
“fontname” : “Arial”,
“rounded” : 60.0,
“parameter_enable” : 0,
“textcolor” : [ 0.34902, 0.34902, 0.34902, 1.0 ],
“textovercolor” : [ 0.2, 0.2, 0.2, 1.0 ],
“numinlets” : 1,
“border” : 0,
“fontface” : 1,
“numoutlets” : 3,
“fontsize” : 13.0,
“text” : “1”,
“outlettype” : [ “”, “”, “int” ],
“background” : 1,
“bgcolor” : [ 1.0, 0.788235, 0.470588, 1.0 ],
“patching_rect” : [ 30.5, 351.0, 20.0, 20.0 ],
“ignoreclick” : 1,
“bordercolor” : [ 0.0, 0.0, 0.0, 1.0 ]
}
}
 ],
“lines” : [ {
“patchline” : {
“source” : [ “obj-66”, 0 ],
“destination” : [ “obj-39”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-66”, 0 ],
“destination” : [ “obj-32”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-6”, 0 ],
“destination” : [ “obj-2”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-5”, 0 ],
“destination” : [ “obj-7”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-5”, 1 ],
“destination” : [ “obj-7”, 1 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 0 ],
“destination” : [ “obj-5”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 1 ],
“destination” : [ “obj-5”, 1 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-43”, 2 ],
“destination” : [ “obj-42”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-41”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-40”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-4”, 0 ],
“destination” : [ “obj-40”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-4”, 0 ],
“destination” : [ “obj-32”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-37”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-36”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-35”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-34”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-33”, 0 ],
“destination” : [ “obj-32”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-32”, 0 ],
“destination” : [ “obj-39”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-2”, 0 ],
“destination” : [ “obj-43”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-12”, 0 ],
“destination” : [ “obj-14”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-12”, 0 ],
“destination” : [ “obj-10”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-10”, 0 ],
“destination” : [ “obj-4”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
,  {
“patchline” : {
“source” : [ “obj-10”, 1 ],
“destination” : [ “obj-33”, 0 ],
“hidden” : 0,
“disabled” : 0
}
}
 ],
“appversion” : {
“major” : 6,
“minor” : 0,
“revision” : 8
}
}

Hoop Dreams: Programming Problems

In my initial plan, I had a vision of creating a hoop that could record both made shots and misses.  I had to almost threw this idea out because it was too difficult program the hoop to differentiate between a made shot and missed shot.  One idea was to attach buttons or sensors to the backboard but obviously a user could bank a shot and get it through the hoop.  Another idea was to use vibration sensors but the hoop vibrates significantly even when the ball goes in because of the flimsiness of the basket, the flexibility of the rim, and its overall light weight.  The other challenge was to record air balls, balls that don’t touch the rim or backboard.  This would require different technology like a camera that would be programmed to see the ball and basket and see it miss the hoop.  This would have taken weeks to program, not to mention the fact I have no idea how to program such an idea.

I am using Max 6 software to provide the sound effects and keep score.  Initially, I wanted to use sounds from the commentator off of Midway’s NBA Jam, and give the hoop a bit of a retro feel and pay tribute to one of the most entertaining sports video games of all time.  I found one website that had those sound bytes on a Flash soundboard.  There was not a clear way to download these sounds so I tried some programs that would supposedly allow me to rip the sounds like Soundflower and Jack but to no avail.  So I had to settle for using a free license sound byte from SoundBible.com of a crowd cheering in lieu of a commentator.  Now I could have still used the soundboard by hovering the cursor over one of the icons and clipped the MakeyMakey to receive mouse click messages and have the NBA Jam sounds come that way.  I decided not to do that since I didn’t want to have so many components to the project and I could only have one NBA sound byte going at the same time.  The NBA Jam sound bytes get really annoying if you hear one over and over repeatedly.

Another issue I had was a little more technical in nature.  I was able to create a counter on Max 6 to keep score, along with a reset button.  The challenge I had was that the counter would not count the first press of the button, it was only after the second press that it would count “1.”  I also struggled with the toggle switch on Max because the toggle switch would turn the sound effects on and off.  Therefore, when the arcade button is pressed, it triggers the toggle switch which will turn the sound effect on; however, if the sound effect is still playing and the button is struck again, it will turn the sound effect off.  What I wanted was the button to only turn the sound effect on.

I contacted Bill Turkel about these issues and he was able to tweak my patch and fix the issues. What he did was replace the toggle with a message that communicates to the sfplay to only play the sound clip.  He also added a trigger between the counter and integer  that tells it to goes directly to “1” when the button is struck.  See the before and after images below.  If you would like to play with the patches on your own computers, here’s a link to the raw data for the old patch and the new patch.

Problematic Max 6 patch for the interactive basketball hoop

Problematic Max 6 patch for the interactive basketball hoop

Functional Max 6 Patch for the interactive basketball hoop

Functional Max 6 Patch for the interactive basketball hoop

Basically, the programming problems are resolved.  The next blog post will continue to talk about the construction of the basketball hoop itself.

Hoop Dreams

Earlier this week I made my first attempt at creating an interactive basketball hoop.  I went into the lab with Bill Turkel to do some preliminary testing to see what we could do.  My initial idea for this hoop came back in January, and now I’ve finally made some headway on this project.  As a hoop I am using a mini Baden glow-in-the dark basketball hoop.  The brand or the fact that it glows in the dark doesn’t matter for this project, but it’s a durable little hoop, and the ball is made of a synthetic, leather-like material, stuffed with synthetic cotton, like unto what you would find in a stuffed toy.

Baden glow-in-the-dark mini basketball hoop

Baden glow-in-the-dark mini basketball hoop

In order for it to be interactive, we are also involving the use of the MakeyMakey, an easy-to-use invention kit that allows users to send keyboard and mouse messages using arcade buttons and joysticks, and unconventional items such as Play-Doh, fruit, and tin foil.  For this project, I am not using any unconventional items.  The idea is simply that when the basketball goes through the hoop, it makes contact with an arcade button, triggering a sound effect and a score tally.  The MakeyMakey is connected to the laptop via USB cable, and the arcade buttons are connected to the MakeyMakey using wires with alligator clips on each end.  Each button requires two wires to function, one to ground the circuit, and the other to transmit the keyboard or mouse message (see the images below).  In order to keep score and store sound effects, I am also using Max 6 programming software which I will talk about later.

 

Back of MakeyMakey and Alligator Clips

Back of MakeyMakey and Alligator Clips

Front of MakeyMakey

Front of MakeyMakey

The first challenge I came across was that when the ball goes through the hoop, it doesn’t go straight down.  Especially, if it goes straight through (swish), the mesh doesn’t offer much resistance and cannot force the ball straight down.  As you can see in the images above and below, we initially tried to create a cardboard receptacle to receive the ball, but the ball would completely miss the receptacle.  We also found that the receptacle was a little flimsy and the plastic clip we were using to hang the receptacle wasn’t strong enough to handle the pummeling of multiple shots.

Cardboard receptacle with arcade buttons inside

Cardboard receptacle with arcade buttons inside

To resolve the waywardness of the ball, I purchased a simple food storage container from the dollar store with a similar circumference to the basketball rim,  and cut off the base using a Japanese saw.  I then cut three holes in the top rim of the container and attached the container to the basketball rim using cable ties.

Container and Japanese saw

Container and Japanese saw

I am now at a point now where when the ball goes into the hoop, it pretty well funnels down into the same place.  The challenge is to place the buttons in such a way that the ball will strike them every time it goes through the hoop.

 

 

Banting House National Historic Site: A Sanctuary for Diabetes Sufferers

Last night in my Museology course, we had a very good discussion about how museum professionals can not only engage their communities, but how they can facilitate an “affective response” from their community.  I define the term “affective response” as the emotion that visitors feel when they have an experience that impacts them on a deep, personal level.  In other words, an exhibit at a museum they saw mattered to them personally.  For example, I love roller coasters, but I wouldn’t miss it if Canada’s Wonderland suddenly closed their doors, I have not really had an affective response there.  On the other hand, if the powers that be shut down the Hockey Hall of Fame in Toronto, I would be devastated  since I am such a huge hockey fan, and because my visit there in 1997 was a memorable day spent with my parents and younger brother.

I have had the privilege of visiting many heritage sites like art galleries, museums, and historic sites.  I find that historic sites have a particular ability to evoke an affective response from its visitors.  I believe it is because there is something inherently special about historic sites because an important person lived there, a special event occurred there, or the site represents something important to the visitor.

One recent experience I had was my latest visit to Banting House National Historic Site in London, Ontario.  For those of you who are not aware, on October 30th, 1920 Dr. Frederick Banting, was preparing a lecture on the pancreas to be given at the University of Western Ontario.  That night at 2:00 am on October 31, he had an epiphany which he wrote down, “Diabetus Ligate pancreatic ducts of dogs. Keep dogs alive till acini degenerate leaving Islets. Try to isolate the internal secretion of these to relieve glycosurea.”  I don’t know what that means exactly, I’m not in medical school, but it was that idea that eventually led to the discovery of insulin, the saving grace of millions of diabetes sufferers around the world.

Due to my own ignorance, I didn’t realize the impact of Dr. Banting’s revelation and subsequent work.  Prior to the discovery of insulin, diabetics would be advised to go on a strict diet to prolong their lives for a couple of years, but would eventually succumb to starvation.  Banting’s discovery enabled millions of people to live full lives.  The impact of insulin was almost immediate for diabetes sufferers. Check out this page from the Vanderbilt Medical Center which displays a picture of a three year-old diabetic before and after his insulin treatment (on the right-hand side).  After just a few weeks, the boy went from looking sickly skinny to having a seemingly normal weight for his age.  Incredible!

What affected me personally though, was not that before and after image of the child, or hearing about Dr. Banting’s numerous military accomplishments as a medic, or the fact that he became the first Canadian to win the Nobel Prize.  It was that Banting House has become a sort of “Mecca” for those who suffer from diabetes.  People from all around the world come to Banting House to pay their respects to Banting and his selfless work in developing insulin.  Upstairs in the bedroom, the bed where Banting woke up and had his epiphany still stand. People are free to sit on it to pay their respects or pour out their hearts out to him.

Banting's Bed

Banting’s Bed (courtesy of TripAdvisor)

I don’t suffer from diabetes, but I have a few friends that do.  I am sure most people know someone that is affected by diabetes in some way or another.  As I wrote the previous paragraph I began to remember how I felt during the guided tour, and began to get a little choked up again.  I know that insulin is not a cure for diabetes, and researchers are still working awfully hard to find one, but I still feel compelled to say, “Dear Dr. Banting, Thank you for rescuing my friends.”

Postscript: Some Questions to Consider

What makes your heritage site sacred?

How can you help your visitors have an affective response?

How does a visit to your site change lives?

I don’t have the answers to those questions, but in my opinion, affective response is not always borne out of sad stories or groundbreaking historical events. Affective response can occur in a variety of ways.  Maybe your institution’s strength is programming, facilitating social opportunities, or a special artifact.  My affective response at the Hockey Hall of Fame occurred under different circumstances than my experience at Banting House.  I loved the HHOF because of an artifact (the Stanley Cup), and because the Museum facilitated a wonderful family experience.  It is imperative that heritage institutions figure out how they facilitate affective response because it lends significance to the work of their institution, and demonstrates to the community why they matter, and gives the community a reason to support and patronize the Museum.