Recent Entries

Asperger's != Asshole April 02, 2013

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...

An asshole.

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.

PyCon 2013: Mani Party Wrap-up! March 25, 2013

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.

The BOF

Approximately 20 people seated around a long table, all doing their nails and talking.

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.

A manicurist setting up her station

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.

A woman drying her nails with a tiny monkey nail dryer.

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.

A thumb with the Python logo on it.

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.

Next year

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!

PyCon 2013: Young Coders March 19, 2013

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
  • Strings
  • Lists
  • if statements
  • Loops (for and while)
  • Input + Output
  • Functions
  • Objects
  • Imports
  • 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.

Volunteers

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.

Tools

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.

Lessons learned

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.

The future

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.

PyCon: Mani Party! March 04, 2013

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)
Room 202

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?

A poker case, filled with nail polsihes.

Source: Uploaded by user via Katie on Pinterest

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.

Lastly

This is a dry event. Lacquer and liquor, people. It doesn't mix.

Roost from Bocoup January 07, 2013

I recently attended Roost by Bocoup. It was an incredible experience that I feel I should share with the whole Internet.

My background

I hate JavaScript.

I know, I know, I'm not exactly alone on that island. Everyone likes to hate on JavaScript. For a long time, I've been able to debug it, and I've even been able to modify it, but I've never, ever been good enough to put it on my resume.

I'd pick up books about it and spend forty pages rolling my eyes. I know how to set a variable! I know what a list is! UGH. Get to the good stuff! I'd then look at some JavaScript that my co-workers had written.

A trickle of blood would flow out of my ear.

What was this madness? I couldn't seem to get to my black triangle.

I'd return to the warm embrace of languages I already knew and let the JS gurus do their thing, leaving them unfettered by my ignorance.

The training

A few months back, an opportunity came up: did anyone want to take some actual jQuery and JavaScript training? My hand shot up. If this didn't fix my broken knowledge, nothing would. I signed up, then fully processed the logistics that would come from going to training in Boston... in December.

My co-worker, an even more delicate Southern flower than me, didn't even own a winter coat. Oh my god. We're so going to die.

Structure

Unlike other training events I had been to, this had a distinctly 'conference-y' feel. Talks were given by a trio of names in the JavaScript and jQuery community: Rebecca Murphey, Dan Heberden, and Ben Alman.

I really liked the structure. I felt like my brain had a chance to rest and process after each talk / demo. The topic changes kept the texture of the training engaging. I didn't hit a wall after a few hours, and if I suffered a minor distraction (like needing to hit the bathroom) and couldn't catch up, I knew the next talk would still be easy to follow.

The training was held over two days, and took up the whole day, running from about 9-5 with a break for lunch. The fact that I wasn't totally fried at the end of each day is a testament to the structure.

Sessions

Day one started off with some soft-balls: HTML5 and CSS3. I didn't mind them starting us off with something pretty easy, because heck, a review is always nice, and my coffee hadn't quite set in yet. Also, I got reminded of the things I wasn't using and kept forgetting existed.

Then, we dropped into JavaScript.

We blasted through the fastest review of JavaScript I'd ever had in my life. The speed worked for me. I had no time to roll my eyes, and it primed me for what was to follow: jQuery.

Like JavaScript, I knew enough jQuery to be dangerous. Though I was introduced to some selectors I hadn't know about before, I was still no closer to writing awesome jQuery. I was still missing something.

Then came the talk about code organization.

The speaker went over many of the issues that JavaScript comes with when it comes to scoping and such, and how causes heartache on pages. Then, he[1] threw something up on the screen.

(function(){ /* code */ }())

That madness. I had seen that madness before. Now it had a name, and a method.

It's an IIFE. And it keeps your crap scoped.

"Isn't that the most un-googlable thing ever?" he joked.

Yes, I wanted to stand up and shout. Yes, it is.

All at once, my co-workers' code started to make sense. They weren't crazy people. They did this for a reason!

I had found my Black Triangle.

