Showing posts with label Ping Pong. Show all posts
Showing posts with label Ping Pong. Show all posts

Saturday, October 4, 2014

MakerSquare Day 28: Skills on the line (6/5)

Children play "Rock Paper Scissors" in jest, but web developers build "Rock Paper Scissors" apps in earnest. (To paraphrase Bion.)

It's been real interesting to go from some of our smaller, more focused projects--projects where we learned and employed one new technology or section of technology--to something like a full project. Because, even though "Rock Paper Scissors" is a pretty simple game, with a high requirement of two hands, as an app, there's a lot of little pieces.

You'll need HTML and CSS to display the page, with some sort of web app technology, like Sinatra, to host the server and pass info from your front-end to your back-end. Throw in a little Javascript and jQuery to make the site interactive, and you've already gone beyond the technology I had when I made my first website at Geocities. Then, on the back-end, you have Ruby handling the logic and ActiveRecord handling the database to keep track of how players are doing.

Also, at some point you have to grab some silly pictures of rocks, paper, and scissors; or come up with some weird angle to make your Rock-Paper-Scissors game stand-out. (My favorite theme so far is pirates.)

And you have to do all of that before the big, cohort-wide ping pong tournament on Friday. Because no matter how much your skills have improved in terms of HTML, CSS, Javascript, and Ruby, the real judge of a developing developer is ping pong.

Until next week, when we move into our new office. Then the only skills that matter will be coding skills.

And also Super Smash Bros. on the N64.

Saturday, September 13, 2014

MakerSquare Day 13: Rising tide of teamwork lifts all boats, tables (3/5)

I mentioned the lesson in ping pong I got a couple days ago (both: I got it and I mentioned it a few days ago). But I never told you the revelatory bit of info from that lesson: don't slap the ball, don't even hit the ball--push it.

Which I only mention because it might be useful to you.

You're probably asking, "Why would you want to help me?" I'm glad you asked me that, mysterious stranger, because it gives me a chance to go on and on and on about how I believe humans are naturally both competitive and altruistic, both individualistic and community-minded.

Actually, let's just pretend I went on and on about that topic. If you went through an Ayn Randian phase as a teen (when it's most appropriate), then you might know her idea about the virtue of selfishness: you help everyone by helping yourself. I mostly believe in the reverse: you help yourself by helping other people.

So, for instance, I'll tell you how to play ping pong better and maybe you'll beat me. Or maybe you'll be such tough competition that I'll become a better player by playing against you.

Or, to take an example from this morning, maybe you'll help me extend the legs on this adjustable table--and now we have a standing table in the classroom. Which means that all of us have a chance to get off our keisters sometime during the day. (The keister is where programmers are most vulnerable to work-related injuries.)

Result: everyone's happier and physically more comfortable. Result: All our code is better. Result: Everything is awesome.

Also, in a few weeks we'll be split into teams to complete some bigger project, which is very exciting and interesting to me since we're a huge resource for each other.

As was proved both when we made a standing desk this morning and when we worked on Javascript this afternoon.

Friday, September 12, 2014

MakerSquare Day 12: "Think in trees" (3/4)

At least, that's what our afternoon instructor said. I think he mostly meant that we should "think in trees" as it relates to the DOM--the document object model--which is representation of HTML, where everything is a node and all the nodes are connected in a family-tree-like structure. It's helpful to think in trees so you remember what's a parent node and what's a child node, which is helpful when you style things in CSS* or get things with jQuery**.

But I prefer to take him in the more philosophical sense of "think in trees"; as in, think in improving incrementally, like a tree growing. Or think in a tree's branches, so that all your ideas can spin off into other ideas. (Or, if you're using git, think in branches so that you always have some earlier version to go back to.) Or think in trees because sometimes--always and inevitably--you'll have to prune back your code to improve it.

Which is what I spent a fair amount of the morning doing. Today we started the third part of our Songify project, involving multiple tables in a database. It wasn't easy, particularly because the first change that I made involved me going back and changing a bunch of my old code. Which makes it a weird morning: not very productive in terms of code, but very educational in terms of re-viewing my code.

Today wasn't all sitting through: I did play two games of ping pong and did a lunch-time yoga. I'd be in really OK shape by the end of this program if I wasn't constantly eating.

* Cascading Style Sheets: a way to apply lots of formatting and structure to HTML.
** jQuery: a Javascript library specifically for working with online materials.

Thursday, September 11, 2014

MakerSquare Day 11: If you don't ask, you don't get (3/3)

Today's theme is basically the title.

And it all started with cereal.

