(Note: I wrote this WAY BACK, and just found it in my drafts folder. Thought this would make for some entertaining Friday reading)
I played Pokemon back in the dark ages. I played it without color, and with eight-bit soundtracks that you quickly turned off, lest they drill into your brain until you heard them in your sleep. My introduction to the series came by accident. A friend really, really needed me to take his shift. Needless to say, we weren’t that good of friends, so he offered me his Nintendo GameBoy as payment for doing a few back to back Saturday shifts. He even threw in a copy of Pokemon Red as an extra thanks.
So my first experience with Pokemon was mostly with thumbing through his finished game of Red, decimating various random people (often by accident), and thinking, hey, this is a pretty neat game.
For most people, this would have been a start of a yearly ritual. Buy the game, convince your friends to buy a different version of the same game, collect everything, trade like mad. Not me, though. I quickly hit a wide swath of poor that kept me from getting many new games for years, let alone ones I knew required a yearly upgrade.
Fast forward thirteen years. We’re in Target, and Pokemon X and Y are on the shelf. “You should get that!” My son holds a cartridge up to me. “You wanted a new game, right?”
I know I probably protested, but my family is very, very good at convincing me to get things, especially video games. We put Pokemon X in the cart, and I got my first Pokemon game in over a decade.
And so it begins
That night, I popped it in. I didn’t know what the hell I was doing, but that didn’t matter, right? I knew the concept well enough, and there would be a tutorial. There’s always a tutorial.
There was no god-damn tutorial.
I decided that I wasn’t going to google every question I had. Just the few resources I checked out made my eyes cross. At this point, Pokemon is getting close to being like chess. If you crack open a book, there are a finite number of optimal gambits that work with chess, and you have to learn them all before you get to one no one has used before. I decide that puzzling my way through will be more fun.
I caught breakfast with a bunch of strangers around my age, they tossed a Pokemon at me, and abandoned me to make my own way to Professor Sycamore (Sycamore?! Wait! I saw the show! It was Oak, wasn’t it?!).
I cursed my companions all the way. First, they decided my name was no good. K-kins?! What was wrong with the name I’d picked out?! What sort of twee shit is that? Second, they seemed to be skipping along while I quietly panicked, wondering if I’d completely screwed up everything forever by picking the cute fox Pokemon. I didn’t even know what these moves were!
I tried some random moves. Some did damage. Others did fuck-all. None healed. And the moves were getting used up as I flailed about.
Wait. I calmed myself. I could read the instruction booklet. That would tell me how to fight, and maybe keep me from dying.
I opened up the Pokemon case. There was a warning about burning out my retinas with the 3DS. There as an invitation to join Club Mario. And that. Was. It.
I was on my own.
Hot for teacher, and who needs friends?
I finally make my way to Professor Sycamore. I am stunned to learn that dude is a hottie. He has bedroom eyes, fabulous hair, and, for a cartoon, knows how to rock a lab coat. I double check the age of my silent protagonist.
DAMN. She’s ten. There will probably not be a romance with Professor Hot Pants. I start planning my fan fic anyway, set at a time when the creep factor will be down to zero.
Eventually, I get some Pokeballs (or maybe I had them all along? I didn’t sort out how to check my inventory until an hour in). I can build an army now! Wait, how the hell are they getting out of the Pokeballs?! And I’m not getting them back?! I google a bit.
I realize I need to beat them up more, and this realization makes me uncomfortable, to say the least. Aren’t… Aren’t the Pokemon supposed to be my friends? Didn’t Ash and his Pokemon have picnics and shit? Was there really abuse happening in the background, or was that scrubbed from the American version?
Around this time, the people I originally breakfasted with who left me to my fate have been popping up. I realize, belatedly, that these idiots are supposed to be my friends. I have danced around in many fields, but never have I been in one where my ‘friends’ battle me right when I’m about to go chasing after some big helping of plot.
I consider mugging them, but their Pokemon kind of suck. That, and they never seem to be playing with a full team. I mean, I had six Pokemon before I left the first forest. They only have two? What are they doing with their time?!
The alpha of the group is particularly annoying. He has to beat me because his parents were awesome Pokemasters. He has to beat me because I started later than him. The speeches aren’t gendered, but since I’m playing a girl, I get flashbacks to when guys have had to beat me at a game because I happened to have some fleshy secondary sex characteristics in my t-shirt.
This guy is an asshole. I relish destroying him every single time.
Oh, wait, you’re the bad guy!
At some point, I’m introduced to some dude with spiky hair and big ideas. Oh dear. I’ve watched enough anime to know that those two combined usually mean ‘nemesis’. It’s a pity, too, because beneath the crazy he has some valid points. War is bad? I can get behind that! Resource scarcity causes fighting? History proves that, time and time again. Okay, I like this dude.
Oh, wait. Your solution to this is to kill everyone. Sigh. Of course it is. Of course it is.
I am a bit disappointed in him, though. I mean, he has the smarts and resources to do great things, but then he hires complete morons to get in my way. I don’t think Team Flare made me sweat once, save for some named bosses. Most of the time, my only thought was, oh, cool, more money.
Maybe they were supposed to be hard? One benefit to not knowing what you’re doing? You accidentally level yourself to the point where the main encounters aren’t any big deal.
I’ll show you fancy!
At first, I only needed enough money to keep me in potions and Pokeballs. I didn’t run after cash opportunities. I had my eye on the prize.
Then, I wandered into the clothes store in the main city. They kicked me out for not being fancy enough. They were nice about it, but I’m sure they immediately disinfected the square foot of Italian marble I had occupied for all of two seconds as soon as they threw me out on the street.
I’m not good enough for your store? Not good enough to even LOOK at your stupid hats?! Oh. You wait. You just wait. I am going to be fancy as fuck. Screw the bad guy. The goal of the game is now to buy everything in that damn store. Then put it on a Froo-froo.
Oh, wait, this hat is totally boss
Now that I was buying clothes, I became obsessed with matching my outfits. And, once I had cute outfits, I have to go take pictures of myself at various photo op places. (I tip well. I have no idea why I’m tipping, but I still don’t want virtual photog dude to think I’m cheap.)
I was mildly peeved when forced to wear a clunky black bracelet in order to do some mega-evolving because it clashed with my outfit. Then I realized that I can totally go shopping for a new outfit now. Saving the world was paused while I put something new together.
I have real life friends!
At some point, I discovered that I have friends who also play Pokemon. Like, a bunch of friends!
It is also at this point that I discover that most of my friends beat the game in a weekend. Two weeks in, I’m still poking along and whining about the lack of fast travel. How are they doing this?!
I also find out that apparently I missed a skill in the first freaking town that would have made it easier to capture Pokemon. Naturally, I don’t backtrack to get it until the game is over, and my boxes are overflowing.
Never google anything ever.
At some point, I ran into a goth girl Pokemon master. Oh, that would be an easy Halloween costume! Little goth-y lolita dress, a purple wig, some contacts, and BOOM! Instant inside reference. I could even dress up my dog as a Pokemon! But the 3DS screen didn’t show much detail. Maybe they showed her in the show somewhere, or there’s some fan art I can crib.
I did a Google image search for ‘hex maniac.’
Then I cried under my desk for a while. Never do an image search on any Pokemon stuff ever ever ever.
And then it was over. Ish. Over-ish.
At some point I was blocked from going forward until I stopped screwing around and dealt with the big bad. Fine. I’ll go mug him and get his ultimate whatever so I can get that last badge.
I think it’s a good thing that I’ve never had to save the world. I’d probably only do it while rolling my eyes.
Anyway, my useless ‘friends’ show up, and attempt to steal some of my spotlight by throwing their Pokemon into the ring. Dude. DUDE. Mine are easily twice your level. You are offering up cannon-fodder. I’m good without it.
Anyway, this meant that they got to be in a parade with me and people in the Pokemon verse are all talking about who was hooking up with who on the path to glory and UGH that alpha dude was such a jerk to the end that the thought of such gossip makes my skin crawl.
Of course, at this point, I still have to go get my last badge. I found it a bit funny that the world was saved by an amateur. I mean, what were all the Pokemon masters doing? Does the weight of catching them all render you immobile? Maybe that’s why they’re always hanging around in their gyms.
The game is so not over
Even with all the badges and having saved the world, the game is not over. I have not caught them all. I can’t even get a straight answer on how many there are. I keep seeing numbers over 700 bandied about, and while my mind rebels at the notion of having to catch that many, another greedy part demands that I have them all.
I have bought the boy a copy of Y so he can deliver more Pokemon to my trainer. We’ve hatched plots on how he can trade with his classmates to up our reserves. We debate whether we could train the girl to play, even though her reading is rough, and use her to farm some of the regions.
I think Nintendo has two more fanatics on its hands.
If you write a tech book, eventually, you’ll be asked to find tech readers. It may not even be for your book! I’ve been asked to find tech readers for other people’s books several times, especially if the book is geared towards beginners. I teach, so naturally, I know more than a few new coders.
But… what is a tech reader?
Simply put, the tech reader is the person who reads the book with an eye to technical accuracy. Grammar, layout, spelling: None of these are your bag. You make sure that the explanations make sense. You run the code to make sure it works. You point out if the author has glossed over something major, or if they’re using something that hasn’t been used yet.
The level of experience you need varies. A book should always have some tech readers who are the intended audience (so, possibly, beginners), but you also need experts to read the book. A beginner will pick up when they get confused more easily than an expert, but an expert is more likely to point out when you’re incorrect, or leading someone down the wrong path.
For example, Doug Hellmann was one of my expert technical readers for Teach Yourself Python in 24 Hours. Back in the day, I had planned a chapter on pickles (because I had to have 24 chapters and was having trouble with what should go in the middle of the book). He was the one that suggested that I should probably just teach JSON instead.
My beginners chimed in when they felt I was going too fast, and were experts at noticing when I was using something I hadn’t explained yet (like showing a for loop while teaching lists, even though I wasn’t covering for loops until the next chapter). Stuff like that is difficult for an expert to pick up on because, well, for loops and such come naturally to us.
I’m going to be frank about this: The pay is not great. Some places will toss a bit of money at you (around a few hundred dollars) while others will offer you a copy of the book. It not only varies by publishing house but by individual book. Some books simply end up with more of a budget for readers. A book that needs both beginners and experts will have more money allotted to technical readers than one aimed just at experts.
So why do it?
If the pay sucks but it’s going to take you a while to do, why would you bother to be a tech reader?
The biggest one: If you want to be a writer, this is a great way to get your name on the list. You get to chat with the editors and other authors as well as show off your chops. There are other ways to get your foot in the door, but when it comes to breaking into the writing scene, I recommend knocking on all the doors you can find.
Sometimes, you just want to do good turn for someone in the community. I have tech-read books because I consider someone a friend, and I want their book to be as awesome as possible.
It’s also a wonderful learning opportunity, if you happen to be a novice. Not only do you have a book, but you have access to the author. Not clear on a point? Shoot off an email! During the tech review, my job was to basically sit around and wait for my readers to email me with questions.
Finally, it helps create a better book. We always need more tech books. I know, it seems like there’s already a ton of tech books out there. Unlike a novel, though, tech books have a very short lifespan. Within a few years, they’re out of date, and a few years after that, they’re often useless. We need a stream of new books and updated books to help spread ideas and bring new developers into the fold.
How do I become a tech reader?
If you’re already friends with an author, then I would suggest telling them that you would like to be a tech reader. Most of us keep a list on hand for when our editor inevitably asks us to gather some people (I know I do).
If you see a booth for a publisher at a conference, talk to the people staffing it. I assure you, these people are not interns. They’re usually editors, authors, and community managers, and if they don’t know of a project you can help on right now, they can pass your information on to someone who does.
Finally, if you don’t go to conferences and don’t know any active authors, try Twitter. Every major publishing company has a dozen contact emails you can try, but I’ve found the people manning the Twitter accounts to be the most responsive. Most will follow you back so you can have a private conversation.
Just… don’t do what I did and complain about the quality of tech books. It worked for me, but you should probably start off with politeness rather than being a grouchy cuss.
A few weeks back, I got a chance to teach a Flask class to my local PyLadies chapter. Normally, when I run a class, I spend a lot of time typing into the shell and into an IDE, then waiting for the students to do the same. My co-teachers and I then run around trying to correct typos, indentation errors, and syntax. The end result is aching backs and feet, and quite a bit of lost time.
I began to wonder if there was a way to get that time back. Could I take typing out of the equation while still giving the student the power to play around with the material? I realized the solution was in something I touched every day: Git.
Rather than have students type examples in, why not have them check out a specific commit from the class materials and run that? They could mess around with the code, reverting once they were ready to move on. `git diff` would tell them what had changed between commits, so they could see how the new functionality had been added.
After a few weeks of outlines and careful commits, I finally had something I could use to teach a class. I decided to test it on DC PyLadies.
Teaching a class this way does require a bit more set-up than usual. We couldn’t just install Python and go. We had to install:
- All the stuff that comes with Flask
Because we only had four hours, I skipped over virtual environments, promising that we would teach that next month.
I did cheat a bit by bringing in the Flask chapter from Python in 24 Hours, since that goes through installation of almost everything above. Still, that didn’t save us from having to put fingers on keyboards. On Windows machines, we had to fix paths. Some of the Macs were finicky. I would say, all told, we spent an hour getting everyone rolling.
Starting the class
I had thought about making slides, but ran out of time. This ended up not being too much of a problem. I simply spend most of the time live coding in front of the students.
The process was simple.
- We checked out the code from my repo
- Ran git log --oneline to look at the commits
- Checked out a specific commit (starting with the second one)
- Then, we used git diff to see the difference between that commit and the last.
- Sometimes, we monkeyed around a bit.
- Finally, we’d reset and pull the next commit.
The first few commits were the hardest. There was a ton to explain, such as what a decorator was, what “starting a server” meant, what __init__.py was doing, where the heck the HTML was coming from (we hadn’t created any templates yet), etc. Even with almost minimal code, we probably spent the first hour just going over the first three commits.
Once we were over that hump, however, commits moved quickly. I’d check one out, go over the diff, and almost immediately, everyone got it. In fact, in later commits, I almost felt like I was moving too slowly.
Even with the speed-up, I still wasn’t able to cover all of the material. I had expected this, though, since the class was really meant for a longer workshop. Still, everyone left with working knowledge of Flask and a nice introduction to git.
What will I change for next time?
First off, I will most certainly factor in more time for setting up. I tried to get students to set up their own environment beforehand, but there’s no way to make sure that everyone does that. Some get stuck on an install. Others install the wrong thing.
What I’ll probably do is have a dedicated set-up time before the class starts. So, if the class starts at 1, then the set-up party starts at 12.
I’d also have someone dedicated to setting up stragglers, and make sure they do it outside of the classroom. This, of course, means I have to get a volunteer who knows Windows as well as Mac OS and Linux.
I’m also investigating doing all of the installs off of a thumb drive. We were lucky that the library’s wifi held up, but there have been some meetings where no one could get more than a trickle of bandwidth. Being able to install Flask (and all of its dependencies) without needing wifi could save a bunch of time in a pinch.
One of the things I skipped was hacking on the code together between commits. The original plan was to propose a small change, then let the students do it. Then, I’d check out the next commit to show how I did it. The room we had and the time we had were both too small, though, for this much interaction.
The code I have isn’t finished, yet. I’d like to get Flask talking to a database. I’ll probably add another project so that I can more naturally add in things like text search, pagination, and reusing data in several views (maybe a blog app? Everyone needs to write a crap blog app, so we might as well get that out of the way).
I’d also like to cover using Python Anywhere to get your site out in the wild, and perhaps even deploying to your own server (something I think everyone should know how to do).
Finally, I should add a section on tests, since this would be a good place to teach when you should write a test, and when you shouldn’t.
Want to help?
My repo is here! I’m more than happy to accept suggestions through issues and code through pull requests. All I ask is that you comment clearly in your commits so that it’s easy for anyone to know what exactly they’re going to be demoing next.
Also, try moving in baby steps. If someone wants to run the class at a faster pace, they can always skip commits. And if you want to run the class? Please do! If you can, let me know how it goes, and what would make the materials work better for you!
This holiday weekend, I turned in half the chapters on my new book. Guess that means I can start talking about it, huh?
My new book was inspired by a conversation I’ve had with several parents while running Young Coders. This exchange happened every time I ran a class, and sometimes, has happened several times during one session.
“I tried to teach my kid how to code before, but it didn’t seem to stick. I hope this class gets them interested!”
“How did you try to teach them?”
The parents seemed to fall into two groups: Those that tossed a book at the kids (“That’s how I learned!”) and those that tried to show the kid how to code (“I taught them to use the toilet and ride a bike, and I train people at work. How different could this be?’). Neither approach seemed to work very well unless the child was already deeply interested in coding.
Some might say that the only kid you can get interested in coding is one that already seems predestined to be a hacker, but my experience teaching says otherwise. One of my most disinterested students was a teen girl who was only there to make sure her brother behaved. At the end of the class, she was one of my best new coders.
So, what was missing? Why were books and parents falling flat, but classes doing so well?
The answer was surprisingly simple: The parents didn’t know how to teach.
How do you teach?
Teaching is not a simple act. Your mind is in constant motion, thinking about what you need to teach, what the student knows, and what you need to lay out to bridge those two things. You also have to keep an eye on how the student is doing. Are they tired? Overloaded? Distracted? Confused? Stuck? Do you need to go back and review a concept, or do they just need to get up and walk around a bit? Oh, wait, have we fed them? Could they just be hungry?
You also have to take the knowledge in your head and rip it apart, breaking it into chunks that can be easily taken in and reassembled. You have to figure out which chunks rely on other chunks, and try to find a good place to start. If you think this is a skill we all have, go ask a co-worker to explain the most complex part of your stack to a new hire. How many times is the new hire confused because the old hand left out something vital?
So what was wrong with just handing the kid a book? When I asked the kids (my son included) it usually came down to getting stuck. They’d come to a place where they got a minor bug, or where a piece of jargon wasn’t explained, and they’d shut down.
I’ve seen this happen in classrooms, but with a difference: There, we had someone at the ready to jump in and fix the mistake. Once the mistake was fixed (or the concept explained again), the student would dive back in.
So, how could I help? I’m teaching as many classes as I can. Could I write a book that could help?
Teaching the teacher and the student
I realized that we needed a book written for two audiences: students and mentors. The students needed to be taught how to code in such a way that they never got overwhelmed and had ample opportunities to practice the skills they gained. The mentors needed to be taught how to teach, helping them strike a balance between jumping in and leaving the student to fend for themselves.
After pitching it to my editor at O’Reilly, we also decided to add videos to help reinforce concepts and to help students review when needed. Lessons about Python are broken up by projects that use all the skills the student has acquired by that point. Some are, of course, games, while others are more practical (like a to-do list manager).
The ages I’m writing this for are somewhat fluid. It’s written at a 6th grade level (which is where most tech books should be written, in my opinion). A middle schooler would probably be able to make it through most of the chapters with the mentor off to the side, providing occasional encouragement. A precocious third-grader could probably make it through most of the book with a mentor providing support during the coding bits.
Hey, I know someone who would enjoy this!
Good! I’ll need tech readers soon! The final chapters are due at the end of November, with the tech review starting a bit before that. This might make an interesting winter break project!
If you would like to be a tech reader (or just want to know more about this book), contact me either through Twitter (@kcunning) or my email.
Oh, and I’m totally looking for a better title for this thing. If you have any ideas on that front, ping me as well.
I have been mainlining Rune Factory 4 so hard, I've had to take pain meds for my shoulders and hands. Even though I only played through the first ten minutes or so of RF2, I have found myself completely drawn in by a story that largely features the best way to grow turnips, all while saving the world.
That said… content developers? We have to talk about the romance options you gave me.
My warrior woman
I bonded fiercely to my character. You're given the option of man or woman, so I picked the woman, Frey. Solidarity, after all. Also, woman characters get cuter outfits.
Now, at this point in the game, my character is bad ass. She got knocked out of a ship, lost her memory, landed on a dragon, proceeded to sass it, and got herself appointed princess. This is in the first ten minutes.
Several seasons later, she's saved the world, won the love of the townspeople, and amassed a fortune. While solving everyone else's issues, she runs her own farm, makes her own armor, continues to sass at a dragon, and tames massive creatures to do manual labor for her.
Less than a year, this woman has done all this, and shows no sign of stopping? I want to be Frey when I grow up.
A major feature of these games is the idea that you will marry a local and maybe pop out a kid or two. Now, the dialogue in this game is actually quite good, so this was something I was looking forward to. It doesn't hurt that you can date several characters at once with no problem, so it's easy to test the waters without committing. You only have to lock it down when it comes to a ring.
One problem: I don't want any of them.
They're not badly written (they're great!). But when I think of Frey going out with any of these dudes, much less pledging her troth, I feel bad for my badass woman.
Let's go over our options.
This probably would have been the guy that I would have been bending myself backwards to please, fifteen years ago. He's so dark! So moody! But OMG his thought bubbles let me know that he actually secretly likes me! I will give him ALL the carrots!
Now? I have no time for that moody bullshit. He is an outright jerk to you for the first, oh, thirty or so interactions. Frey wrote him off at about interaction ten. At this point, she's just being polite because he's friends or something with the dopey dragon.
Another asshole! Because girls like their dates to warm them up by insulting them!
This one isn't even moody. He's just a jerk. He's arrogant, tossing out barbs even though you saved the god-damn world and pulled him out of oblivion. And worse than that? He assumes you like him! Several times, he tries to railroad you into saying you think his pecs are all that or that you really dig his pantaloons, just so he can tell you that he doesn't think much of you at all.
I seriously contemplated running around with him in the woods, just to watch him die, over and over and over.
Vishnal is a butler in training, and has decided to train on you. He's sweet. He's dedicated. He's a fast learner. He's very obviously into you. He's the kind that would probably do anything to make Frey smile.
That power dynamic, though… It just creeps me out. I'm a world saving princess. He's a fan boy. I just can't see me and Vish one day being on a level playing field. He's more the kind of guy I'd keep on the side so he can clean my feet with his tongue.
I'm just not opening a banking account with him.
Doug was looking at least a little good, until he went off and considered killing my best friend.
Maybe at 20, I would have looked past that. He was just being passionate! He really thought that the dragon had done something bad! I mean, okay, he didn't do any actual research, but Doug's not that kind of guy! He's all heart! You don't know him like I do!
At 33? Nuh-uh. Go dip your stick elsewhere. I'll be hanging with my girl, the dragon, and some people that actually check shit out now and then.
I think Kiel is twelve.
And that leaves us with…
Now, Arthur isn't a bad dude. He's super dedicated to being a prince. He's slow to excite. He uses his resources wisely. He even bows out of being the local hot-shit royalty when he sees that you do it so much better. He accepts gifts with grace, and thankfully, the stuff he likes is super cheap.
Good thing that his gifts are cheap, because it takes forever to get him to look your way. Every other dude, even the guys that were jerks, are way more into Frey than he is, and that was just with me saying 'hey' to them every day. It took a mountain of pickles and eyeglasses (don't ask) to get this guy to even think about moving my name to his little black book.
And once I was there? Good luck actually getting a date with him. Damn workaholics.
Why bother? Because, at the end of the day, he's the one guy who is actually a peer to Frey, he's never been an ass to her, and hell, if I'm going to rule this world, he makes a logical choice. Might as well marry into power, rather than take it by force. We'll leave that for the next empire over.
But GAWD, I just know their sex life is going to involve spreadsheets.
If the bachelorettes were an option…
Life would be so much better. I'd happily tie myself to nearly all of them. There's a kick-ass knight, a talented musician, a butler who doesn't spend all her time fawning over you, and a woman who can talk to ghosts. Such good options! The only faults of the remaining two are the pesky age issue, which I just cannot deal with.
For a while, I thought that they were allowing same-sex relationships, because the women keep flirting with you. But no, alas. My little town is not so forward thinking. Maybe after I bring the bloody revolution, we can get that put right.
Maybe this is part of gaming as a woman who's 30+. I'd really love it if content devs would take a look at the options I get and think "What would someone who is over the emo BS or cutesy shit want?"
I don’t do resolutions. I don’t have anything against them, but they do feel like daring the universe to throw distractions and impediments your way. The few years I’ve made them, I’ve had some ridiculous results.
Plan to lose weight? Get pregnant.
Decide to spend more time on my hobbies? Get a promotion and become crazy busy.
Get the house in order? Extended family medical emergency.
So, instead, I like to look back and think about what I got done this past twelve months.
2013 was insane. I’ll sometimes talk about how I felt like I spent my early twenties idling. These days, I feel like all the action that should have happened then is being crammed into my early thirties.
Barbara Shaurette and I ran the first Young Coders workshop. Maybe someone else saw how much this was going to explode, but I was caught completely off guard. I ended up running another workshop at PyOhio, and I have several more lined up for 2014.
For the first time, I spoke at a technical conference that didn’t revolve around Python.
I published my second book. It ended up being three times as long as my first, but out in the same amount of time. I’m getting better at this!
I got my first one star review. I survived it with a bit of wine and a lot of comfort from other author-friends.
My daughter started kindergarten. All of the children are now in school!
I got the urge to mother something. Rather than have a baby, I got a dog. Dog > baby, 100%.
My husband and I celebrated our first anniversary. I actually got around to planning our honeymoon. I explained to the kids that no, they were not going with us. I threatened to go into detail as to why.
I taped a series of videos for my book. I thought this would be easy, since I do talks all the time, but the experience was both surreal and educational. I learned that I talk way too fast. I also learned that being slightly prepared makes you something of a treasure in the tech world. I think I got thanked for having my slides ready the day of the shoot about forty times.
I took up knitting again. I don’t know what’s changed, but I’m suddenly knitting much faster. Projects that were taking me months to finish are now taking me weeks. Look at all these things I made this year! Most of these were done in the last quarter!
I won NaNoBlogMo. I even sold some of the posts!
I convinced two of my friends to join me at Cox. I realized that I no longer word my sentences so Cox doesn’t sound dirty. When someone makes a joke about it, I stare at them blankly.
I brought some nail polish to a conference, and it became a thing.
2013 was so packed that I’m staring at the items above, certain I’ve missed something.
I don’t have a proposal in for a third book yet, but I have some thoughts. I’ll probably spend January banging out some outlines and seeing what sticks.
2014 actually has some planned vacations! This is a major shortcoming of mine. I tend to not plan in time to just get away and drink fancy drinks and read. I travelled a ton in 2013, but all of it was either business or to visit family (which, while nice, is totally not a vacation).
I have a few conferences lined up. Some, it will be my first time (PyTenn!), others, it’ll be like going home (PyCon!). At least this year I’ve actually planned well in advance.
The boy will start his last year of middle school. We will start preparing for high school.
The girl will start getting actual homework. I’m girding my loins for that battle.
Here’s to 2014 being as awesome, though maybe a bit less hectic, than 2013!
I freaking hate wikis.
Note that I’m not talking about things like Wikipedia or Bulbapedia (my two favorite wikis). Those are maintained by fanatics and are generally up to date. As long as you’re not on a controversial article, you’re probably safe to show it to someone to prove that they’re wrong about something.
But wikis need fanatics. They need people that will get het up over proper format for an article, or point out where you need a citation. They need people who are passionate about a certain topic who will haunt their pages and immediately check any change.
You know where we have wikis without fanatics? Our workplaces.
These commons are tragic
I’ve yet to hear of a tech company that operates without some sort of wiki. Maybe they’ve called it something fancier, like an enterprise dynamic document management system, but it’s still a wiki. Everyone can run around editing stuff. It doesn’t matter if you wanted to call it something more business-like. At the end of the day, you have yourself a wiki.
But corporate wikis are like the company fridge. Eventually, they get nasty. You get to the point where you know when someone opened the fridge, because you can smell it down the hall. There are terse emails and passive-aggressive notes, but none of that cleans the fridge. Why?
Because it is everyone’s responsibility, and therefore no one’s responsibility.
And that’s one of the features of wikis that drive me insane. Everyone can edit and maintain pages, so therefore, no one does. The health of the wiki is rent asunder because everyone assumes someone else will take care of the accumulating garbage.
What does a healthy wiki look like?
There are those that insist that wikis will always be a dump, as if this were a feature of wikis themselves. That’s not true. Wikis with fanatics tend to be fairly healthy. They’re more like a fridge with a few suspicious delivery boxes than a full-on disaster area.
So, what are the features of a healthy wiki?
- Search isn’t broken. I should be able to find what I’m searching for with relative ease. I should be able to do this using just a few search terms, and not by breaking out advanced search. Advanced search is a sign things are going wrong.
- The contents are accurate. I shouldn’t have to email someone to find out if a page I found is still accurate. No, a warning that the page is deprecated is not helpful.
- The contents are relevant. Every page should be immediately relevant to at least one user of the company. And not in a ‘gosh, remember when we had that crazy dev set-up’ kind of way. That person should need the information on that page to do their job today.
So how do we get into this mess where our wikis are completely useless? Well, we have some bad habits.
You don’t need to keep everything forever.
You really, really don’t. I swear. No one will care, two years from now, how we had search set up on those test environments that we ended up taking down and never using again.
I know that one of the features of wikis is keeping tons of information in one place, but you know what another feature of wikis is? Page history. If someone really needs to know about that (and you’re following better practices), they can find it.
No one makes sure that what’s there is actually accurate.
I’ve run into this so many times. I find the instructions on how to do something on the wiki. I try them out. They don’t work. I have never had instructions on a corporate wiki work the first time. I usually have to grab someone to figure out what in our crazy set-up is breaking. That’s when I find out that the instructions would never have worked. They either skipped steps, made assumptions, or were completely out of date.
Why was it out of date? Who knows! People either had their own instructions for setting up this feature, had gotten used to the missing steps, or had figured out how to do their job without it. No one passing by ever fixed the instructions, probably because we were so relieved just to have the feature working finally.
You put everything in the wiki. EVERYTHING.
Nothing drives me more mad than looking for the documentation on how Widget X works, only to find nothing but meeting notes about Widget X. Maybe, if I’m lucky, I find the actual documentation about Widget X on the third page of results.
There are so many things that do not belong on the wiki. They clutter search results. They make sections difficult to navigate. They give you more crap to maintain. Your wiki is a dump because you treat it like one!
You let too many people into the wiki.
Many companies have only one wiki. So useful! Everyone can search everyone else’s stuff and find answers across divisions! Oh, and we only have to buy one copy / keep one installation updated.
But this leads to organizational issues. One group may use the wiki as a dumping ground for meeting notes. Another may use it to document how their system works. Yet another might use it to discuss what they might want to include in their architecture. And then there’s that one group that puts cookie recipies up.
Also, the more people you have, the more diffuse the blame. If there are five wiki users (and no fanatics), there’s not that much blame to go around. Everyone has to pitch in. If there’s a hundred? No one is at fault because everyone is microscopically at fault!
You only have one wiki
People. You’ll buy everyone at your company MacBook Pros and Cinema Display monitors, and you won’t stand up one more wiki? Really?
There are free ones and they can be run off a thumb drive. I’m sure you can find the money and hardware somewhere.
So what are the good habits of wiki maintenance? Sure, it would be nice to get some fanatics in here to take care of this for us, but let’s be real. It’s a corporate wiki. We’re going to care more about who’s turn it is to bring in donuts, and what they’re stocking in the soda machine.
Break off into groups
The most effective wiki set-up I ever was immersed in was one where we broke off into groups. Design had their group. The Python people had theirs. Java had their own as well.
We could all check out each others wikis, but for the most part, we worked in our own. This kept the numbers down on each wiki. I believe each one had fewer than a dozen people who were active participants. The one I worked on daily had five people. This meant that there was tons of blame to go around if things went wrong, so we tended to hold our edits to a higher standard.
Decide what goes into the wiki
Maybe a group really does need to keep track of meeting notes forever. That’s fine! That’s a use case for that group, and they can feel free to put those notes in their wiki. Maybe they even have a wiki just for meeting notes.
My group tended to want things such as install instructions and notes on our architecture. We had notes about dealing with production issues, and important contact information. We kept our discussions to our mailing list, our meeting notes on a shared drive, and used our wiki as a snapshot of how stuff works today.
The front page is important
On most wikis, the front page is the most neglected page. Before my old group buckled down, we had:
- Projects that had been canned over a year ago
- Emails for people that had left two years ago
- Mailing lists that had been moved to another service, with a different subscribe email address
- Phone numbers to phones that had been given to other people, sometimes on different contracts.
- For some reason, a previous version of the page, saved beneath the current version of the page, like a dying man clinging to a raft.
My first act in the great razing was to remove all of that and post something more sensible. We had links to important pages within the wiki, but very little information on the page itself that would change. Why would we post that in multiple places and invite entropy in?
Decide on a structure
Structure is highly important. New pages should be made with caution, because every page you create makes the wiki slightly harder to maintain.
If it’s a technical wiki (and not a CYA wiki, which is what I call meeting note wikis), you probably want to have one page for getting your development environment up and running. That page should forever be the go-to for figuring out how to get everything working on your local. Another page might be dedicated to troubleshooting search (note, not SOLR. Search. You may change what you use for search one day).
Basically, the idea is to have every page be the one place to update information about a certain topic. I should be able to bookmark that page and go back to it, and get the most recent information about that topic. That’s how wikis work. How would you feel if you bookmarked the page on, say, Voyager, only to discover that someone had made a page called ‘Voyager - New page’ and started putting updates only on that. There would be a Wikipedia revolt.
History is your friend
You know how we’re just updating that one page with relevant information? That means we have to remove the information that’s no longer relevant. But fear not, wiki citizen. That information is not gone. It’s merely resting in the page history.
Should anyone care how we were doing things a year ago, they can look it up. If they want to see who decided to move remote the database setup from the install instructions, you can check that out. It’s like having the world’s most boring time machine.
No one is fixing that page when they have a deadline
Remember that no one is ever going to stop in the middle of a crisis and start fixing the install instructions. There are fires to be put out, deadlines to meet, and metrics to massage.
So, accept that this is a part of human nature and find a way to work around it. One way you might do this is dedicate time to cleaning out the wiki. Just like you probably ended up assigning someone to clean out the fridge, you’ll probably need someone to run through the wiki to make sure it’s up to snuff. They should verify:
- Any instructions work
- Groups and SME lists don’t reference people who have left
- Phone numbers and emails are accurate
- Working groups are accurate
- The architecture actually reflects what you’re using
You probably want to have this duty rolled around various groups. I strongly recommend a bounty so that it doesn’t get a vague nod before it’s passed on. My office has the ability to pipe in sound. I may ask that our bounty be the ability to pipe in one song of our choice at lunch time.
Note that I’m a remote employee. This makes the option that much more fun, though.
I recently bucked my usual trend and decided to buy myself a Galago UltraPro from System76. Normally, I wait a few iterations to get something new, from phones to gaming systems. By the time I get my hands on one, I’ve read dozens of reviews, watched the bug reports, and interrogated everyone I can find on Twitter about the product.
This time, though, they hit a unique nexus of needs. I needed a new laptop. I wanted one from them, but was on the fence about the current offerings, and I had cash in hand, ready to throw down for a new machine.
I’m going to go through the whole process here, so if you’re just looking for my review of the machine, you might want to skip down to that part.
I’ve been a huge fan of System76 for a while. A coworker turned me onto them when, for the millionth time, I complained about some weird issue between my install of Ubuntu and my Toshiba. Why not try a machine that comes with already installed? I can get that, and I can get a company that’s incredibly dedicated to the platform.
I have to admit, I used my kids as guinea pigs first. My son’s Toshiba died (I shall never buy refurb again), and I decided to buy him a Pangolin Performance (no longer offered by System76). It was a sturdy machine that should be good for homework as well as Minecraft.
He adjusted quickly, and I have to admit, I fell in love with being able to open the machine up, set up the network, and go. Some people don’t mind spending a few hours tweaking drivers or trying to figure out why certain videos are green, but I don’t have the patience. I want to start using the damn thing, or at least hand it over to a child that’s eager to begin.
He loved it. He adjusted to Ubuntu in minutes, and once I showed him how to start up Minecraft, he was sold on the power. No lag! Fancy graphics! All the mods! Over a year later, he still uses it for homework, YouTube, and gaming, and his sister has one to match.
At this point, I was sold on them. System76 was turning out solid machines at a fantastic price, and the support, which I barely needed, was responsive and well-versed in Linux and their machines. I wanted one.
I didn’t want another monster machine. I was travelling more, and I wanted something I could toss in my bag, possibly next to my work machine, and zoom across the country without killing my back. I still wanted power, though. I wanted a full-sized keyboard. Oh, but give me ports. Lots of ports. Momma has peripheral needs.
Then the Galago UltraPro came out. It was just what I had been waiting for. Small. Powerful. Light. Lots of ports. I thought about waiting for reviews, and decided that, for once, I would be getting this sucker before the tech community had put it through its paces.
The ordering process
I love ordering from System76. I’ve built many a computer in my time, and I’ve developed a special brand of hate for multi-part forms filled with insensible upgrades that no sensible human would want, but that I’m halfway talked into by the time I’m on the seventh part of the form
At System76, the options are faster or bigger. It’s almost always immediately obvious what you want to upgrade to. Me, I build for longevity, so I tend to up the memory, processor, and hard-drive space. I could have built for more speed, had I wanted, swapping out my HD for an SSD. You can build a machine that works for you without going mad.
If you’re looking for an aluminum case, this isn’t the machine for you. I hate metal cases, though, so the burnished plastic works way better for me.
The screen is glorious. Bright, crisp, and it worked well in direct sunlight. The casing for the screen feels fragile, though this could be something that I simply haven’t had to deal with yet. This is my first thin laptop, and I’ve heard people say the same thing about all sorts of super-thin laptops.
The setup was smooth, just as I’d come to expect. Open it up, set up an account, and get going.
The power brick is tiny. I’m used to a brick that I could use to make chicken piccata. This one weighs in at just a few ounces.
Yes, the brick matters to me. I now have a laptop that I can put in a slightly large purse and not have the power supply cause a seam to rip.
So far, so good, right? Well… let’s talk about the keyboard.
The keyboard (Dun dun DUNNNNN)
I’d seen some people complaining about the keyboard. It’s a funny thing to get loud about. Normally, people yell about non-charging ports or poor battery or poor construction. The keyboard?
I noticed right away that the keyboard didn’t seem to be responsive. I’d type and miss letters. I knew I’d pressed those letters. It felt like every fifth keystroke wasn’t being logged.
This was a problem. A big problem. I emailed System76, distressed, and they asked me to use the laptop for a week before returning or exchanging it. How can a keyboard issue clear up, though?
Oddly enough, it did. First, my fingers got used to typing slightly harder on this keyboard (and I have the worn nail polish to prove it). Second, I realized that the touchpad for the mouse is rather sensitive. I turned it off and got a Bluetooth mouse and noticed an improvement right away.
After a few days, I’d decided not to return it. I actually liked it, now. I set up a few projects and coded away happily, delighted that everything was local, and that I could easily mimic the environment I have in production.
But then, a miracle! System76 emailed everyone who bought the Galago and offered a new keyboard! I put in my request right then. It arrived the day before Thanksgiving. I took advantage of an early dismissal at work and got down to business.
The kit included instructions, a new keyboard, and a screwdriver. The only problem I ran into was that the screwdriver only worked with one of the screws I needed to remove. It’s a good thing I have a kit with every head known to man in it, otherwise I would have been running out to the store.
Opening up the UltraPro was quite easy. Remove one screw on the back, loosen another, remove a bit of casing, take out two more screws, pry everything up. The keyboard also came out quite easily.
Installation was a breeze, since there’s a surprising amount of room to move around inside the case. I popped in the connector for the new keyboard and reversed my way back out to a put-together laptop.
I booted it up, and wow. The new keyboard is fabulous. I could immediately feel the responsiveness. It was a pleasure to work on. This was the machine I had wanted when I first placed my order.
Would I recommend it?
Now that the keyboard issue is fixed, absolutely. It’s light, it’s fast, the screen is gorgeous, and the price is excellent. Their technical support has always been top of the line, and it’s nice to have a machine where you can just boot up and go, rather than tinkering with drivers and conflicts.
A footnote: Why not get a Mac?
I’m not a big fan of Macs. I’ve used them for work for seven years now, and I’m of the opinion that I’ll use them if it makes my day job easier, but I won’t pay for one out pocket. I like maxing out the specs on machines, and when I do that on an Apple machine, I have a mini-heart attack.
And for the price point, I’m just not impressed enough. Maybe I’m tough on my machines, but I’ve never had a Mac that I was still happy with two years later. I feel like I should get more than two years for what I’m laying down.
And at the end of the day, I’m deploying to a *nix box, and getting my environment working on a Mac has usually been an exercise in frustration that only serves to make me less familiar with production. Using a Vagrant image has only alleviated some of the pain. I’d rather work locally than add another thing that I have to troubleshoot.
Oh, and connectors. I have lost a nation’s worth of those connectors. One day, an island nation will rise made completely of white, plastic HDMI-to-Firewire converters.
This year, I did something different for NaNoWriMo. I realized on October 31st that I wasn’t going to have an idea for a story this year, and that I didn’t want to work on something that I’d already started. So I decided to do something completely different: 50,000 words of blog posts.
I love blogging, but I often drop off the face of the planet for months at a time due to other deadlines. Maybe a book is due, or maybe a deployment at work is taking up all of my brain space. What I need is a backlog of blogs to pull from.
Most of my blog posts are between 1000 and 3000 words, so doing NaNoBlogMo could net me around 25 blog posts that I could post in the upcoming year. Also, I had some teaching material that I needed to crank out, and what better time to crank it out than a month dedicated to getting words on the page?
So, how did I end up doing?
Not every blog post that I wrote ended up going onto my site. I blog on other sites, some for exposure, some for money, and some for community. But I got a good number up this month! Also, some are going to sit in my drafts folder for a while, so I have a nice backlog to fall back on.
I ended up selling a good number of blog posts. It turns out, when you can hand someone a list of posts you want to write that month, they happily start laying claims to the ones they like.
I also expanded beyond blog posts, outlining a few stories I’d had in my head for a while. I don’t plan on quitting my day job (like, ever) to write fiction, but it’s still a hobby I enjoy. I’d like to finish a longer piece one day.
The good times
Some of these blog posts have been rattling around in my head for over a year. I just never had the motivation to sit down and crank them out.
Sometimes I knew they would be emotionally difficult to write. Others, I knew that I’d have to structure carefully so that they didn’t come off as a me foaming at the mouth. Most of the time, though, I thought ‘eh, this won’t get that many hits’ and opted for not writing anything at all (which, of course, gets zero hits).
When you’re in a crunch, though, you’ll take whatever you can get. Emotionally harrowing? Good! Those rake in a ton of words! No hits? Who cares? That’s another 1000 words towards the daily goal! Feeling uninspired? Time for a rant! I know! Let’s come up with a regular feature that uses up a bunch of words!
Also, if you like to sell blog posts, nothing sells better than having another one lined up to go. “Oh, you liked that one about Kivy? Well… how about a primer for Python?!” “Say, you enjoyed that post about checklists? How about one about using your screen reader?!” I sold a pretty crazy number of posts this month, something I’d been meaning to do more.
The stuff that worked
I found skipping around worked quite well. There were few posts that I sat down and wrote all at once. In general, I would write a few hundred words on one blog post, then switch to a different one. Often, the themes would be completely different. I’d write for ten minutes on Python, then ten on knitting.
I also kept a list of blog ideas. I used the Google Keep widget on my phone for quick access and wrote down every idea that came to me.
Also, every idea got a chance, no matter how silly. If it didn’t work out, well fine. I gave it a chance. Many of them ended up working out quite well, though! A blog post I wrote about hating purse shopping got thirty-two comments! What the heck?
I wrote about everything, as well. I often meant to write up reviews for books I read, but usually stopped at giving it stars. I’ll write something up later! When you realize that a review could easily be a third of your word count for the day, though, you don’t wait. You barely put the book down before you start pounding out a review.
Switching techniques helped as well. Sometimes, I used the pomordoro method. Sometimes, though, I needed to just get a certain number of words down, so I’d write until I hit a goal, then watched a Let’s Play on YouTube (I wish I could tip Snapwave / Whycalibur and GetDaved. They saved my brain so many times).
Also, writing early is better than writing later. I fight for every word I write after 3pm. Coffee does not help. I just end up not writing faster. Then, I end up being awake until 11pm (shut up, I am an old, I have an early bedtime).
The dark times
It’s not NaNoWriMo without getting stuck. And I got stuck a few times.
Everything was going great until I hurt my thumb. Do you know how much you use your thumb when you type. You use it a bunch. Writing 500 words felt I like writing 5000 in one sitting.
I caught up, only to be hit by a bout of the blues. I knew I could catch up, but my energy levels had just taken a serious dive. I’d write a bit, think I’d written at least a quarter of the day’s total… and it would be less than 100.
But one of the great things about doing NaNoBlogMo was that it became incredibly meta at some points. I wrote about my depression, and about stupid things derailing my writing. It added words, and I was able to reach out to others in the same position.
Also, getting a dog in the middle of November? Totally distracting. But hey, at least he gave me new things to blog about.
The final tally
Posts finished: 34 Posts sold: 4
Posts started (but not yet finished!): 2
Posts abandoned: 0 (I’m proud of this! I actually managed to make something of everything I started!)
Longest post: Technically, not a post, but class material for a class on HTML5.
Shortest post: A post warning about not putting off your weekend writing until Saturday, which I totally ended up doing. Cue the sad trombones.
Outlines started: 2
Total words written: 50,048 (That’s right. As soon as I hit the finish line, I stopped and went out for drinks)
Next year: An idea
I had a ton of code in my posts. Because I wasn’t going to bother parsing them out (and because you count every word when you Nano), code ended up counting towards my final total. This actually inspired me to write more coding examples in my posts, rather than say “Trust me, it’ll work.”
This got me thinking about doing a 50,000 words exercise on a project. But Katie, I can hear you wailing, more code isn’t always better! You should have less code! You’ll just end up with copypasta!
I wouldn’t just be counting code, though. Ideally, code would make up the minority of my word count contributions. What would the rest be? Why, all the crap I always promise myself that I’d do, but never quite get around to!
For example, I can write blog posts about the project to hype it up a bit and gather feedback. I can write actual documentation to go with it. Hell, if I want more words, I can make sure the documentation covers Mac, Linux, and Windows!
Or maybe I’ll finally write that great American novel I’ve been meaning to churn out. I do have that outline for the Steampunk Cyber-dystopia coming of age young adult novel in my Google docs… I guess you’ll find out next year!
I’m of the opinion that there will never be enough articles about doing alt text correctly. I’m of that opinion because I see it done wrong so very much.
That’s because there’s some rather damaging myths about how you do alt text. Let’s knock some of those down now.
You cannot automatically generate alt text
I’ve been asked to review databases and scripts that offer images with automatically generated alt text. It seems like a real time saver! Just pick a picture, and the database or script grabs some text (sometimes from a human, sometimes a best guess with some natural language processing), and viola! Instant compliance.
Sure. Okay. Hey, I know, why don’t you let me write a script that will just automatically insert images into your website based a few search terms. No way that can go wrong, right? Except you know that it will go wrong. You’ve done image searches on Tumblr. You know how wrong the internet gets.
Don’t believe me? I searched for duck on Tumblr. I got this. That was one of the milder items. And from what I’ve seen, Tumblr results are starting to take over much of Google image search results.
Alt text is content. You shouldn’t automatically generate it. It has too much context to give use generic text. You’re going to have to give it some text that anchors it within the content of the page. Otherwise, why have it?
No, it’s not the title text
Title text and alt text are different. Title text shows up when you mouse over an image. Think webcomics. It’s the bit that pops up with the secret joke that means we have to go over the entire backlog and read all the alt text because we god-forbid we miss out on a joke on the Internet.
Alt text is read out by screen readers. They shouldn’t mirror each other, because why would you want to describe the image to a sighted person? And the title text probably won’t be descriptive enough for someone using a screen reader. If it was, well, that would just be weird. A sighted person mouses over the image and gets a description of what’s in the image? That makes no sense.
Not everything needs alt text
If someone glances over how to make an image accessible, they’ll often get stuck on the requirement that images have alt text. Not every image needs an alt text. You have to think about what images are bringing content to the user, and which are there for decoration or design.
For example, if you need a spacer gif for some reason (do people still use those? Are my design friends snickering at me?), it doesn’t need alt text. If you have decorative bullets or dividers, they don’t need alt text. If you just put up a cute picture of a dog because you thought your page could use something eye catching above the fold, it probably doesn’t need alt text.
Every time you add alt text to an image, think about whether you’re adding to a user’s experience, or detracting from it. If you were reading this page aloud, would you take thirty seconds to describe the puppy clip art you found through a Google image search? Or would you ignore it and move to the content?
Not every word has to be echoed
Another thing people tend to over-alt is images with words in them. You don’t always have to echo every word. Before you transcribe each word in a book title, check to make sure you haven’t echoed that text in your content. If a screen reader hits this image, is the user just going to have to listen to the same content twice?
Now, if the text isn’t echoed close to the image, go to town. Alt away. But ask yourself why the heck you’re putting text in a freaking image. It’s 2013. Get with it! Webfont that text!
Stop it with the verbal diarrhea
The amount of text should echo the amount of content you’re trying to convey to the user. If you’re just showing off an image of the damage to the tail of a 747, just describe the damage. Do not describe the weather conditions, the color of the paint on the undamaged part of the plane, or that cute dog in the background.
I mean, props for trying. I’d rather see too much alt text than not enough. But seriously, you don’t need to paint a picture with words. You just need to get the point across.
No, you can’t just use ‘image’ as the alt tag. Smart-ass.
Why do I still see this? Dear people who do this: You are all horrible.
I spend much of my time in the OS community teaching. I teach kids, I teach beginners, I introduce experts to new concepts. At nearly every conference, I will at least attempt to teach a class. I love teaching, and I also try to talk others into teaching as well.
There’s one problem I’ve noticed with those that are interested in teaching, and it’s something that’s not really discussed openly. Normally, people make a single snarky comment, then walk away. The topic?
Why is this a problem?
When I’ve taught classes, I’ve almost always taught to a mixed crowd of Macs, Windows laptops, and the odd Linux machine. The more novice the class, the more likely it is that I’m going to be dealing with Windows people.
People in beginner classes expect you, the teacher, to know how to deal with their hardware. Yet, when I bring up the Windows problem, people scoff. The most common answer?
“They should get a better laptop.”
I’ve endured tirades about how they should just install Ubuntu, or how a Mac is really just as cheap as a Windows machine. I get to hear about how many years it’s been since they touched a Windows machine. I’ve heard so many stories about how people moved their loved ones onto Ubuntu or Mint or a Mac and that they loved it and everyone else should just do the same.
It’s a problem because it’s snobbery, and it doesn’t belong in education. Why do people buy Windows? There are many reasons why people might own a Windows machine. Maybe they like gaming. I know that’s why my husband and I keep Windows laptops around. They may not have a choice, since that’s what their work gave them (not all of us can demand MacBook Pros). Maybe the suite they work with only works on Windows. They might be like my parents, and scared to learn a new OS.
Or, maybe the decision is economic.
The cheapest Mac starts at a grand. I can easily find laptops for less than that. Sure, they may not have the screen or build or battery life, but that’s not the deciding factor for a large part of the population.
When money is unstable, it can be hard to save money. Savings are pecked away at by daily life and a host of things that cannot be cut. When you’re in this situation, you tend to get chunks of cash in on an irregular basis. You get a Christmas bonus, someone dies and leaves you a bit of cash, or your tax return clears.
Everyone I know who lives at the lower end of the middle-class spectrum or lower has a death or taxes laptop.
If you only get these bits of income in every now and then, you try to make them count. You get things replaced. You pay off a large debt. You buy big ticket items. A laptop is a common choice, but you want the most for your money. You won’t be upgrading in two years. You may be using this laptop for the next eight. So you go for the most memory, space, and video that you can get for that little pile of cash you have.
And if you want that, you’re going to get a Windows machine.
We can shout all we want about stability, or how you still have a MacBook from 2002 that works fine, or how you know of an indie seller that has cheap Linux laptops. At the end of the day, the Windows line is going to win. They are not the enemy At this point, the people I talk to often get mad at the users. They’re blind! Sheep! Technophobes!
The users are not the enemy.
Sure, we’ve all had our infuriating experiences with Windows. Some of us have watched the political wars, both from afar and in the trenches, and we have bad tastes in our mouths. We’ve been held hostage at parties to an infected install of XP that we’ve been asked to clean up, while everyone else takes in holiday cheer. We’ve realized that our children’s school system has been locked into a contract that only exposes the kids to Windows. I get it. But you’re getting mad at the wrong people.
These people did not buy the OS they did in order to make you mad. Really. They did it because it was the cheapest option, or the one they were the most familiar with, or they had specific needs with regards to their OS, and they weren’t confident enough to research alternatives on MacOS or Linux. So stop being mean to them by being snarky or ignoring them.
But if they would just try…
There’s probably something in your life that you use, but you’re not 100% knowledgeable about. How would you feel if someone ran in and, without explaining themselves or gaining your trust, told you to get something wildly different and foreign? For me, I felt this way the first time I walked into a bike shop. I was interested in getting a bike to tool around town. I had grown up with this sort of bike:
It’s basic. One gear, break by pedaling backwards. The bars were at a certain angle, one you could grab while leaning over or sitting up straight. Sitting up was common, because who doesn’t want to pretend to be Julie Andrews now and then? You got one kind of tire. The one choice you got was color.
Then, I went into a bike shop. None of the bikes looked like that. They pointed me towards something like this thing:
Wait, there’s wires everywhere! And the handlebars are so tiny… And what’s with the seat and handle angle? My arms would need to be four feet long to sit up! Wait, the brakes are where? Why can’t I just pedal backwards? And that seat! That’s not comfortable looking at all. Wait, why are you asking me about tire choices WHY IS THIS EVEN A THING?
Whenever I feel the desire to rush a Windows person to a new OS, I remember the feeling of being slightly panicked and wondering if this salesperson was just trying to con me into a bike that wouldn’t work for me, and I back off. I earn their trust by showing that I do know how to deal with Windows, and that I can get Python working on their system. Then, once I have their trust, I start to explore whether they might be interested in checking out another OS.
And note that I say might. They might never move over. That’s okay, because that’s their choice.
What do you need to know how to do?
If you haven’t run away at this point, good! Let’s talk about what you need to know in order to work on a Windows machine.
You’ll need to know how to get the command prompt up. In general, all you need to do is hit the Windows key and type ‘CMD’ + Enter.
You need to know how to figure out what version of Windows you’re on. Don’t just ask the student. This is a chance for you to prove that you’re not going to break their machine. Pull up the command prompt and type in ‘ver’ or ‘systeminfo’. At least one of those should work.
You need to know how to install Python on Windows, both two and three. This is not the time to be Ultimate Nerd. Use the installer. You might even want to trust the defaults, though I know you’ll probably look, anyway. If you stick with defaults, the student will have an easier time debugging down the road.
There’s a good chance you’ll need to update the system path. If you pull up the command prompt after installing Python and get an error when you type ‘python’, your path needs help. This is slightly different for each system, so some googling might be in order.
If you’re teaching something other than just Python, you need to make sure that you know how to install THAT package as well. Oh, and while you’re at it? It’s a good idea to get pip and easy_install working as well.
Finally, you should get familiar with some sort of editing program for Windows. I generally show off IDLE first (since it’s great for beginners), but it can fall short when you’re trying to work in a project that has items other than Python files. I like Notepad++. It’s free. It’s updated pretty often. It looks fine. It’s not crazypants like Eclipse.
And that’s it. That’s not a huge list, all told. But just knowing how to do those things can open you up to a much wider community of learners, and give you a chance, after you get friendly, to maybe move them over to your OS of choice.
Oh, it's that wonderful time of year again, when you realize that November is just around the corner, and you have no clue what you're going to do for Nanowrimo.
For the uninitiated, Nanowrimo is a yearly event where you write a novel in 30 days. You start on November 1 with a blank file, and you end on November 30th with at least 50,000 words. That's a breakdown of 1667 words per day, or, if you want to take a break for Thanksgiving and Black Friday, 1786 words per day.
Now, Nanowrimo is awesome. I've done it twice. It's a great way to get the gunk out of your system. Originally, I had planned to finish up all of my book work by November so I could take a month and write something silly. Well, we have a problem.
I have no plot.
I try to not bring existing projects into Nanowrimo. It's technically breaking the rules, but it's also disturbing the ethos of what the month is about. So, instead, I'm doing something a bit different: Nanoblogmo.
I have a bad habit of not posting blog posts, even though I have a queue of ideas. So, it's time to take those ideas and write 1667 words a day on them and build up my backlog again. I won't be posting them here until they're done (because y'all don't need to see a bunch of half-finished blog posts), but I will be updating my progress on my Nanowrimo profile.
Or, hell, maybe I'll come up with a plot by Friday. We shall see.
Recently, Pearson/InformIT reached out to its authors and asked us what advice we give to beginning developers. Here's my contribution!
Several times a year, I teach groups of people how to program in Python. These are absolute beginners. Many times, the first time they opened up their terminal or command prompt was that morning.
By the end of the class, they’ve learned enough to make a fairly robust program. They can save data, use files, make calculations, loop, and test for conditions. They know how to read error messages, and they’ve played with imports and libraries. I get one question, every time:
At first, I told them to think of a cool project. Surely, they must know of one! No, everything neat they could think of had been done already. Or, they had an idea, but it was too big. They’d have to learn 3D animation, or advanced calculus, or a tricky API. Finally, I remembered the first project I had really undertaken on my own. It was a loot tracker for a game. My friends and I wasted a ton of time keeping track of who got what spoils when we played together in an online game. I ended up making a simple app to keep track of possible loot, who could use it, and who had gotten the last cool item.
It didn’t make me millions. No one ever used it outside of our little group. But it taught me more than most classes could. I learned how to use databases and secure them. I learned about linking up forms and organizing my code. I learned how to maintain my server, and I learned how to upgrade my system without breaking my app.
The annoyances in our lives, as much as they make us grit our teeth, are also the best places to start. The fact that they exist means there is a void in the existing technology. Perhaps the bit of code hasn’t been written, or it’s prohibitively expensive. Perhaps it’s too clunky, or terribly behind the times. Whatever the case, it represents a place the student can start their journey, and create something that makes their life, and perhaps the lives of others, better.
Here are the rest of the responses, from all over the various tech communities! They should be adding to the list all month.
I’m notorious for telling people, in the same breath, that they should totally write a book and that it will be the worst thing they ever do to themselves. I play it off as a joke. Yeah, I’m like the drug addict who gets all her friends addicted so we can go to rehab together! Haha! Writer humor!
I’m serious, though.
When I started writing Accessibility Handbook , I knew nothing about writing a book. I had no trunk novels, save for one Nanowrimo mess. If a blog post of mine was longer than 1000 words, I was amazed. I just knew that I could write about this topic, and I felt I had a different view than the other accessibility books out there.
Starting the process was a joy. I’d get up early and write. I’d write on my lunch break. I’d write in the evening. I was having so much fun! I do dearly love writing, and I was finally getting the chance to get paid to do so!
At some point, the joy faded. At first, I was simply tired of writing. That wasn’t a big deal. Maybe I’d overdone it at first. I could still choke out a section or two every day. Maybe I just needed to hunt around for my inspiration.
Then things got darker. I got tight-chested every time I looked at the folder that contained my book files. I’d wake up in cold sweats. I felt depression creeping in. Nothing brought me joy, not even things outside of writing that I normally liked. Nothing brought me peace. I felt like I was caught in a horrible limbo, where I needed to do something to get out of it, but couldn’t do anything.
At 16, I was diagnosed with depression. It’s just a thing I deal with. I also have issues with anxiety that, while never officially diagnosed, are pretty textbook. The two normally come together, feeding off of each other until I feel like I’m pushing through quicksand every time I take a step. I can usually shake it off on my own, though honestly, the older I get, the more I think I’m getting too old to power through without help.
Writing a book didn’t cause me to have anxiety and depression. Those two things have always been there. Writing a book did trigger both of them to come alive in a way that completely took me off guard.
I’ve dealt with lows before. I’ve dealt with anxiety. They usually come on slowly for me, so I have a chance to prepare. I can’t get rid of them, but I can at least get through the motions that are involved in day-to-day life.
These came quickly. Over a few days, a switch would flip, and I felt like I was being buried under a tidal wave of things I couldn’t deal with. Everything was too much. I couldn’t bring myself to get the mail. I’d forget to shower. Email languished. I couldn’t even muster the energy to dive into something different to pull me out of it.
The only thing that cured it? Finishing the book.
My editor called me when I hadn’t responded to (yet another) email. Should we cancel the book? No, I decided. I was too close to being done. I could do this. I spent a few feverish weekends pounding out words, but I got the last two chapters submitted. When I sent the last chapter in, it felt like the air around me cleared. The tightness in chest was gone. I could smile and really feel it.
For a while, I thought maybe I was alone. Maybe the other writers out there don’t go through this crap. Then, Writing Excuses put out a fabulous podcast about writing and personal health. When they published this, it forced me to sit down and do nothing while I listened to it. The writers all spoke of their physical and mental issues that have been exacerbated by writing. They talked about managing it, and how it was sometimes just a natural byproduct of writing.
As for me, I’m still learning how to deal with it. I went through the same issues with Teach Yourself Python in 24 Hours , but it wasn’t nearly as severe. The book wasn’t delayed by several months. I still managed to enjoy things. I talked about it slightly more with my loved ones, who never saw my spiral with my previous book (I’m an old hand at this depression thing. I hide it well). It was still there, though.
I know this all sounds dire, but really, I’m not trying to talk anyone out of writing a book. I’m just trying to lay out a warning or two. Know your mental health. Talk to your loved ones. Maybe set up a weekly hour with a therapist. Take care of yourself. Because, while nothing is more awesome than seeing your book on Amazon, it’s still not worth trading in your mind and body for.
This past July, I got a chance to not only do my first smaller regional conference, but also to do Young Coders again!
We had 25 kids, from 12 to 17. From what I heard, the class list filled up within half-hour, and the waitlist was three times as long as the available slots. Some students were children of conference attendees, but several came from outside of the Python community altogether.
Sign-up didn’t open until two weeks before the class (I know this was probably killing PyOhio organizers. I know how persistent people can be!). This helped keep the no-show rate down to one student. There were a half-dozen kids outside the door vying for that extra seat, so I’m glad that we had the waitlist on hand to tell who had signed up first!
We went with the Raspberry Pi set-up again, due to a generous grant. This required getting and setting up 25 Raspberry Pis, which included lugging around monitors, keyboards, mice, and power supplies. If you want to do this yourself, make sure you have a few dollies and some strong backs to help!
We got into the room the day before. It took several hours, and honestly, when they booted us out, I would have gladly taken one more hour to get everything tidied up.
Because of the limited amount of time, we stuck to checking the important stuff:
- Making sure all the RPis booted
- Getting the localization right
- Hooking up monitors, keyboards, and mice
- Making sure we had enough space for all the students, and enough chairs
- Making sure every seat had power
I decided to skip networking. One, we didn’t have the Wifi adapters for the RPis, two, we didn’t have cable for the hard connection, and three, I didn’t have Noah on hand.
We had a bunch of people on hand to help, and we needed every single one of them. We barely got everything checked before the University told us we had to get out (in the nicest way possible, though).
The class itself was amazing. The kids were completely attentive, loved to participate, and picked up concepts quickly. I knew that we were going to zoom through slides when they immediately knew start with “Open the bag of bread, then remove to slices” during the PB+J demo.
One amusing hiccup occurred when we realized that the food court in the building was closed for renovations. I called the building help desk in a panic.
“Oh, the tavern is open!”
“Yeah! They can eat there.”
Awesome. Come on kids! Let’s go to the bar!
Happily, the tavern was just a slightly swankier place to get food, and not really a bar. The students could get food, and I wasn’t breaking any state laws by bringing minors into a dive.
Because we finished the slides early, and we raced through the game demos I had, we ended up hacking on the games included on the RPi. The kids had been playing them during breaks, so they already had an idea of what they wanted to do.
We started off simple, changing text, then colors. We then played around with making the games harder or easier by increasing enemies, making the board smaller or larger, or making things move faster or slower. Best part? I suck at these games, so the kids got to watch me die over and over and over.
At the end of the class, I made sure that everyone knew how to disassemble and reassemble their Pis, and that they knew how to log back in. My fabulous volunteers had made a cheat sheet (now in the repo!) and got it printed, so we handed that out as well.
We covered (in the order I’m remembering, not the order taught):
- Ints and floats
- Objects (just a tiny bit)
- Modules (random, datetime, calendar, urllib)
Our goal with Young Coders is not to run me and Barbara into the ground, running around to conferences. We’d prefer it if these could be run by locals, not only to cut down on costs, but so that the students have a local resource to go to when they have questions.
I got such a shadow at PyOhio! Bill Triest, who works at the University, took the time to go over the slides and chat with me about what goes into running a YC class. He also watched the class, so he got to see how much of what Barbara and I talk about looks like in practice.
If you decide you want to do a Young Coder’s class in your area, you should most certainly look into getting a shadow if you have to import a teacher.
Will I be doing this again? I certainly hope so! Not only did I love doing the class, but the rest of PyOhio was awesome as well. The talks (which, admittedly, I’ve been watching mostly on YouTube) have been superb. There’s a class on Kivy that I’m eying for my next free Sunday, where people were watching from the hallway.
Yesterday, I submitted the final hour to Teach Yourself Python in 24 Hours.
I could not wipe the smile off of my face.
This high is why I write. This is why I punish myself for months at a time.
Is there a rehab for writers?
Today is Autism Awareness / Acceptance day. I normally let it pass without saying anything. This year, though, I have a request.
Please stop calling my son an asshole.
When Jake turned seven, he was officially diagnosed with Asperger's. At the time, most people only had a vague idea of what the condition was. As it became more well known in the media, I joked that Jake had the 'cool' autism. When I shared Jacob's condition with others, they were usually fascinated rather than pitying. They asked questions about him, AS, and sometimes even did their own research to find out more.
There's been a shift in the past year or so. As more people learn what Asperger's is, it's become an adjective. It's become a synonym for 'asshole.'
My son is not an asshole.
He does have trouble reading people. This doesn't turn him into Dr. House. It creates a child that's incredibly lonely, that would love to play with other children on the playground, but who has no idea how to approach them. It creates a child that had to go through intensive training just so he could have a casual conversation. He threw himself into the training because he wanted to connect with other people. He wanted to not be alone.
His classmates were the same. I visited his class regularly, and these kids were polite, almost painfully so. They had their sensitivities, like hating fire drills or requiring the exact same lunch every day, but they were never cruel or unkind. They were sympathetic when one of the other students had issues. They never laughed or teased if one of their classmates had a meltdown. They waited, then welcomed the child back when he was ready.
That's not what assholes do.
Even if a person with AS doesn't get the treatment my son did, that doesn't make them automatically a jerk. I know many people who were diagnosed later in life, some well after they'd started their careers. They sought out places where they felt accepted, where they could feel kinship with others. Some had found it while some were still searching. I take comfort in these adults, since I can see my son in them. They're funny and quirky, they're loyal and focused.
They're hardly assholes.
At this point, there are some reading this that will insist that when they describe someone as being 'aspie', that they don't mean asshole. They mean awkward, or socially inept. I've never once, though, read an instance where someone used AS as an adjective in a kind light. They were trying to highlight how someone was rude, or uncaring, or, well...
Maybe you've met an AS person who was rude, and you now believe that gives you the right to assume that all AS people are rude. How is that any better than meeting a rude black person, or a rude gay person, and then making the same assumption?
The people who have AS, whether they suffer from it or have found a way to make it work for them, do not deserve to be characterized as rude, boorish, or inept. If you want to say someone is 'awkward' or 'socially inept', just say so. Use those words, and not "Asperger's."
Because that's something that only assholes do.
It all started off as a joke.
Flush with my new obsession, nail polish, I told everyone on Twitter that I was totally going to bring some polish along so we could all do our nails at PyCon. I wasn't really going to do it. Who would come? It's not like PyCon was a fashion show. We had to give people explicit instructions to take showers. This is not a mani/pedi crowd.
People responded, though. Yes! Please! Bring some polishes! And yes, people. About half of the people on Twitter asking me to go ahead and do it were men. Apparently, more of my guy friends like nail polish than I thought. Hell, I was surprised most of the women liked nail polish. At conferences, I almost always saw bare, stubby nails.
So... I started planning. I took my ever-patient husband's poker set and turned it into a travel case. I picked out colors. I put them back and picked out completely new colors. I got more nail polish in and had to swap again. I got a BOF room reserved. I blogged about it.
I was sure that no one would show up.
I was wrong.
I didn't count how many people showed up. My guess is that it was somewhere over twenty, but I was spending most of my time finding bottles and being very, very excited.
At the last minute, I got contacted by a sponsor. A sponsor! StyleSeat wanted to bring a professional nail artist so this didn't have to be a completely DIY affair.
Doug Napoleone supplied us with the cutest monkey nail blow dryers I've ever seen. We had a few of these left, so gave them away at the PyLadies booth. A Survey Monkey booth guy was enamored with the last one, so I'm wondering if we'll have those sponsored next year as well.
I had planned for the event to last an hour, but I forgot that not everyone is a twitchy freak who does theirs every day (like me). I can do my nails in ten minutes, but most people are going to take way longer. We also had a fairly steady stream of people coming in and out of the room.
We also had a good number of men show up. I had posted a warning, that coming in meant you were getting your nails done, but they all seemed to come in with an idea of exactly what color they were looking for. I don't think I saw a single clear coat leave the room.
In fact, I am now insanely jealous of the infamous Gregory P. Smith. He came in and declared that he was going to do the Python logo on his nails. Pfft, I thought, I've been trying to do that for months. Good luck, dude. What did he do? A perfect Python logo. Okay, fine. I'm going to assume skills like that are why he works at Google.
I would love to do this again next year. Heck, I might already have a sponsor lined up. I will do a few things differently:
- Have a room with ventilation. I think I have short term memory loss from the fumes
- Budget more time! We obviously weren't done in an hour.
- Make sure to warn anyone coming after us that there may be fumes. A BOF was right after us, and I felt horrible about accidentally booting them from their room.
- Pack a few more quick-dry top coats. We kept running out!
- Remember to bring labels for people who bring nail polish. I ended up with a few extras in my kit. If they're yours, let me know! I'll Amazon you a replacement!
Other than that, I was shocked at how well it turned out. I'm looking forward to doing this again next year!
This year at PyCon, I had the honor of co-teaching the very first workshop just for children at PyCon. Barbara Shaurette and I taught approximately 35 kids from eight to eighteen the basics of programming Python.
The class was offered for free to all children, and all kids got to take home a Raspberry Pi at the end of the day. The students came from attendees and the local community. Some parents were Python developers, and some had no idea what programming was. They just knew this was a chance to enrich their children's lives.
What did we teach?
Barbara took her materials that she uses for her class and, with minimal tweaks, converted them to a kids' class (I'm lazy, and have no slides for my classes). We tweaked the lesson plan for the second day when we realized that some things were confusing to the kids (or to the teacher who couldn't remember how slices work).
This is roughly what we taught:
- Who are we, and what do we do with Python?
- What is programming?
- What's an algorithm (the peanut butter and jelly example)
- Numbers + math
- if statements
- Loops (for and while)
- Input + Output
- Let's make some games!
- Number guessing
- Raspberry Rogue
- State capitals
- Care and feeding of your Raspberry Pis
With the first class, we had to take lots of breaks. Every other module, we'd let the kids get up and move around or run to the bathroom. The second class, where the kids were older, we didn't need as many breaks (in fact, they often refused breaks), so we got through way more material. In fact, we ran out, so I ended up live coding a few more examples and running through some code Barbara had written for another class.
Barbara and I swapped back and forth as needed. Sometimes, one teacher needed a break. Other times, the other teacher knew more about that module so wanted to take point.
I'll confess, I was worried when I saw how many volunteers were signed up to help us. Would it be too confusing? Would we have too many chefs in the kitchen? I didn't want to tell anyone that they couldn't come, though, just in case some people couldn't make it (or forgot that they had signed up).
I asked the volunteers to stand or sit at the back of the room and watch the kids' monitors rather than the slides. My reasoning? If they're focusing on what Barbara or I were saying, they were missing what was going on with the students. The one thing we couldn't see was the kids' monitors, so we had no idea if they were lost, if their Pi was throwing errors, or if they were done typing an example. I also needed them to grab the 'off' teacher to tell us if we needed to go over something again, or if they'd noticed something particularly interesting that a student had done.
One thing I made sure to ask was that they not interrupt the class, even if they noticed an error. Having two teachers, though, meant that there was always someone they could grab and talk to quietly.
We ended up having around a 1:3 ratio, and it was perfect. Volunteers were able to jump in if a student was floundering, and many developed a relationship with a few select kids over the course of eight hours. The volunteers were also an invaluable asset to me, letting me know with nods and hand signals if I could move on, or if I needed to chill out for a bit.
We used IDLE because it's already on Raspian's desktop. Personally, I like IDLE as a teaching tool. It's included in the standard library, it does tab completion and color coding, and it even has a text editor included so you don't have to start your class off by teaching everyone about paths.
Too bad it's broke as hell.
I believe my first contribution to the Python Standard Library will be fixes to IDLE. I really do like it that much. Happily, the kids were flexible. If they needed to do a workaround, or ignore something on our slides (they were written with the standard shell in mind), they did so. They were total champs. My adult students would have been much more upset.
So... what was it like?
It was amazing. It was exhausting. I wanted to do it again. I wanted a drink.
The kids were fabulous (I only had to use Mom Voice once). They stayed on task in a way I've never seen. Hell, at work, if we've been coding for a whole hour we start whining that we need a Starbucks run. They had a network connection and never once did I see Facebook open. They had a link to Python games as well, and only opened them during breaks.
People kept stopping by and peeking in, then giving us little cheers at the sight of rows of kids with their 'coder faces' on. I tried to impress on the kids that they were the stars of PyCon. I'm not quite sure they bought it, but it's true. Everyone was so excited about the classes. I got stopped at least once an hour by someone who wanted to know about it, or how they could do it themselves.
We even had a group of programmers from Mexico approach Jesse and offer to translate our slides so that they could teach the classes in their home country. I believe we're even finding a way to send them Pis so they can copy our set-up exactly.
How are my son's teachers not alcoholics?
The biggest lesson learned? Two days of teaching, even shared between two teachers, is probably too much. Barbara and I were about to collapse by the end of it. When you teach an eight-hour class, you have to be 'on' for the entire time. Even when we weren't actively teaching, we were looking at the next module, walking the room, talking to a volunteer, or helping a student. Even our break times were spent going over what we needed to change in the slides.
Next time? Two different teachers every day. The optimal pair would be two people who know each other well and can pass the ball back and forth with a minimum amount of effort. Barbara and I have known each other for years, so this was was easy for us. It would have been harder if it was someone I didn't know as well.
Mavis Beacon they aren't
With the exception of a few of the teenagers, the kids were not fast typists. When I was live-coding, some tried to follow along, word for word. As I raced ahead, they became discouraged. We also had long variable names in the examples, which took forever for the kids to type in (and they wanted to type in every code sample).
Oh man, objects...
We were able to get to classes, but it turned out to be something that's a bit difficult to explain. I'm still coming up with a story that will make objects easy for kids to grasp. I don't want to ignore them because many of the kids want to make a game, and that requires understanding what an object is.
Wait, they need to eat?!
We forgot to feed the kids snacks at snack-time. Barbara and I both face-palmed, especially since snacks were provided for tutorial attendees.
I want this class to happen again. I want to see it done at PyCons, big and small. I'd love to see them done in smaller communities, and I even have a few leads back home. People offering to translate our slides has me jumping with joy.
I have ideas for adding to the class, and I'd love to see what other people might add to the material.
I will totally be doing this again and again.
I've been talking about this on Twitter for a while, but I figure I'd make some sort of official announcement: I'm hosting a mani/pedi BOF at PyCon! What started as a cute joke snowballed into an actual thing, as many of the best things often do!
This will be a DIY mani/pedi party. I do not have the head-space / time to find a manicurist willing to come set up shop at the conference. Maybe in Montreal!
When and where
Friday, March 15th, from 5-6 (and possibly rolling later, but I wanted to start before dinner time)
Do I need to sign up?
Nope! Feel free to come on by! Just a warning though... You come into the room, you are leaving with painted nails. It may be clear coat, but there will be nail painting.
What is Katie bringing?
I'm a bit of a nail polish hoarder, so I'll be bringing a chunk of my collection with me. I may do a few last minute substitutions, so I won't be posting a list until right before I leave. I have a few polishes making their way to me that may end up getting traded in.
Rest assured, though, I'll have a nice spread of colors, from office friendly to freak flag, and a selection of top and base coats. I'll also have nail polish remover, files, nail clippers, orange sticks, and cotton balls.
Finally, for those that worry about this sort of stuff, all but one polish that I'm brining is at least 3-Free, and all are cruelty-free.
Can I bring my own stuff?
Totally! Please do! You might want to mark it in some way. I'll bring a few Sharpies and a thing of tape to help with that.
I don't have anything to bring...
Did you see my case of colors? You don't need to bring anything but your hands.
This is a dry event. Lacquer and liquor, people. It doesn't mix.