There were other awesome things, like Grunt and debugging fun, as well as finally seeing how you make a class in JavaScript (that was always explored after I'd thrown my book across the room). That thing, though, the IIFE, really made things gel for me.

Later, there came a double session about Git and deployment, both of which I'm painfully familiar with. Rather than take notes, I hunkered down and started writing very simple code snippets, totally encapsulated in their cozy IIFEs. For the first time I was actually making JavaScript and jQuery do things. Random bits of knowledge that I had collected came together and formed the framework I needed.

I actually began to like JavaScript.

The last session was a live-coding session that involved Arduino, sensors, node, grunt, and a ton of other things I'm going to google the hell out of at a later date. Though it was a bit ambitious for the time slot it was given, I did appreciate having the chance to watch a pro write something from scratch. Witnessing process is important, and it's something we're more prone to talk about than demonstrate.

Should you go?

If you're like me, and you've never quite been comfortable with JavaScript and jQuery, I would totally recommend going. It also appears that they have other two-day sessions that dive more deeply into other parts of jQuery and JavaScript.


[1] I think this was Ben Alman, since he's written a ton on IIFE. If it was actually Rebecca, I'm so sorry!

Looking back, looking forward December 31, 2012

Around this time of year, I like to look back at the past year, and look ahead to what I have planned for the next. It's less of a 'resolutions' post (I suck at keeping them), and more of a way to take stock of where I am and where I'm going.

2012 was crazy busy. I'm actually having trouble remembering all of the things that I did during 2012. It was like 2012 was the year of me finding ways to drive myself crazy.

I decided that it was a super idea to submit a poster, a talk, and a tutorial to PyCon. It was not a super idea. I looked like I was about to fall over by the end of the conference.

I got married. It was a small wedding. I thought this would make it effortless. Ha! Hahahah. Totally worth it, though. Renting a limo to barhop around DC rather than renting a hall and feeding 150 people crappy chicken? Best idea ever!

The book I signed a contract for in 2010 was released, and I officially became a published author. Right before this, though, was a month or so of mental anguish where I convinced myself I was a hack, and had no business anywhere near a book contract.

Not having learned my lesson the first time, I signed a contract for another book. This one is due out in 2013.

I taught classes. I taught so many classes. Two PyLadies intro classes. Part of a tutorial on PyGame. Then a class at DjangoCon, which, hilariously enough, I discovered the day of my class that my time-slot was an hour shorter than I thought it would be. Amazingly, I still made it all fit.

For the first time, one of my blog posts went viral. Then another one did.

I got my first consulting gig, and because of that, had to make a mad dash to create an LLC so it's harder to sue the pants off of me. Many thanks to #django-social for hand-holding me through that.

The boy started middle school. He's fully mainstreamed, now, so this has been our first year of walking the tightrope without a net. It's been... interesting.

The girl started preschool. She's very nearly civilized.

So, what's up for next year?

My second book will be published! My editor will personally strangle me if it isn't, so consider me highly motivated!

I have two secret projects that don't have any signed paper yet, so I can't do any more than drop less-than-subtle clues. Hint: it may involve more books!

The girl will start Kindergarten. If I don't sell the boy as punishment for not turning his classwork in, he will start seventh grade.

I want to get better with my jQuery and Javascript skills, so I'm thinking of projects that involve them. I'm seriously considering an interactive fiction engine.

I really want to finish my roguelike. When I get a chance to chill for a few hours, I'll pick it back up, probably starting with writing some tests for it. I already have some ideas for the next game I want to write (see above).

Okay, I have to go prep for a party in which I alienate most of my friends via Cards Against Humanity. Here's to an excellent 2013!

Not dead December 12, 2012

I'll just be going quiet until the new year! 

Happy holidays, all!

Katie Pomodoros December 04, 2012

The cult of Pomodoro is strong in the IT sector, and I'm one of its converts. From time to time, new recruits are sent to me, so I decided it was time to write about how I use the Pomodoro method.

The Pomodoro method is almost stupidly simple: Set a timer, work for 25 minutes, break for five. Do this four times, then take a twenty minute break rather than a five minute break. If you get distracted during a Pomodoro, void it.

Why I use it

Working from home, keeping a tight focus can be difficult. If I turn my head, I can see our entertainment set-up, from which I can play hundreds of games and watch practically any show made in the past 60 years. I can also see my personal computer, from which I can play dozens of Steam games. Hell, on the very computer I'm working on, I have access to everything on the Internet. If I'm done with the stuff that's already there, I can go make more things.

Pomodoros keep me tightly focused by only asking that I keep that focus for 25 minutes. If I can do that, I can take a break, get some coffee, take a walk, or get a snack. I can also switch tasks, if that one task is one that I utterly hate, then come back to it later.

It also helps me keep track of what distracts me. Calls from family are a big distraction (especially if there's some new controversy occupying everyone's brain space). Random chats also kill my concentration. People being wrong on the Internet? Huge distraction. Email was created to distract me.

Pomodoros also help me keep my flow by separating out tasks. Before, whenever I got mail, I would immediately read it, digest it, then respond. I'd try to restart whatever I was doing, but then I'd get another email. Read it, digest it, respond. This would happen over and over again, until the entire day had passed, and I hadn't written a single line of code.

Types of Pomodoros

I generally have two types of Pomodoros: Working and admin.

Working is self-explanatory: pick a task, work on just that. Admin, though, needs some explanation.

One Pomodoro out of four is always an admin Pomodoro for me. I've found this to be vital for keeping my sanity. What do I do during an admin Pomodoro?

  • Check email
  • Respond to email
  • Clean off my desk
  • Restock what needs to be restocked
  • Return phone calls

I do keep an eye on my email through Growl notifications, but unless something is marked as absolutely urgent, waiting on it is not going to kill anyone. Besides, truly urgent matters usually come to me through IRC.

Breaks

When I first started doing the Pomodoro method, I would mess around on the Internet during my breaks. This can be a very bad idea. The timer goes off, but you're in the middle of a comment or a really interesting article, and the next thing you know, it's two hours later.

I try not to make my small breaks Internet breaks, especially on days when I'm not concentrating as well. I go get some coffee, I grab a snack, I stare out a window. Five minutes feels much longer when you're not staring at a screen.

For my longer breaks, I've been trying to move more. Maybe I'll do a small set of yoga, maybe I'll do some weights. If I'm feeling particularly saucy, I'll break out one of the less embarrassing dance games that come with Your Shape Fitness Evolved 2012.

Really bad days

Sometimes, I have really bad days. I didn't get enough sleep. I have an oncoming illness. Something in my personal / other professional life is distracting me.

These days, I modify the system slightly to ten-on / ten-off. I work for ten minutes. I break for ten minutes (and this time, totally away from the Internet). I find this slowly ramps my focus back up to where it needs to be. By the end of the day, I'm usually back to 25/5.

Tools

I do not have a dorky tomato timer. The last thing I need is my daughter finding it, messing around with it, then tossing it into the no-mans-land of her play room, only to go off an hour later. Also, I can't take the timer with me when I work in a coffee shop.

Instead, I use my phone, and an app made especially for Pomodoros. I onced use Pomodorium, but found I didn't like the fact that it would automatically start my break. Sometimes, I need to do one last thing before breaking, and when your break is five minutes, you get very, very protective of every last second.

Also, it uses Adobe Air. Goodbye, CPU!

Where to learn more

Really, everything you'd ever want to know is on Pomodoro's official website. It's not a complicated technique, but they do have some nice templates and cheat sheets.

Accessibility in Video Games - Cognitive November 19, 2012

When people talk about accessibility, they often forget the cognitively disabled. This is a group that's become increasingly vocal in the web accessibility arena, especially as the Internet has become a fancier, busier place.

Most people think of the cognitively disabled as the ones that are labeled 'Severe and Profound': Someone with no (or little) language, with the mind of a toddler.

The truth is, you probably know someone who's cognitively disabled. Having a cognitive impairment isn't the same as not being smart. It means that the act of taking in information or actively thinking is somehow different for an individual. Some take in too much information, and need either training or medication to help them filter the world. Others might have issues taking in information visually, so either have to take their time or

Most of the people who are issues with cognition really have issues with information processing. They might need more time with information, or they might have issues parsing a specific kind of information. They may also get information overload quickly.

    The groups I normally worry about:
  • People with dyslexia
  • People with ADD/ADHD (Collectively known as AD/HD)
  • People with early on-set dementia or Alzheimer's
    Some subgroups that also benefit:
  • People on mind-numbing medication (remember my iguana story?)
  • Non-native speakers

So, what can you do, as a game developer?

Subtitles and voice-over

It's hard to tell what someone with a cognitive disability will find easier: Text they can read through, or subtitles they can listen to. My uncle, who's dyslexic, had to have his school books read to him. My son, who has Aspergers, has issues following verbal instructions, but does extremely well with written ones.

Since you don't know, if you have dialog, try to offer both a captions and voice. This is a nice benefit for people who can't stand voice acting, or are in an environment where they can't have their sound on.

Fonts

A diagram showing the difference between serif and sans-serif, with the serfis circled.

In general, sans-serif fonts are easier for someone with dyslexia to read. Why? Because many people with dyslexia recognize word shapes. Serifs mess with word shapes, making them more complicated to decipher.

You know what else is hard to decipher? All caps. Don't use them.

If your designer is absolutely married to some fancy font, at least add an option for the player to switch to another font.

Contrast

Most people assume (wrongly) that pure white against pure black is the most accessible contrast. It's actually one of the worst. People with dyslexia report preferring colors that are closer together in hue and value (that's color and lightness/darkness for you non-art people).

Picking the colors can be tricky. I usually go with a very dark grey and a slightly off white. This may not work for every dyslexic gamer, though. I knew one who could only read when the text was a medium blue on a deep blue background.

For these users, allowing them to set the background and foreground for their text areas is a huge help. It also helps users who prefer a lighter background, or users who prefer light text on a dark background.

Busy busy busy

In theory, everything is better with particle effects. They add interest, they make your game seem more real, they give a polished glean to your interface. Particle effects are great for most of the population.

They're not so great for the people who have issues with taking in too much information, and not being able to filter it. If you can, add an option to kill particle effects. The people with crap CPUs will thank you as well.

Quest logs and maps

There was a time, back in the glory days of the CRPG, when you had to write down everything worth remembering. Get a quest? Better get out your pencil and paper. Have a dungeon? Graph paper time!

While there is a certain charm to this, if you're someone who has trouble processing information the first go around, it can be problematic. Important details might be left behind as notes are made. And if you have trouble with spacial reasoning, making a map is no trivial task.

