Tuesday, June 19, 2018

My spring in a high school CS classroom

(This is cross-posted from Medium, where it's better formatted)

Computer Science isn’t yet a requirement at the K-12 level, but fortunately, there are a growing number of CS classrooms across the US. Many of those CS classes are taught by teachers that are relatively new to CS, like former math or science teachers, so they have a lot to learn quickly.
That’s where the TEALS program comes in: its a program that matches teachers up with volunteers from the software engineering industry. In the co-teaching model, the volunteers actually teach much of the first year (with the goal of serving as an example for the teacher for the next year). In the TA model, volunteers help students with their questions and debugging.
For those who don’t know me: I’m a software engineer half the time and a teacher the other half. I created all the programming courses for Khan Academy, and most of those were based on in-person workshops for GirlDevelopIt SF. I recently took a break from teaching to do the startup thing, and when I got over the startup thing, I realized how much I missed being in a classroom, so I signed up to be a TEALS volunteer.

The AP CS A Class

I got matched up with Berkeley High School’s AP CS A, a class which uses Java to teach programming concepts, particularly of the object-oriented variety. My very first language was Java (back when Applets were cool), but I hadn’t done any in years, so I binge coded CodingBat problems to prep.
I showed up, and discovered the class was basically as a 100% lab class. The teacher assigned Runestone chapters and CodingBat problems on Google Classroom, and the students worked independently through them, asking for help or helping each other when needed.
I’d walk around with my mini whiteboards, ready to diagram a coding problem at a moment’s notice. I found that always having a whiteboard on hand made me much more likely to guide the student to the answer than just provide the answer immediately.
Helping the students was very fun, and I liked getting deeper into the intricacies of Java. However, I’m a very project-oriented person when it comes to coding, so I was eager to introduce these students to projects: longer assignments with less structure and more creative coding. Thankfully, the teacher welcomed my ideas and was happy to try them out.
We started with a simple Valentine’s Day project, ASCII Candy Hearts —as it turns out, that was their first introduction to ASCII art, and it quickly became a mainstay in every project after that. ♥♥♥
Then we introduced Pair Programming starting with the WordGuesser Game project, and the energy of the room shot up. It was so fun seeing them working together and checking out their takes on each project.

Bringing in chocolate bars for each pair sure motivated them on the ChocolateBar project…🍫

We still needed to prep the students for the AP exam, so we spent the month before the exam on more individual work, like paper programming and multiple choice exams. Ok, and we squeezed in some Binary Bingo…

After the AP, we spent the final month learning the Processing library, and everyone went to work on making visualizations and games. It was a great way for them to use all the Java concepts they’d learnt (like classes for game objects, arrays and ArrayLists of multiple objects, conditionals for collision detection), while also producing a really fun output.

In case it’s useful to anyone else teaching or helping out in an AP CS A class, I’ve written up our sequence of materials in this document.

Intro to Programming

Many CS teachers teach more than one CS course. That means that not only do those teachers need to learn programming, they often need to learn programming in multiple environments and languages, plus CS concepts like algorithms and logic. That’s part of why the TEALS program is so needed — there’s just so much to learn in CS land, let’s give teachers a helping hand!
At Berkeley High School, I soon found out that the teacher taught two sections of an “Intro to Programming” class right after the AP CS A class. Those students started off in Python and Turtle Graphics for the first half of the year, following the Runestone tutorials. Then around the time I started volunteering, it was time for them to switch over to HTML/CSS, and what do you know, their teacher decided to assign them my Khan Academy course.
Of course, I started volunteering in the Intro classes as well. I wasn’t doing the job thing at the time, so I couldn’t resist helping out a classroom of budding web developers. 😄
Once the students learned JavaScript, we started on projects like TicTacToe and MadLibs. We quickly discovered these students weren’t as into pairing as the AP class, likely due to being younger/shyer and not feeling as comfortable with each other. BHS is a high school of 3100 students, aggregated from multiple middle schools, so sadly, many of them just don’t know each other.
As I was helping the students, I noticed they were frequently distracting themselves on GeoGuessr.com, a game where you see a random streetview and have to guess where it is in the world. I became determined to prove to them that they too could build GeoGuessr. Five projects later, they’d learnt about iframes, query parameters, APIs, and geocoding, and they all made their very own GeoGuesser game.

Now what if they shared their GeoGuesser project with friends and wondered how well how they scored? They wouldn’t be able to see that yet, because they didn’t know about databases yet. To me, the magical part of the web is being able to see how people all over the world can use what you’ve made, which means you need to store their data somehow. So I showed them AJAXSQL, and a simple Express+SQLite server. There wasn’t enough time for them to deeply understand Node, but I could at least put the idea in their head, and a number of them used Node to store results for their final.
Students made a big range of final projects, like games in Canvas/Processing, charts using Plotly/CanvasJS, personality quizzes, Jeopardy games, encryption puzzles, and custom maps of fantasy worlds. My favorite was Flickr Feud, a game that pulls random photos from Flickr, asks Watson to identify them, and scores based on your ability to guess what Watson said.

If any of you are teaching a web development class and are looking for more project ideas, I’ve written up the Intro materials in this document.

Reflections on the high school classroom

In the past, my classroom teaching experience was mostly workshops, where the attendees were very eager to be there and to learn. That’s not always the case with high school students — sure, CS classes are electives, so they did choose to be in them at some point, but they’re also busy with other classes and just growing up. And hey, maybe they’re not as into CS as they thought they’d be, or maybe their parents picked their electives.
The point is: high school students aren’t always that into you (me), and not always that into what I’m teaching or how I’m teaching it. That can feel like a downer, but it’s also refreshingly humbling. I tried teaching with a slide deck once, looked out upon a sea of bored faces, and from then on, I only taught via whiteboarding and live coding, and no more than 15 minutes of that.
I feel like I improved my teaching skills thanks to the honesty of high schoolers, so I am thankful for that. 🙏

Thinking of being a CS classroom volunteer?

I’m hoping that a few of you reading this post are software engineers and considering volunteering in a local classroom. I went every day and came up with project ideas, because I had the luxury of being funemployed at the time.
However, TEALS volunteers can come in as little as 1–2 days a week and simply be a TA and answer student’s questions about the tech industry. Plus, TEALS partner schools often schedule the classes as the first period of the day, so that you can wake up, volunteer, and still get to work on time.
You can learn much more on the TEALS website here: https://www.tealsk12.org/volunteers/
Another way to volunteer in classrooms is to email the local schools, like if you’re keen to help out in a middle school or elementary school. I spent every Thursday afternoon this spring at the local middle school coding club, helping with SCRATCH and WoofJS, and I found that opportunity by emailing the local school system.
Classrooms are fascinating. If you have the time, go find one and see! 😊

Tuesday, March 6, 2018

DateNight: An Activity Book for Couples

(This is cross-posted from Medium, where it's better formatted)
I’m the kind of person who loves team bonding activities. A structured activity with a goal and a bit of fun thrown in? I’m in!
And hey, if it works for teams, why not for couples?
So I created DateNight, an activity book for couples. Each activity helps you to get to know each other more, and most of them involve creativity, theatrical expression, or friendly competition. For example, “How did we meet?” gets you drawing a comic strip of your origin story, and “Random Access Memory” gets you to act out and guess memories from your relationship.
The activities were inspired by all sorts of things — like self-help books, Buddhist meditations, life coaching exercises, improv games, art therapy, and children’s crafts. Basically, everything that I find fun and interesting. 😀
My hope is that these activities give couples a new avenue for honest insightful communication, plus help create new memories. Not everyone will be into these sorts of activities, so if you’re excited by them, remember to check in with your partner first before assuming they’ll do them with you. That conversation might help you find out what sort of activities they wouldlike to do with you, so yay, you’ll have already learnt more about each other!
You can download the DateNight PDF here, and print out the whole book or the activity you’ll be trying. Note that there’s a blank page between each page, so that you can tear out each activity and template on its own.
I’d love to hear if you try DateNight out and enjoy the activities! Share your feedback here or send me an email.
May you all find joy, love and growth in your relationships. 😊
Thank you to my former partner Jacob Lyles for inspiring these activities and participating fully in them with me.

Monday, March 5, 2018

Company Crafty Hour: Why & How

(This is cross-posted from Medium, where it's better formatted)
How do companies give their employees opportunities to bond, relax, and have fun? The company “Happy Hour” is a pretty standard approach, where they get to drink (typically alcoholic) beverages and chitchat with each other.
I personally don’t much enjoy Happy Hours, for 2 reasons:
  1. I’m not that into conversation, especially of the unstructured variety. If a conversation doesn’t have a goal, then I lose interest quickly, or worse, I end up speaking about things that I would have rather not voiced (like gossip and petty talk), simply to fill the space.
  2. I no longer drink in work situations (for various reasons). I could drink water or tea, of course, but given my reason #1, what’s the point?

So when I work at a company, I try to find alternative ways for me to bond and have fun with my colleagues.
My most recent experiment: Crafty Hour! We all get together and work on a particular craft, typically one that adds to the office decor in some way. I love crafts, so for me, it was an opportunity to bring a hobby to work, and a new way to get to know colleagues.
Every human has their own preferences, so I bet that someone out there is reading this and thinking “Ugh, crafts!” Totally cool, you do you. Ideally, companies would give their employees multiple options for non-work bonding, so each human can pick what’s up their alley.
That being said, perhaps you work at a company with a bunch of coworkers that seem like they’d be totally into Crafty Hour. To help you get started, here are Crafty Hour ideas from my time at the lovely Woebot Labs:

Succulent Terrariums

Our office was in dire need of greenery when we first moved in, so this was the first craft on the list. Succulents don’t need much water to survive, and they take a while to wither away, so they’re ideal for a workplace of people that are too busy and distracted to water anything. 😁
Green growing things in the office, yay! Bonus: sometimes they attract insects :)
How-to: You can encourage coworkers to bring in old mugs from home or pick up a bunch from the local thrift store. You can clip succulents from community gardens and street-side patches, or use this opportunity find out if any coworkers have their own succulent garden.
For a few more details, see my instructable (and subtract the creepy crawlies… or don’t).

Wood burning: Name placards and motivational phrases

As a general rule, I always opt for crafts that are eco-friendly: 1) not requiring too many new supplies, and 2) able to be recycled easily. That’s why I love wood burning: you find wood in nature, you burn something into it, and if you’re not into your wood burning anymore, you toss it back into nature!
My favorite phrase to burn, and something I need a constant reminder of.
Getting the wood: If you’re fortunate to live near the ocean, you can head out to the most driftwood-y beach in your local area and collect a variety of ocean-smoothed wood pieces. If not, you can purchase driftwood on Etsy or see what your local hardware store has to offer. You can also burn wooden circles or wood slices. Hey, maybe a coworker has a second life as a carpenter? It’s time to find out!
The next step is to procure a woodburning iron. My go-to is also the cheapest iron on Amazon, the basic Weller. I hate to think that you’d get an iron just for this activity and then abandon it forever, so please, start a wood-burning habit or gift it to the coworker that seems most likely to start one.
Now it’s burning time (and waiting-for-iron-to-be-free-time). Your coworkers can burn their names, logos, or little motivational phrases. Encourage sketching out the design first on paper, and give them a chance to practice burning on wood scraps before they burn their final wood piece. Also, keep some sandpaper handy, as that’s how we undo in wood burning land!