See, in classic tech-company style, MakerSquare has a little kitchen with some snacks stocked by the company, including my favorite, Honey Nut Cheerios. (Consider this a plug, and, if you work for General Mills, feel free to send me cereal.) There's milk too, but, gasp!, it's regular cow's milk, which I am allergic to or intolerant to or scared of. (Whichever you prefer.)

So today, after looking at the cereal for two days, I sent an email to someone in the organization asking if we could get soy milk. And instead of telling me I'm a prima donna (which is true), she said, "sure!"

Which goes to show the truth of that old saw: If you don't ask, you don't get.

And that brings me to the structure of MakerSquare, which is very student-centered and student-led in a way. For instance, today, we spent some part of the morning talking about mentorship and about being clear about what you want from your mentor. Then, in the afternoon, we talked about CSS by all coding up a little web page together, with the students offering suggestions on what they'd want to see and then everyone--including the instructor as the final arbiter--figuring out how to write the HTML and CSS to get that.

The rest of my notes for today are all super specific CSS comments, so I'll leave you with the note that I am still terrible at ping pong, but that our master ping pong player just gave me a little lesson.

(Yes, this is tagged "Sinatra" and "Songify" because we spent time doing that, though I didn't have much to say.)

Friday, August 29, 2014

MakerSquare Day 3: Surrender to the algorithm (1/3)

Theme: Don't worry--except about ping pong

In case you wondered, yes, I take a few notes every day. Or at least, I do when I remember to. The notes for Day 3 include the note "just lots of coding."

Which is like the time I wrote on my calendar "Thursday." I mean, at least I wrote "Thursday" on a Thursday, but... Dear Past Ben: "Thursday" is not a helpful note.

But it's hard to take really interesting notes when you're engrossed in really interesting coding. Which might sound sarcastic to some people--what is "really interesting coding"? But here's something else to add to the list of things I'm nerdy about: science fiction, movies, 19th century history, and Ruby code.

So Day 3 involved practicing with objects: thinking about how many classes you might need to create a really effective library object. Which, honestly, is something I could add to the nerd list: libraries.

That was the morning learning module; the afternoon lesson, after lunch, started with a quick walk around the building before we tackled algorithms. Now, at Bard College, I took a bunch of computer science classes; and I hated algorithms. Hated the subject in the way that you hate things where you don't really remember why you hate, but only remember that you do hate.

So it's an understatement to say that I wasn't looking forward to the subject. Well, that's not quite true; on the first day, we'd heard that our instructor Patrick had an interesting way of working through algorithms, so part of me was looking forward to revisiting algorithms. Maybe now I would like it?

And you know, I kind of did. I mean, we'll see what happens when we get to run-time algorithms--worst-case, best-case, average-case. But here, Patrick's idea of the processor touching each element does make a sort of intuitive sense.

Also, I'm a sucker for any example that uses Legos.

And, let's be honest, no matter how hard algorithms might be, they are not as hard as the ping pong competition in C9.

Wednesday, August 27, 2014

MakerSquare Day 1: "We are your seat belt." (1/1)

Theme: Deep ends and safety nets

First, logistics: I'm going to try to schedule my posts to appear the morning after.

Second: Day 1 was riven--riven, I say!--by one big paradox: we were thrown into the deep end, but told we had a safety net. Or maybe the paradox is more like: learning programming can be intensely rewarding or intensely frustrating. Or put another way, instructor Nick drew a chart of our progress, which would involve sudden breakthroughs and grinding plateaus.

Which was then demonstrated for us--or on us--when we had to do some pretty heavy coding in the afternoon (after preparing our computers). There were some abstract data structure questions that weren't very abstract at all: what's the best way to think about a library? What's the best way to model a book? Would you make those as arrays? Or as hashes?

(Rule of thumb: the answer is almost always "hash" unless order matters.)

But the real work was building a program that could take a plain text file with a recipe (well, a shopping list, really) and parse it into a special class for recipes that--gasp!--we created ourselves. This is one of those lessons where... well, you know when you try to print something and the computer says "Cannot find printer" and you point at the printer and yell, "it's right there!" Well, reading is something that comes pretty easily to us, but that computers need some help with.

So Day 1 basically tossed us into the deep end of Ruby.

But, and here's the contradiction at work, we have a safety net, both in the form of the instructors (Nick, Flip, Patrick, with MakerSquare fellow Ben, who lives at the DevHouse where I live) and of the other students. When things get too frustrating or weird or you don't know what you should do or what you already did--ask someone.

As Nick said, "We are your seat belt."

Also, our office has a ping pong table. That probably shouldn't be important, but I kind of already know what our big office hobby is going to be. I mean, seat belts and safety nets are great--but so are pressure release valves like banging a little white ball around.