So, include a map and a quest log. Hell, give someone the ability to search through the quest log (I haven't seen that, yet), so they can quickly find out what the heck they were supposed to be doing with these raptor heads.

Next time!

Some final thoughts and some resources.

Writing: Diagrams November 12, 2012

You would think that someone who loves drawing would love doing diagrams. I do not. I hate diagrams. I thought I would love them, but they ended up being the thing I hated most about writing Accessibility Handbook.

I mean, diagrams are nice for reinforcing information or getting across a more subtle point to a reader (they also don't hurt your page count). They break up your chapter and add visual interest. But oh my god, does making them suck.

Mistakes I made

With my first book, I didn't take the time to do the diagrams as I went. I just inserted a placeholder image with a vague description about what the diagram was supposed to be.

This was a bad idea.

When I dove into doing diagrams, I couldn't fathom why half of them seemed like a good idea. I'd stare at my note ("Something about embiggening") and curse my previous self for not just doing the diagram right then and there. I removed more than a few, then had to make up the missing space in a frenzied weekend of writing.

The reason I'd moved to doing the notes and placeholders, though, was that stopping to make a diagram can take you out of your writing groove. I'd sit down to write, then spend a half-hour either struggling with Gimp or sketching something, scanning it, then trying to refine it. Pictures are not worth a thousand words. I measured. They only take up the space of about 150 words. They were making me fall behind.

What I'm doing now

With my current book, I decided that I was going to find something that worked with my flow. I needed to make diagrams as I needed them, but I didn't want them to take up precious writing time. After all, you get lots of waiting time during editing that can be used for making the diagrams nicer.

I hit upon it by accident, really. I'd been taking pictures of sketches I'd been doing throughout the day with my smartphone, then posting them to Twitter. While these weren't archival-quality shots, they worked well enough for their intended purpose: amuse the masses. Why couldn't I do this for my book diagrams?

I started using a new workflow:

  • Write write write
  • Come across a section where I was going to need a diagram
  • Stop, sketch it in a cheap sketch-pad
  • Take a picture of it
  • Crop it on my phone
  • Wait for it to upload to my machine
  • Move it to where I needed it to be, and name it something sensible
  • Insert it

That looks like quite a few steps, but trust me, it only takes me about five minutes. Sketching is much faster than trying to start in a graphics program. My paper is already right here (I always have the sketchbook at hand), as is my phone, and Dropbox is always doing its thing in the background.

Eventually, though, I need to make nicer images. What do I use then?

Tools I use

I do not own Photoshop. I know, I know, that's crazy. The last time I checked, though, Photoshop was over five hundred bucks, and that's way over my impulse range. I have to truly believe with my heart and soul that I need something that costs over $200.

And no, before you ask, my work has not purchased me Photoshop. I'm a Python developer. That would be silly. I only got it at my last job because we'd randomly run out of designers, and sometimes you just have to fix some transparency on your own.

For screenshots and annotations, I love Skitch. It takes great screenshots that I can mark up immediately, and I love how nice it makes my lines look.

If I need to actually draw something while I'm on my Mac, I fire up Acorn. It does everything I really need it to do: layers, brushes, exporting, selecting, and cropping. I know it only does about 10% of what Photoshop does, but apparently that's the 10% I really needed.

If I happen to be working on my Mint box, I use Gimp. Then I cry a whole bunch.

If, for some reason, I'm on my Windows box (which I use almost exclusively for gaming), I break out Paint.net. I cry slightly less than I do with Gimp, but this is only because I'm distracted by the Steam icon in my toolbar.

When I have to mock up a site for a screenshot, I grab Twitter's Bootstrap. It saved me huge amounts of time, using their styling and templates.

Tip: Know your tools

If you need pull-down menus and icons to access different tools, you're doing it wrong. Learn what the keyboard shortcuts are for every tool you'll need, from creating layers to switching from paintbrush to pencil, to changing how you're selecting areas. Learning the keys made making diagrams a ton faster.

Also, it will not kill you to watch some tutorials on how to use your tools. You may not be planning on a career in the visual arts, but knowing all of the things your tools can do will only make your diagrams look nicer. There's a ton of hidden tricks that get pushed off of the main toolbar to save space.

Ask about colors

When I did diagrams for Accessibility Handbook, they were in color. I found out, while the book was in production, that the diagrams would be in black and white. Hell. Lesson learned: With the new book, I've asked in advance, and I know that my diagrams in this case will be in color.

Save everything

Another lesson I learned was to save everything, in every format. More than once, I had to grab the original file and change a color or a typo, or change some copy. This includes not only the image files, but the HTML files for my screen-shots. For a few of those, I just modified another file, and I was in a world of hurt when someone needed me to make a change.

PyLadies Workshop Wrap-Up November 06, 2012

A chilly weekend in October, PyLadies descended upon the American University campus to teach a class for women on programming and Python.

Workshop numbers

We had thirty-five slots (five were for AU students, and the rest were for us). Every one of the Meet-up slots was filled, and we had a small waiting list.

A few days before the workshop, we asked people to drop if they realized they couldn't make it. Some did, so everyone on the wait-list ended up getting in.

We ended up having twenty-four students, and this was a very good thing. Any more, and we would have had students without desks. As it was, our volunteers had to sit against the wall.

A panoramic of the PyLadies workshop, from the teacher's perspective.

Materials

With our first class, we used the MIT materials given to us by other PyLadies chapter. This time, though, we wanted to try doing something on our own. I had some different ideas about teaching order, so we scrapped those materials and started fresh.

Well, 'fresh.' To be honest, I was using the order from a book I'm writing. I wanted to give it a dry run on some actual humans before sending the book off for publication. My theory, when putting together the table of contents for the book, was that going back and forth between data types and functionality offered more chances for reinforcement than diving into data types first, then functionality.

I also decided to use IDLE, since getting paths set up is a pain in the ass, when you're talking 20 windows machines. While I still think IDLE is a great teaching tool, having some people on older versions proved an issue. I may turn set-up idle time into 'learn how to get around your computer' time, since many students don't know how to open a terminal or change directories.

Sign-up

This time, we did sign-up through the DC PyLadies meet-up rather than through the much larger DC Python group. This meant our class was filled within days, rather than hours, and our wait-list was much smaller (last time, if memory serves, our wait-list was three times the number of spots).

We kept the number of slots the same (30), but added a new rule: The class was for women and their friends. Basically, men could attend as long as they came as the guest of a woman.

Why did we do this? Because last time, the waiting list was almost completely male. This made me wonder if the fact that our class was mostly women was only due to chance. Had we posted at a slightly different time, would the class have been mostly guys?

This isn't the case for every PyLadies chapter (or group that's set up for women and programming). Some have never run into this issue. Some have had huge issues with it, and have had to put this rule in place for even their casual meet-ups. We added this clause because I'm not sure yet where we fall on the spectrum.

In our case, only two men signed up, so we didn't have to have any awkward conversations. Huzzah!

Also, we didn't charge for the class. I don't believe in nominal fees. No, not because I'm completely selfless; I don't believe in them because they tend to have the opposite of the intended effect. When people shell out a few bucks for a seat, they feel more justified in not attending. You've basically given them a way to pay off their guilt. If you don't let them do this, then they're more likely to get out of bed early and get to class.

Volunteer meeting

A few days before the class, we had a meeting with the volunteers, which I highly recommend to anyone running an Intro to Python class. We covered the syllabus, schedule, and some ground rules:

  • Don't dis the student's ideas, or point out that it's already been done. Everyone has to write a shitty blog app at some point in their career.
  • We have two days to teach the students about Python, so we're going to be streamlining. We're not going to mention some things on purpose. We only have so many hours, and their brains are only going to be sponge-like for part of those hours.
  • Watch for confusion. Never assume the student will 'totally get it later.' They will not. Back up, try again.
  • If you are still running into a wall with a student, grab another teacher / volunteer and let them try.
  • If you think of something that we need to go over, ping me during a break, not while I'm teaching. It might be something we're not going to cover, or I might need to whip up an example really fast. Heck, I might need to check the help, because it may have been a while since I used that particular bit of Python.

Day One

Setting-up

I don't know what the hell happened in DC on Saturday, but traffic was horrific. Like, sit in one spot for 30 minutes horrific. I'm a hardened native who thinks anyone who whines about an hour long commute is a wuss, but even I was yelling 'Oh, come ON!' over my steering wheel. I'd planned on being there an hour early, and was there an hour late.

Happily, everyone else where there on time. The first hour was dedicated to setting everyone up, so all I missed was a bunch of cursing at Windows machines.

I recommend setting up in person or over a screen share, because instructions can easily go off the rails. One click installers often aren't. Sometimes students grab the wrong version, or installed a version that was current a while back. Sometimes, they grab Python 3 no matter how many times you say "Get 2.7" because they've been trained to get the latest version of whatever they need.

You also do not want a poor Windows user screwing up their path while they try to get Python to run on the command line.

Wifi was problematic due to some duplicate logins. Some people stayed on fine. Others kept knocking each other off. We weren't doing much with the Internet, but I still recommend bringing in installers on flash drives. I also recommend making sure that the students have wifi before anyone else.

Let's get started!

Once everyone was set-up, I realized we still had a while before lunch, so I went ahead and started covering some introductions and basic concepts.

I talked a bit about who we are (most of the attendees had never been to a PyLadies meeting), gave an overview of the class, and talked about all the stuff that Python can do, and is currently doing. We had a mix of students, from a high school student to people into scientific computing, as well as a hardened Java and PHP developer. I tried to hit on as wide a range of applications I could. I wanted everyone to recognize at least one thing I was tossing out there.

At that point, I pulled up IDLE and started going over some basics.

  • What's a variable?
  • Numbers (floats and integers)
  • Math
  • Comparing values
  • True and False

At this point, food was ready, so we ate and helped anyone who was still having technical issues.

After lunch, we moved into our next topics.

  • if / then statements (with a quick dip into try / except)
  • What's a block?
  • Storing text
  • Playing with text (conversion and math)
  • Getting input from the user
  • Lessons about trusting the user (never trust the user)
  • Working with files

By this time, it was three o'clock, so we introduced the idea of student projects. We asked them to go home and think about what in their life could be automated, or what they were curious about. Sunday afternoon, we'd break into groups and help them realize at least a part of their project.

I then went home and drank.

Day Two

There was a marathon scheduled in DC, so I emailed students, warning them to check their route. I struck out early and managed to get there insanely early.

Note: Nothing is open on the AU campus on Sunday.

I didn't notice any attrition on our second day, which delighted me. Everyone showed up, we cleared up a few technical issues, did a quick review of what we'd gone over the day before, then launched into more Python.

More Python!

We were only teaching that morning, but we crammed quite a bit in.

  • Lists
  • For loops
  • While loops
  • Dictionaries
  • Imports
  • Functions

Brains full, we had lunch, then moved on to student projects.

Student projects

Previously, we had the entire class do a Twitter project. This time, though, we decided to let the students think of their own projects. We broke them up into groups that had roughly the same idea. There was a web group (including a woman who got Django running the night of the first class!), a PyGame group, some OS people, and... other groups. I'm kicking myself that I didn't make a note of all the groups that we had.

Volunteers and teachers moved amongst the groups, helping students focus a big idea into something more manageable. It was amazing watching students work through the logic of a program, then light up when their code started doing what they expected.

The next level?

One request we got from many students was a second class, covering the next level of coding. We didn't get to object oriented programming (because come on, people! We only had two days!), and we were barely got to cover imports or installing other libraries.

I'm putting together materials for a 'Intro to Python II' class now, and trying to figure out a way to screen for people that may be better off in the Intro I class. Ask them to write a bit of code? Quick test? Ask that they finish the Codecademy Python section before they come in? I don't want to put people off, but our time and the seats available are highly limited. I'd rather not have a class full of people who assume that they'll catch up quickly.

Releasing materials

I was asked during the class whether I would be releasing the materials for others to use, and the answer is 'yes.' I'm just considering licensing. Creative commons makes the most sense, so I've been reading over all the variations. After talking with some people who've used CC licensing, I think I'm going to go with CC-NC-SA. So, people are free to use the materials (with attribution), and alter them (as long as they share alike), but any commercial uses will require a waiver.

I may strip off the NC part, but it was pointed out that, once I do that, I can't undo it. I'm not against people charging for a class, but I want err on the side of caution for now.

Last but not least...

A huge thanks to my co-organizer, Jackie Kazil, who made the food and the space happen, DC Python for lending us their non-profit status, all of our wonderful volunteers who made it possible for me to teach without having to debug someone's computer every two minutes, Social Code for the sponsorship, and American University for the space.

Katie Writes Again! October 31, 2012

A few months ago, I signed a contract to write a book in the Teach Yourself X in 24 Hours series. Pearson was looking to do a complete re-write of the one they already had on Python, and my name had ended up on the list.

When I tell people I'm writing a Teach Yourself book, I get one of two reactions:

Two sketches of Katie. One is delighted, captioned "Omigosh yay!" The other looks slightly pained, and is captioned "Um... Sorry?"

Let's talk about that.

Why I'm writing a book for beginners

Personally, I think Python is an excellent language for people who want to learn programming. Why?

  • It's easy to read. I've had third graders look at a script, and they've been able to tell me what it'll do.
  • It's easy to install. I've been able to talk people through installing Python through a Google Hangout while I'm drinking wine and watching Doctor Who.
  • It's actually used out in the real world. Nothing can discourage a user more than discovering that the fake language you had them use isn't good for anything, and now they have to go and learn something new.
  • It's powerful. In the same vein, you can do so much with Python. It makes games! It makes websites! It chews through data and talks to databases and if you get a robot arm for your Raspberry Pi, I'm pretty sure it'll make you a sandwich! It covers pretty much everything those new to programming have asked me about doing.

Why I'm writing a Teach Yourself book

For starters, they asked.

Secondly, I don't have a huge beef with beginners series. I'm one of those rare developers that actually likes Head First books, and yes, I have owned several Dummies guides (one for photography, and the other for writing romance novels [1]). Hell, I own Manga guides! I think it's important for any field to have something that helps put the novice on track without talking down to them or scaring them off.

Yes, I know there's several free books out there for learning Python. One problem: they're on-line. Even the novice who knows how to google properly may not have the vocabulary to find these books. Many beginners, if they don't have access to someone who already codes, are going to go to the bookstore or library and look for a book.

Many 'Beginning' books are deceptive: They're not always for the beginner in programming. They're often for the person who's decided to learn that language who already has some programming under their belt. With tech books not being cheap, it can be an expensive gamble to see where this book is aiming. Say what you will about beginner series: they leave no doubt as to where they're going to start you: the absolute bottom rung.

It's impossible to know which beginner series a beginner is going to gravitate towards. Some like the Dummies guides, while others like the Head First books. I think we should have an excellent Python book in each of them, and the one in the 24 hours series needed to be redone. So, I'm doing it.

What was this proposal like?

This proposal was completely different than the Accessibility Handbook's proposal. That one, I had no predefined format, so it was completely up to me how I organized my material. If anything, my novel organization helped sell the book to higher-ups.

With the Teach Yourself book, I still had some freedom, but there were definitely some constraints: There had to be 24 chapters. Each chapter had to have certain sections, like quizzes or a FAQ. Each chapter had to be doable in an hour. I had to open and close with a list of what the reader was going to learn / what had been learned. There were a few optional sections, but if I included that section for one chapter, it had to be in all the chapters.

Seriously, their style guide is thirty-five pages long. It's crazy.

Also, they had someone tech-read my outline, and I'm glad they did. It ended up a ton better for the second pair of eyes (Thanks, Doug!).

So, where am I?

I've gathered my tech and test readers, and I've submitted chapters one through ten. Eleven through thirteen are written, and chapter fourteen is being a big ol' pain in my ass. It will either be the chapter that everyone loves, or the chapter that no one actually reads.

When's it coming out?

Uh, next year? Sometime?

I plan on handing in the manuscript in January or February, but that doesn't mean I'll be completely done. I'll still have edits to do, and books take a long time to get from the author's desk to the public. They take a lot of time, making sure you don't look like a complete moron, re-doing your images, double checking your resources, and basically making you sweat bullets for weeks and weeks and weeks.


[1] Note, I have no actual interest in writing romance novels. But Writing a Romance Novel For Dummies was one of the most realistic books ever I've ever read about being an author. While other books tried to nurture your delicate soul, that one flat out told you to network and market yourself, and to do what your editor says.

Career Day October 24, 2012

Note: I half-wrote this way back, but then had to put the blog on hiatus due to commitments that make me money. I've decided to post this now that schools are back in session, hopefully encouraging others to speak at their kids' schools this year.

I did my first career day at my son's school, and it was a blast.

I'd never done one before, because either the timing was poor, or the stinker would hide the flyer from me. This year, I intercepted it and was able to sign up, much to his horror.

The lead-up

Since I signed up for a whole day, I thought I'd be speaking for the whole day. Imagine my level of peevishness when I found out I was only signed up for three talking slots. Was I not cool enough or something? I pouted with another first-time parent (also in IT), as we waited for our turns.

The cool factor of the other parents was also a bit intimidating. We had:

  • A bee keeper
  • A mobile vet lab
  • A freaking SWAT team
  • A mounted policeman
  • Loads of firemen
  • A Redskins cheerleader

Seriously? I'm going to compete with that? I comforted myself that I was at least a step above the nutritionist.

Talking to the kids

Finally, it was my turn.

We were handed a sheet of things to cover. This sheet was very important, because the kids had to write down certain things about you, like how much you can make in your career, what character traits are important, and how much education you need. You know, the boring stuff. After that, you could ad lib all you wanted.

I was tempted to ad lib all the way through, but the kids stopped me cold. "You're not reading the sheet."

"Uh..."

A girl held up her worksheet. It looked like the sheet I'd been handed, except hers was mostly blank. Fine, I read off the sheet, they filled out their paper, and they were happy. Less stressed, they actually paid closer attention to what I had to say after that.

    My spiel was pretty basic:
  • I told them I was a developer, a person who makes programs for computers and the Internet. Computers are stupid (the kids loved that I used a 'bad' word, by the way), and we give them instructions to tell them what to do.
  • We call those instructions 'code.'
  • Many things in our lives are either computers in disguise, or contain computers. Gaming consoles, phones, MP3 players, TVs, and even cars use code.
  • Being good at math is a plus, but I know many developers who aren't as good at math who are great developers.
  • What you need to be good at is breaking down a problem into parts, and being able to solve those parts.

Oh, and be good at writing and communication, I added. I figured I might as well indoctrinate some of them while I had them, because we totally need more developers who can write coherently.

I also brought up that I was way overdressed for my job, seeing as how I was in jeans and a nice sweater set. I usually wore my pajamas.

My spiel done, I brought up the code for a fairly basic number guessing game.

import random

high = 10
secret_num = random.randint(1, high)
while 1:
    guess = input("Give me a number between 1 and %s: " % high)
    if guess == secret_num:
        print "You got it!"
        break
    elif guess > secret_num:
        print "That's too high. Try again!"
    else:
        print "That's too low. Try again!"

I walked them through it, and surprisingly, the kids got it right off the bat. We messed around with it, raising the upper limit, changing the inputs, adding how many times the class had guessed. They really, really understood it. They knew what to change, and they knew what the outcome would be.

This should be a lesson to educators: You don't need to start kids off on some fake programming language like Scratch. We have something they can understand and actually use later.

I then brought up my roguelike, toyed around with it, and showed them how much more code was involved. They began to understand that you can do a lot with a little code, but sometimes you need a bunch of code to do something bigger.

Lastly, I made my Mac speak. This, hands-down, was the best trick, and it was one I didn't add until a few minutes before I started my talks. You'd think a bunch of kids who had consoles and computers at home that spouted voice acting all the time wouldn't be into this, but they were amazed. I got requests to do everyone's names, get the computer to sass me, and get it to say bits of songs that I wasn't cool enough to recognize.

Question time!

There was a time set aside for questions, and I got hammered.

    Common questions:
  • Do you know anyone who makes video games? (Yes, I know people at EA and BioWare, and a few indie developers. The kids flipped out over this)
  • Can I play your game on my XBox/PS3/DS? (No, and then I explained how distribution channels worked, and how it was very expensive to develop for consoles)
  • How long does it take for you to make a website? (It varies. I've put one up in an hour, I've had them take me a few weeks. One took a group of us a year to make)
  • What games do you play? (I'd list off all the titles I could think of, much to the dismay of the teachers. I think they wanted me to decry all games as evil. The kids, however, were stunned that I played many of the games that they did.)
  • Can you hack our teacher's computer? (Uh, no. That's illegal.)

What surprised me

The kids repeat questions. Over and over and over again. Not variations on a question: the same exact question. I would just repeat myself until the teacher intervened.

Every kid has a smart phone. I guess my son wasn't being dramatic when he said he was the only one without one.

I should have reviewed what kids call numbers before I went in. They don't call them integers and floats. They call them whole numbers and decimal numbers. I'd recommend asking the teacher before you go in, since this could vary by district.

One kid asked me if I knew anyone who worked on Grand Theft Auto. "That's rated M. What do you know about that series?" "Um..."

The kids were shocked that me, an old person, played as many video games as I do. They were also shocked that I knew what all the systems were, and that I would actually choose not to buy one.

They were really, really good at the number guessing game. Like, almost perfect. I've known adults who couldn't do the guessing game in the minimum amount of moves.

Not everyone presenting was a parent of a child there. Some had children who graduated long ago, others were friends of a teacher. Some had approached the school and had a standing agreement. I had always assumed that the adults at career day were parents to a child there, but most weren't.

So, should you do a career day?

You absolutely should. I was up against a SWAT team and a vet, and I ended up being one of the more popular presentations. It takes barely any prep: I wrote the number guessing game while I was waiting. They already had the format they needed, and it wasn't anything I had to think terribly hard about.

Getting kids excited about programming today means that one day, you're more likely to have competent juniors. If you plan on being in the workforce eleven years from now, the fifth grader you talk to today is your new hire in the future.

Accessibility in Video Games - Physical October 15, 2012

There's nothing like losing use of your dominant hand for a year to give you empathy for the physically disabled.

The Iguana Saga

It was my sophomore year in college, and I was bitten by my five-and-a-half foot iguana. Four tendons were completely severed. Twelve hours in the ER, three in the OR, and a year of physical therapy later, I had most of my use back, though I would never regain full feeling, and my right hand tires quickly.

This was a few months after I got my PlayStation. AUGH. TIMING.

Once I was off the meds that made me think that British people were speaking Spanish, I broke out my PlayStation again. I couldn't go to school since I couldn't take notes, and the meds I was on tired me out if I did anything more strenuous than go out to eat. Might as well game.

I discovered that there were some games that were impossible to play, but some were doable. I beat Final Fantasy 8 thanks to being able access all the functionality of the game with one hand. I could also set the fight system to one that waited for me to enter what I wanted to do rather than beat on me constantly.

The people at my work did some research, and one of them found a one-handed keyboard for me to use. Another installed Dragoon Natural Speaking. I played around with both, and ended up with a grab-bag of successes and failures. I could poke around on my computer, but anything more complex than surfing was painful. Games? Hah. No. I couldn't hit the keys fast enough, even with my nifty one-handed keyboard. Mousing with my off-hand was shaky, and it didn't get much steadier as time went on.

I have all of my functionality back, but I still have time limits when it comes to how long I can do things on the computer or on a console. If I game more than an hour or two at a time, I pay for it the next day. My hand wears out quickly, so if I have to hold down a button for a long time, I'm going to eventually get pains shooting up my arm.

So what?

Not every physically disabled gamer is in a wheel chair (though some are). We may not even appear to have a disability. Most people don't know about my hand until I stick it in their face and start rattling off my story ("I know what my hand looks like without any skin on it!"). It may be incredibly subtle, and it may take time to kick in.

Who does it include:

  • Those with limited movement
  • Those with spastic disorders (their muscles might move too much, or move unexpectedly)
  • Those with arthritic disorders or RSI
  • The temporarily disabled (broken arm, etc)
  • The elderly (Your grandparents may not game, but you're going to be old one day. Sonny.)

The tools

The physically disabled have a huge variety of tools, some of them made especially for gaming.

  • One-handed keyboards
  • On-screen keyboards
  • Touch screens
  • Specialized controllers
  • Mice with many buttons

They also might use a standard keyboard and mouse, albeit slower than normal, or less steadily.

What can a game developer do?

Since games are so heavily reliant on input (and often, quick input), this can feel like an impossible task. It isn't, though! Ask yourself a few questions...

Does input need to be realtime?

With Final Fantasy 7 and 8, I was able to configure battles so that the game waited for my input before continuing. Without this, the game would have been impossible for me to play. Did it take longer? Oh, sure. A replay a few years later proved I could beat the game pretty quickly if I could use both hands. I was still able to beat it, however. Tetris wouldn't work if it wasn't real time, but many RPGs have room to add this in. Even Fallout 3 had this, in a way, with their TADS system. Hit a key, and you can choose where you want to plug enemies.

Can you have on-screen controls?

Take a look at your game screen. Could you add an optional pad for movement or input onto the screen? Legend of Grimrock has one of these, added back in at the request of a disabled developer who uses a touch-screen to play games. If you do decide to add this, just remember to add all functionality a user would need: Pausing, movement, spell casting, and combat should all be represented.

If this seems impossible to add, go look at a few RPGs on Android or iOS. If they're an import from another system, they will almost always have a set of translucent controls.

A shot of Minecraft on Android, with the movement controls shown.

One advantage to designing some on-screen controls: You're already primed for deploying to a tablet market.

Can you lose the mouse? Or the keyboard?

Many PC games are a hybrid: they insist on using both the mouse and keyboard. For some games, this would probably be impossible to work around. I can't image playing a FPS without the ability to look around with my mouse. For others, though, there's a bit more leeway. I have a feeling that Blackwell Legacy could have worked with just the keyboard

Can the user customize controls?

Many specialized controllers depend on the ability for the user to customize their controls. Maybe they want to remap everything to work on their mouse. Maybe they're left handed and really don't want to use the arrow keys.

What do StickyKeys do?

If you've ever worked with Windows, I'll bet you know about StickyKeys. In many versions, if you hold down the shift key too long, you'll turn them on. They'll then proceed to drive you up the damn wall until you get them turned off.

With StickyKeys enabled, if you hold a key for a bit, you can release it, but Windows will pretend that you're still holding it down until you hit another key. If you're someone with joint issues, this can be a god-send. Holding down one key, whether on the keyboard or on the mouse, can cause quite a bit of pain if you have any hand issues.

I discovered the glory of StickyKeys and games when I played The Witcher. In The Witcher, you generally walk by left-clicking and holding somewhere away from your character. You walk all over the damn place in that game, so I was getting horrible pains up my arm.

I turned on StickyKeys so that I'd only have to hold down the mouse button for a few seconds. After that, I guided my character by moving my mouse around. He followed my cursor until I clicked again, at which point he stopped.

Most games work with StickyKeys without any interference, but it's worth revving up your game and seeing how the two interact.

Next up...

The cognitively disabled!

Homebody Diary: Am I a shut-in? October 08, 2012

When I tell people that I work from home, I usually follow it up with "Yeah, and now I'm no longer fit for society" and a laugh. We've all seen that Oatmeal comic. We know how the story of the remote worker is supposed to end: covered in urine and communicating in grunts and half-words.

I thought I would need more socialization when I started working from home. I was convinced that I'd end up at a co-working space at least once a week (or at the very least, a coffee shop). I soon discovered that getting out the door was more trouble than I was ready to put up with in order to pay for coffee or a seat. I mean, I have a chair here, and coffee in the house is free!

I was surprised when I found out that I didn't miss people at all. I'd expected to be lonely, and I wasn't. Excellent!

In early September, I went to DjangoCon US. I love conferences. I'm an incredibly social person, so I tend to be in a rather manic state for the entire time I'm there. I want to see all the people that I only get to see at conferences, and there's always a few mavens that want to introduce me to a slew of new people. Add to that the fact that I can and will talk to anyone who happens to be within five feet of me, and that's a lot of social contact.

It started great. I was seeing people, hugging people, shaking hands, sharing stories, seeing talks, talking about talks... and then, at about 2 in the afternoon, it hit me.

I needed to be alone for a while.

I just didn't want to talk to anyone. I felt drained. I wasn't tired (I have a strict in-bed-by-eleven rule at conferences). I wasn't sad. I just... didn't want to talk anymore.

I skipped that round of talks and took a bath in my room. A cup of tea and some quiet time later, I felt ready to join the masses again. I chalked it up to being mentally exhausted after my tutorial.

Then it happened again on the second day. Then again on the third.

I've never had this happen to me. I've never gotten tired of being around people. Hell, even when the people are super annoying and I want to strangle them with their innards, my reaction is to find different people, not to find a quiet space.

I wish I could say that I'm posting this with any idea what this means for my future. Instead, I'm posting this as a way to record the first incident of becoming slightly less social. I can deal with needing a half-hour of alone time during a conference. It was nice. I can't picture a time when I simply can't go to conferences because I can't be around people that much.

If I do show a trend in becoming less social, then I'll have to make an effort to find some ways to inject people into my life during the day. Maybe co-working, maybe a coffee shop. Maybe I'll teach more. I just don't want to end up the person who never leaves her house five years from now.

Writing - Thoughts once done August 31, 2012

Since Accessibility Handbook was released, I've had a lot of people asking me about what it was like to write a book. My response is somewhat disjointed. It's awesome! It's the most pain I've willingly inflicted on myself! It made me more confident! It made me think I was a nobody!

So, here's the long of it.

The pitch

You would think this is the hard part. I was nervous as hell before I made my pitch. All I could think of was every article I ever read about the elevator pitch. You have thirty seconds to share your awesome idea! GO!

Pitching a book isn't like that, though (at least, not in my experience). My first editor, Julie Steele, approached me about writing after I snarked about a poorly written technical book on Twitter. I had no ideas at our first meeting. I just knew what I could write about. Happily, she knew the potential interest in those markets and helped me focus on one of the topics.

After our talk, I wrote up an outline and sent that to her. Not long after, I had contracts in my hand to sign and a book to write.

Writing: the easy stuff

Starting a book was incredibly easy for me. I love writing. I already had an outline, so all I had to do was follow my original plan. I sat down every day, and for an hour or so, I wrote, spilling out everything I had learned about accessibility onto the page.

This part of the process is energizing. The words flow. You can write when tired, when tipsy, when distracted, and still, they come out. Writers block is a myth! You watch your page count go up, and you start wondering if maybe you can submit the book early.

Then, you trip over a section where your knowledge is a bit sketchier...

The first hurdle (I'm learning SO MUCH!)

The first time I hit this, it was a minor thing. I ran into a few sites dedicated to Dyslexia and web design, and realized I'd left them out. No big. I researched a bit, and the recommendations were consistent across the board.

I found it fascinating, and burbled to anyone who would listen about how much you learn while writing a book. It's awesome! I love learning, and I love writing, and now omigod I could do BOTH at the SAME TIME. Life is good.

The second hurdle (The reality check)

After writing for a while, I came across a topic that I was completely unschooled in: WAI-ARIA. I knew about it, of course, but I'd never used it. How hard could it be, though? I'd just read up on it and include it in a section again!

Wrong. Oh, so wrong.

ARIA was much harder to research. Parts of it are easy. Parts of it are not. Some bits stand on their own. Some need Javascript and CSS to work. There are books written on this thing I wanted to do one tiny section on.

I freaked the hell out.

Impostor syndrome (I'M A HACK!!!)

This hit me hard. Who was I to write a book about 508 and accessibility? There were people who had been doing this since 508c was written!

I re-read my old chapters. They were terrible. Was English my second language or something? Did I have a stroke that wiped out my ability to write coherently? What the hell was wrong with me?!

I couldn't touch the book for a while. I didn't like to think about it. I was going to fail. I just knew it.

What kicked me in my rear was an email from my second editor, asking if we needed to put the book on hold. It took all my strength to write back: No. I am finishing this book if it kills me.

Who was I to write a book on accessibility? I was one of the few people that would put her butt in a chair and get it done, that's who.

The final stretch (All side projects go to hell)

I didn't intentionally drop my side-projects. I just didn't have the energy to even consider them. My Roguelike languished. My blog stopped. A few projects that I had just started outlining never made it to the next stage. I dropped out of social circles.

My weekends were often reduced to me writing on the book all weekend, with breaks for food and forced socialization. I did it, though. I finished the book and handed it over to my editor.

Tech readers (I'm a hack, redux)

My editor handed the book over to my tech readers. I had found them through a call-to-arms on Twitter and G+, so they were all friends, and I already knew they were all highly competent.

That was the longest wait of my life. I knew they were going to return the book with scathing remarks. Gah! She's a hack! I can't believe O'Reilly is considering publishing this pile! Un-followed!

That didn't happen.

They read it, and came back with corrections... and praise. Lots of it. I was stunned. Maybe I'm not a hack after all! I probably read their comments at least once every few days when I started to get nervous and backslide.

Editing

With my next book, I swear, I'm considering hiring someone to make all the changes from the tech readers. Oh, I should review each change? Yeah, I thought that the first week. Oh, is that the rule for commas? Hm. I don't think so. I'm going to go look that one up.

By week two, had one of them asked me to replace all occurrences of 'accessibility' with 'elephant', I would have done it. Editing is mind-numbing.

Submission

Finally, it was done. I was done! I could stop looking at the manuscript and have a life again!

AHAHAHAHAHHA

No.

That was when the production editors get a hold of you. You have one last chance to review your book before it goes to print. They go over it with a fine tooth comb. Figures are redrawn for different formats. This took me about two weeks of back and forth. Not as bad as the editing phase, but don't think that you're free just because they have your manuscript.

The long wait

And then, silence. Your book moves through the wyrding ways of your publishing house. I had a page on O'Reilly, but all it said was that the book was available for pre-order.

I didn't learn my book was for sale through my editor. No, this is where being part of an international social group comes in handy. A friend in Israel alerted me through Twitter, congratulating me on the book being published. I figured he'd found the pre-order page... And imagine my shock when I saw that it was now for sale.

I squealed, then spent the rest of the day in a highly manic state. It was out! It was published! I was an Author now! If you had bad news to deliver (and I did get some that day), that was the day that it didn't phase me for a second.

Lessons Learned

Next time, I'm going to learn to shut down projects gracefully by scheduling my crunch time. The next book is in the works, and I've already decided to go quiet from December to January. That's where all my wiggle room is built in, and chances are I'll be body-slamming the walls of said room.

Also, I know to look for the crisis of faith. It's apparently rather common with writers. Agatha Christie had them for each book, and she wrote approximately a million books. Each time, she got through it and finished the book. My husband knows to look for it, and I know to drop the 'everything is fine' act and actually speak up about what I'm going through. The book probably would have been out in June, had I not spent so long freaking out.

Outlines are awesome. I'd love to see if I could use one for a fiction book.

And the last lesson learned? I really, really love writing. Being published only makes me love it more.

Accessibility: Look at What's Out! August 29, 2012

Overnight, my book on making accessible websites was released. It's my first book, and I'm completely over the moon. Not only do I get my own animal, but I get to put a book out on something I'm passionate about. I get to help break the paradigm that accessibility is too expensive, just about the blind, or only benefits a small portion of the population.

Even better is the timing: I'm teaching a tutorial at DjangoCon on making accessible websites. I've been super jazzed about being able to do more than drive-by conversations with people about accessibility. It's one of those topics that many people approach with skeptisism, but leave with a budding interest. This time, I'll be able to take that interest and mold it into a deeper understanding in what it means to be accessible.

We also get to improve a really bad restaurant site, which I think will be cathartic for most of us.

There's space at the tutorial, so if you're at DjangoCon or in the DC area, you can still sign up! And heck, you can say you took a class on accessibility from the woman who wrote a book on it.

DjangoCon 2012 - Metro August 15, 2012

The DC area has a commuter rail called the Metro. It's pretty easy to use in my opinion. Still, I've had to give enough impromptu lessons to tourists to know it's not completely intuitive.

The Map

A map of the Metro rail system

Do yourself a favor and get a copy of the Metro's rail map now, whether you store it on your phone or in your backpack. They have one of these maps on every car and in every station, but sometimes people stand in front of them.

Lines are indicated by color (that part should be intuitive). Stops are indicated by circles. If a stop appears on more than one line, then you can transfer there.

A close up of the Metro map, showing which stations are transfer points, and which are not. In spite being next to an orange line, one station is red line only because the station dot is not on the orange line.

Why are some of the stops double circles? Because they're the first or last place you can transfer to a new line. They're not the only places you can transfer. Any circle on any color (even those that run under two other lines of color) are transfer stations. For example, at L'Enfant Plaza you can transfer to orange, blue, green, and yellow lines.

One metro stop where four lines stop.

Something to keep in mind: The map is not to scale. Some stops, you can get off and walk to the next stop with no issues. Some will land you miles away from where you wanted to be. Unless you know for certain that another stop is a good alternative, do not get off of the Metro at a stop that seems to be 'close'.

Catching a train

Trains are labeled by two things: color and end destination. When you're in a station, look for the platform that matches the color of the train you're trying to get and the end destination of that line. So, if you're at the Crystal City station and you want to go to Gallery Place / Chinatown, get on the platform for the Yellow Line, on the side that ends in Fort Totten (or Greenbelt, if you happen to see a yellow train going to Greenbelt. Either works).

To find your platform, follow the signs and pillars for your line's color AND final destination. In some stations, one line has trains in both direction serviced by one track. In others, you're on completely different levels.

Once you're at your platform, there should be a sign announcing when the next train is, what color it is, what it's final destination is, and how many cars it has. Trains stop at the end of the platform (consider the opening where the train is coming from the beginning).

The stations

On the escalators: Stand on the right, walk on the left. For the love of god, please do this so you don't give some poor Washingtonian a coronary.

The stations in the city are all underground, while the ones outside of the city are a mixed bag (though mostly above ground).

Many of the stations have cell service in the stations. This drops in the tunnels for some carriers. Get your stuff done before the train moves.

There's often more than one exit for a station. Some people look at one of the posted maps to figure out which one would be best for them. Me? I take the closest one, then turn on my GPS to figure out how to get where I'm going.

Tickets and fare

Fare is determined by three things: where you are, your destination, and what time it is. Either use the trip planner tool or look at the fair list in your beginning station (the fare list is almost always right above the rail map). Fares are one-way, and you need to add a dollar each way if you're using a paper ticket.

You can get either a FastPass or a paper ticket. If you're going to do any more Metroing besides going to and from the Regean National Airport, get a FastPass. It costs five dollars (you pay ten, but it comes with five bucks on it). Also, if your FastPass doesn't have enough money to get out of the station, it'll let you go negative. With a paper pass, you simply won't get out until you up the balance.

FastPasses are magnetic cards, so just touch the FastPass card to the FastPass shield, and the gates will open. A screen should show you how much you have on your card.

Transfers are free. Screwing up and going too far is free. Metro doesn't charge you until you leave the station.

We do not run 24 hours

We are not a cool train system that runs at all hours. It was a fight to get them to stay open past eleven, trust me.

Each station closes at a different time, so they each post a sign as you go in, stating when the last train will leave that station. There might be separate times for each line.

Rush+

UGH. Why did you do this to me, Metro? Rush+ was added recently to make trips a bit shorter for people working in the city who work off of one line, but live / park on another.

Anyway, some trains only run on certain tracks and certain times. These are indicated by the dashed lines (for example, a Yellow Rush+ train runs from King Street to Franconia-Springfield).

Rush+ trains only run Monday through Friday in the morning (6:30am - 9:00am) and in the evening (3:30pm - 6:00pm).

Mobility challenged

Every station has escalators and elevators. That said, they go out of service. It's rare that I walk into a Metro station and don't see an escalator / elevator outage warning. If you can't use the stairs, keep an eye on the outages, either on WMATA's site or through one of the Metro apps.

If there is an outage, they'll usually pick another stop and offer a shuttle from that one to the stop with the outage.

Next

I think that's it for now! If you have any questions, hit me up in the comments!

DjangoCon 2012 - Eating in DC August 13, 2012

A caveat: When I'm eating in DC, it's usually because there's a Capitals game going on. I have very deep knowledge of the food options near the Verizon center and that's about it. Happily, DC people are heavy users of Yelp and such, so finding the good places isn't too difficult.

I highly recommend making reservations if you can. DC is unpredictable. I've walked into a restaurant on Friday night and found it dead. I've gone back a few weeks later on a Tuesday, and it's jammed. You don't know when conferences will be in town, so just save yourself some heartache and use Open Table.

That said, here's my list of places to eat and drink in DC!

Near the hotel

The hotel is near quite a bit of food. Some of the restaurants are chains (though higher-quality chains) and some are family owned.

    My favorites:
  • Kabob Place - As many commenters from my last post said, OH MY GOD. This place is awesome. Fantastic kabobs, and now they have a sit-down restaurant along side the original. You get a ton of food, but prepare to wait.
  • Ted's Montana Grill- A chain, but I've yet to be disappointed there. Get the buffalo, no matter what you do.
  • Cafe Pizzaiolo- Awesome pizza, and a great selection of beer for such a tiny place. Also, some good gelato.
  • Legal Seafood- It's fish, it's reliably good.
  • Cold Stone- Ice cream is a valid dinner choice.
  • Jaleo- Tapas. A bit pricey, but they have some options that aren't as bad.
  • Harar Mesob- Awesome Ethopian. Do this one family style.
  • Cafe Italia- Excellent Italian, with gluten-free options.
  • Neramitra - It's okay Thai. I love the pad see ew. They have outdoor seating. The portions are plentiful, so this may be a way to stretch your food budget without hitting up McDonalds.

Let's go to the city!

The city is a short metro ride away. I highly recommend making the trek at least once.

Chinatown

Um, this is awkward. See, we have a Chinatown... and we put a stadium in the middle of it. As a result, our Chinatown isn't what most people expect. We have a Ruby Tuesdays with Chinese calligraphy all over it. It's a bit weird.

It's still a great place to go grab something to eat. There's a ton of restaurants down there, and they range from the extremely pricey to the fairly cheap. If I'm with a group of mixed gastrointestinal needs, I'll head to Chinatown.

    My favorites:
  • Clydes- This is a good one when your group's budget is mixed. They have oysters on the half-shell alongside some reasonable salads and sandwiches. I will eat the hell out of their buffalo chicken sandwich when under the weather.
  • The Chophouse- Steak! Also, an old-school bar that I love to go to.
  • Rosa Mexicano- Great Mexican (you probably guessed the Mexican part).
  • Oyamel- A tapas place that isn't too bad, wallet-wise.
  • Fado- A very pub-like pub. If there's proper football on, you can see it there, along with all the other hooligans.
  • Gordon Biersch - Beer and American style food. Try the fried artichoke hearts.

Downtown

If you're visiting the Mall, do yourself a favor and DO NOT eat on the Mall. It's expensive. Walk a few blocks away.

  • Fogo de Chao- A Brazillian bar-b-que. They walk around with swords full of meat and cut it off onto your plate. You can just get the salad bar, which was heart enough to feed the vegetarians in our group, the last time I took some there.
  • Capital City Brewing Company- They have beer!
  • Elephant and Castle- A pub with a nice range of prices
  • Old Ebbit Grill- They have oysters and a pretty nice price spread.
  • Teaism - Bento boxes! I adore this place. There's seating downstairs, so don't worry if it looks crowded up top.

Also recommended, for those wanting to put on fancy clothes, is The Capital Grille.

Old Town Alexandria

If, for some reason, you don't want to go to the city, take the metro down to King Street. There, you'll be in Old Town Alexandria. Lots of shopping, bars, and privately owned restaurants. This is a quieter option for those that don't want to be in the city (DC really isn't that busy, though, unless you're driving).

Food trucks

We have food trucks! Though the conference provides lunch, it can be fun to go track one of these down instead. Also, many are open for breakfast as well.

They move around from day to day, so check out Food Truck Fiestafor what's going on by us that day.

I'm ________

Paleo: Many restaurants will have some sort of meat 'n' veggies option. Retro Rays seems to be popular with the paleo crowd, though, and the buffalo at Ted's is grass-fed. And really, you can't go wrong with Fago de Chao.

Vegan: I rarely dine with vegans in DC. Most of my friends in the area are vegetarian, and that's completely different when looking for a restaurant. Happily, Urban Spoonhas a list for you! I can highly recommend 2Amys, Clydes, and Busboys and Poets.

Gluten-free: Many places around here offer gluten-free options. Urban Spoononce again comes through with a list of GF places.

Triple D likes...

These places!

I need to do this on the cheap

Every year, The Washingtonian Magazine puts together a list of Cheap Eatsfor the DC area. It's seriously worth checking out. I recommend hitting Five Guys if you can. This goes double for you West Coasters, so you can compare it to In-N-Out.

Next time!

How to Metro!

DjangoCon 2012 - Life in DC August 08, 2012

As long as you're in town, you might as well see some of the sights, right?

Smithsonian

When people come into town, I always point them at the Smithsonian. It's an awesome set of museums that are completely free. You can spend a week going through them and still not see all of the exhibits. They're also only closed two days a year, and neither of those days are during the conference.

    Some important notes:
  • You have to go through security to get in. They're going to poke around in your bag with a stick. Some places have metal detectors.
  • The art museums are super-uppity about what you can bring in. If you think about it, this makes sense. Their exhibits aren't behind glass. They have a bag check so you can stash your stuff if needed.
  • The museums open at 10am. One of the buildings, the castle, opens early, but there's not much to do there besides drink a coffee and sit in the garden.
  • Pictures are allowed! Bring your cameras and camcorders!
  • Almost all of the museums ring the Mall. The Mall is a big strip of grass in front of the Washington Monument. It does not have any stores.
  • The zoo isn't even remotely close Mall. There's a metro stop called "Woodley Park-Zoo", but this is the stop is at the bottom of the world's biggest hill. Get off at Cleveland Park instead.

If you're a gamer, make sure to check out The Art of Video Games at the American Art Museum. If gaming isn't your thing, there's still plenty to see.

Other museums

I adore the International Spy Museum and the Museum of Crime and Punishment. They film America's Most Wanted in the latter! You can get deals for both museums off of Groupon on a regular basis, so keep an eye out for those.

Nearby, there's also a Madame Tussauds if you want to go look at creepy wax people. Also, the National Academy of Sciences has a museum that's super cheap and has some awesomely detailed exhibits. It's not a huge museum, but it's packed with information. They're closed on Tuesdays, so plan accordingly.

And there's so many more! We have no shortage of museums.

Monuments!

If you want to see monuments, buy a step-on-step-off tour. Seriously. The monuments are NOT close to each other, and some of them are surrounded by highway. The buses come by every thirty minutes, which is about how long a monument is likely to entertain most people.

I wanna run!

I confess: I'm not a runner. I've toyed with Couch-to-5k a few times, but the summer always beats me. I did, however, find this trail right by the hotel. amk also recommended Bike Washington for some multi-purpose trails.

I need to go shopping

You forgot to pack socks. We're hit by a freak snow storm. They lost your luggage. Your kids will not let you back in the house without souvenirs. The vendors ran out of your t-shirt size. It's cool. We've got you covered. We're right by the Crystal City Shops. They're easy to miss because the shops are hidden inside the buildings at Crystal City, behind the restaurants.

If your needs aren't covered by those stores, you can ride one metro stop over to Pentagon City Mall and pick up almost everything you need, from clothes to Apple connectors. They even have a Costco, if you need a palate of danishes or something.

Next: FOOD

Yes, you want to eat and possibly hit up a bar while you're here. I'm still compiling that list! Locals, shout out your favorites so I can add them.

Older | Newer