Laser-Cut Logo Accessories

I’m a recovering laser-cutter addict, and you’ll notice that in my next two suggestions. If you’re fortunate to have a MakerSpace near you and the finances to afford it, I do recommend learning to use their laser cutter. It’s really quite fun and one of the easier fabrication tools to learn, plus you’ll be able to easily laser-cut fun things for your office. If you don’t have the ability or desire to laser-cut yourself, then you can use an online service like Ponoko.
Then you can laser-cut your company logos, like these Woebot ones:
So adorable. Life goal: only work for companies with adorable logos.
Notice the keychain coming out of the middle one? That’s where the crafting comes in! And in fact, if you use your x-ray vision, you’ll notice that the other two logos are actually magnets. Oooo, magnets! You can even make buttons, necklaces, and earrings.
Supplies: Because I’m a bit of a craftaholic, I already had all the ingredients that we needed for this craft, so as always, please do ask around the office to see if any resident craftaholics have extra supplies that are looking for a home. If not, these Amazon links will get you basic supplies: keychainsmagnetspin backs, and E6000 glue (best glue ever).
For a little added fun, you could also get sanding sponges (to sand away burn marks), and polycrylic stain (for that shiny look). You could even try painting them, with diluted acrylic paint or watercolor.

Soldered LED Sign

Laser cutting strikes again! Plus soldering! I had recently gotten into soldering and basic electronics, and thought it’d be fun to introduce my colleagues to it.
Here’s the end result, an LED-backlist sign:
To be honest, there wasn’t very much crafting for my colleagues to do on this one. I laser-cut the sign, put it in the frame, explained soldering, and had a few colleagues solder each of the RGB LED wires. This instructable covers all the steps (just skip the fabric covering part).
It’d be fun to actually let each colleague make their own sign, or have them group up to create team signs. Or maybe you can come up with an electronics activity that’s better suited for company crafty hours? Please share if you do!

What else?

I will confess, I did not keep crafty hour going forever and ever. It takes some time to plan the crafts and gather supplies, so I stopped after our summer quarter ended and the interns left. The crafts I listed here are pretty much all the crafts we did.
If you wanted though, I have full confidence that you could concoct all sorts of other crafts! 3D Mascot Painting? Chocolate Making? Oh, the possibilites!
The point of my post is not the specifics, even though I delved pretty dang hard into specifics. The point is to remind the world that there are other options in the world besides beer and more beer. Over and out, friends!

Friday, February 9, 2018

Dear Universe: A Mealtime Blessing

(This is cross-posted from Medium, where it's better formatted)
For most of my life, I was wary of religious rituals. I was never able to summon up belief in a deity or deities, and I assumed that if deities weren’t real (at least in my mind), then rituals must be false as well.
I’ve grown up a bit and come to realize that religious rituals are often about more than just professing belief in a particular deity. Many of them also help us humans foster feelings of positivity and community, plus provide avenues for introspection.
I’m now comfortable bringing rituals back into my life, and figuring out how to adapt rituals to my particular beliefs and values.
My favorite daily ritual is the mealtime blessing. I start each blessing with “Dear Universe…” and then continue on to give thanks and recognize the interdependence in our lives.
For example:
“Dear Universe: Thank you for these yummy looking veggies that will give us energy today. Thank you to the farmers who grew and picked them. May all the beings today find the energy to go about their day in the world. Amen.”
Or, on a weekend:
“Dear Universe: Thank you for this bright and sunny day. We’re grateful that we have the time to walk outside and enjoy it. May all the people and cats and other beings enjoy a bit of rest on this Sunday. Amen.”
It’s nice to start off each meal with a gratitude practice, to skew our minds towards the positive as we go into eating and conversing.
I’ll admit, I was pretty self-conscious about saying mealtime blessings at first — and I’m still nervous saying them in front of friends that are new to the tradition. But it gets easier over time, and it’s worth the cheek-blushing. 😊
Here’s a little bonus variation for the improv’ers out there: now that its a regular habit with my partner, we sometimes come up with the blessing together — either by alternating lines or even by attempting to say the same words together.
The mealtime blessing is a simple ritual, but so very helpful. Try it out for yourself and see how it feels for you.
I wish you all well in the quest to cultivate a life of positivity and meaning.
Thank you to Jacob Lyles for starting the mealtime blessing tradition, and to BeAndBeWell for inspiring it.

Saturday, February 3, 2018

Sleep strategies for a racing mind

(This is cross-posted from Medium, where it's formatted better)

My mind doesn’t stop thinking.
Or at least, it really doesn’t like to stop thinking, so it’s always very reluctant when my body says “hey mind, guess what?? it’s sleepy time!”

At that point, my mind needs to slow down enough for my body to be able to accomplish its goal of resting. I’ve been trying different strategies to slow my mind down since I was a kid, and I finally found a few that worked.
I know there are 5 billion posts of ways to fall asleep, because I personally have read 1 billion of them, and well, here’s one more! Bonus points if you’re reading this while trying to sleep.

Pre-req: No phones in the bedroom

I have proven to myself time and time again that I absolutely cannot have a phone within easy distance of my bed. Why? Well, when I can’t sleep, my mind says “Oooo, let’s just figure out how to do thing X or solve problem Y, a few Google searches won’t hurt!” 2 hours later, 20 browser tabs, and 2 Pinterest boards later, I’m even farther away from being able to sleep, as I’ve gotten my mind all excited about something.
Now, each night, I plug my phone into the only charger in my house, conveniently located not in my bedroom.
What about the bedroom-y features of a phone, like an alarm clock or soothing sleep-inducing sounds? I’ve replaced those with Amazon Echo Dot, which provides all those features yet does not make it easy to browse the internet for hours. Phew!

Pre-req: No chocolate after 5pm

The only form of caffeine that goes into my body these days is chocolate, which means my caffeine tolerance is super low. If I eat any after 5pm, the caffeine will still be in my system when I’m trying to sleep, since caffeine has a half-life of 5 hours. Even a hot cocoa at 8pm can keep me up until 2am.

Pre-req: Bedtime Supplements

I was resistant to trying supplements for a long time, as I wanted to try to accomplish my mind-calming without any external dependencies, but then I realized getting a good night’s sleep is so beneficial that it’s worth it to try anything.
My current favorite supplements are NightRest and Magnesium. I’ve also used Melatonin, a fairly popular supplement for sleep, but it’s a little too powerful and changes my wake-up state significantly.

Bed Setup: Heavy blanket and furry sheepdogs

I do not believe I have autism, but I keep discovering that I benefit from products originally designed for those on the autism spectrum. My sensory system seems to work similarly, methinks.
One of those awesome products is heavy blankets. They’re blankets that are weighted down with pellets equal to ~10% of your body weight, and are often made with fantastically fuzzy material. A sensory delight! Researchclaims that they calm the body down via “Deep Pressure Touch” which releases serotonin. Personally, I find that they help me get to sleep, and if I’m bawling, I’ll stop crying as soon as I lay underneath my cozy heavy blanket.
Another sensory delight in my bed is my “sheepdog”: a stuffed elephant with an IKEA sheepskin lovingly hand-sewn on top. I rub my face on the fur for 10 seconds and get so overwhelmed by happy tingly sensations that I forget everything I’d been thinking about it before. Furry calmy time!
I must confess: I no longer have either the blanket or the sheepdog in my bed, as I sleep with my partner now and find that his presence has a similarly calming effect on my system. His hair also has the same texture as the sheepdog. 😁 My brother is happily using the heavy blanket now!

Sleep-inducing Strategy #1: Counting Breaths

As a kid, I was always told to count sheep to get to bed. Every time I tried it, my mind would get itself into a tizzy instead. While counting, my mind was desperately trying to decide what color each sheep was, what the fence looked like, how gracefully they jumped, every last detail of the scene!Generally, my mind overanalyzes whenever it attempts visualizations, so I very rarely find visualizations helpful for calming it down.
However: counting breaths is totally doable, because my breaths actually exist (no offense, sheepies). Just as I do in meditation, I go for deep belly breaths and I count on the exhale. My mind still totally has thoughts, but its less likely to get stuck in thought loops.

Sleep-inducing Strategy #2: Progressive Relaxation

Progressive Relaxation is a super useful technique that you can use for releasing tension at any point during your day and to give your mind a break from thoughts for a hot second.
The basic idea is that you tense parts of your body for 8 seconds, then release that part, and you keep tensing and releasing different parts of your body. You can start at the bottom with your toesies and work your way up, or vice versa. For a quickie, you can tense every muscle at once, and then release it all.
I often find I don’t have the willpower to guide myself through a progressive relaxation, because my mind really-really-really wants to think about something else. In that case, I listen to a recording that will guide me through. There are hundreds of recordings on Youtube that you can sample, including my very own version here.
Still feeling tense? Do it again! In the right situations, it can work wonders.

Sleep-inducing Strategy #3: Bedtime Stories

Little kids know where it’s at. If I get told a bedtime story that actually interests me, I’ll happily nod off to sleep, often mid-story. A former partner of mine is a brilliant improvisational story-teller, and I was always happy when I managed to convince him to make up a story for me. He wasn’t always happy when I’d fall asleep before the end of the story, so we started recording them for posterity. We even turned one of them into a real(-ish) children’s book.
I’ve tried finding engaging bedtime stories on Youtube, but most of them are too targeted at children. If only Pixar made bedtime stories, aye?
Relatedly: I sometimes read short stories before bedtime, like from Asimov, Bradbury, or Dahl. That doesn’t work quite as well, as they often engage my mind a bit too much. They do at least distract my mind from trying to solve problems in my life, which is what tends to keep it up the most.

Sleep-inducing Strategy #3: Sleep Talkdowns

In a sleep talkdown, a nice stranger from the internet talks to you and tries to talk you down into sleep. They may guide you through deep breathing and progressive relaxation, they may remind you that everything is okay, and they often fill in the blanks with whooshing ocean sounds. There are thousands of them on the internet, so you can try a different one each night and see which works for you. This is my favorite sleep talkdown. It’s 30 minutes long, which isn’t always long enough to talk me down, so I will happily play it twice.

That’s All, Folks

These days, I get to sleep within 20 minutes of tucking in, thanks to these variety of strategies. That’s really short for me, so I’m a happy camper now.
If you’re reading, I hope you find a new strategy here that works for you. Feel free to respond with your own experience and suggestions.
And with that, I’m off to sleep. 😴