Showing up in person

In the aftermath of last November’s election, I started attending far more political events than I ever had before. I joined groups that were just forming and groups that had been around for decades. I made signs and attended marches. I listened to speeches by experienced activists. Showing up for causes that I believe in started to make a difference in how I experience my daily life.

My newfound motivation is summed up best in this advice post about Trump by a psychologist: “We do good things because they are good, but results are not guaranteed.” Most of the beliefs I’m advocating for right now are things that have been important to me for decades, if not my entire life. What deterred me before wasn’t thinking that something didn’t matter; it was thinking that my own actions wouldn’t help. I wanted more immediate gratification than I could realistically expect. I ran a service organization on campus and I phone banked for a candidate I believed in and I became a peer counselor on a crisis line. Then I got discouraged and wondered whether I had actually improved anyone’s lives. And then I convinced myself that I needed to take care of myself first, which was technically true, but I didn’t actually make a plan for how to resume taking care of others.

Six months after the election, I’m revisiting President Obama’s words from his farewell address: “I am asking you to believe. Not in my ability to bring about change – but in yours.” This is still tough for me. My guess is that I’ll be battling complacency and fear for a very long time. But I’m trying to believe in the people around me and to spend my time working alongside them. Seeing their faces, hearing their voices, and relying on their strength… it’s not a magic cure, but I think it helps.


Last week, I flew to Alexandria, Virginia to attend RWDevCon, a tutorial conference. Unlike most other tech events, this conference is fully interactive. Before the conference begins, there’s an optional day where you can choose from two different all-day workshops on a single topic. During the conference, aside from the opening and closing remarks and some short inspirational talks, every single session is a hands-on tutorial. Lunch is served buffet-style and everyone sits at large round tables. Each table is set up with casual card games and has at least one team member who teaches the game to everyone else. During the conference party on Friday evening, James Dempsey hosted a game show where attendees were invited to answer trivia questions about Apple development and products. From beginning to end, this conference is both structured and playful, and makes an effort to be inviting to newcomers.

What drew me to RWDevCon was the hands-on nature of these tutorial sessions. I’ve attended different types of tech conferences in the past few years, including PyCon, CocoaConf, and Strange Loop, and I’ve had great experiences at a lot of them. However, I’ve found that some talks seem to suffer from being constrained to ~40 minutes. Many talks that include live coding demonstrations don’t work well for me because I have trouble following along with snippets of code on a far-away screen without enough project context. It’s important to know how you personally learn, but there are some things that hold true in general about learning methods: when you passively receive information, whether it’s written or spoken, you retain less than when you put that information into practice. My hope was that RWDevCon’s format would address both of those concerns. I wrote this post on my flight home, so it’s too early to say for sure how much I’ll retain, but right now I’m pretty happy with how the conference went.

Before the conference, I was concerned that my lack of language fluency would pose a problem. The tutorials were presented in Swift, required lots of typing, and covered some advanced subjects. I originally learned how to develop iOS apps in Objective-C and I still use it exclusively at work. I can read Swift well enough to translate Stack Overflow answers into my own code base, but I wasn’t confident that I could write it, so I was worried about whether I was going to be able to keep up. Fortunately, I’m a fast touch typist, I’ve been using Xcode and Cocoa / Cocoa Touch for years, and I’ve previously learned about concepts like closures and optionals in other languages. However, I did occasionally create syntax errors that I couldn’t immediately fix. This posed a problem during the faster-moving sessions because I was distracted from listening to the next part and I could no longer run my project to test things out. My solution was to keep both the starter project and the final project open during the demo. That way, if I couldn’t figure out the problem in a few seconds, I could copy and paste the relevant five lines and get myself unstuck.

Two tutorials in particular stood out to me:

Reconstructing Popular iOS Animations by Caroline Begbie
I think this session will end up being the most applicable to my day job. My app could really use more animations, so I was glad to see a substantial amount of content both in the live portion and in the PDF lab to complete afterwards. I also loved that Caroline provided ample context for her examples because as a user, I find gratuitous animations very frustrating, and it was helpful to understand how Tinder and Snapchat’s animations convey information to the user.

Swift Playgrounds in Depth by Jawwad Ahmad
This is the session I’m planning on revisiting first. I want to teach myself more Swift in little chunks of time at home and this looks like a great way to start. I’m not convinced that I’d use things like file literals in production code, but it looks really cool for prototyping and exploration. This tutorial was especially good at minimizing the amount of boilerplate code that we had to type in ourselves while delivering a lot of value.

As with any conference, there were a few things I wish I’d done differently:

Prepare a detailed schedule. The organizers sent out a lot of materials in the week leading up to the conference. I wish I’d reviewed the schedule and made a plan of which tutorials I wanted to attend. The important part wouldn’t be to adhere strictly to those decisions; it’s to do the work of understanding what each session is really about. It would also have forced me to contemplate what I wanted to get out of the conference. For example, did I want exposure to tricky new ideas, or would I rather practice something I partly understood in order to solidify my understanding?

Plan some quality alone time. I planned some fun breaks by meeting up with local friends in the evenings for dinner. However, as much as I enjoy talking to people, I also really love my alone time. I wish I’d planned some sit-down restaurant meals or walks around the neighborhood to let my thoughts simply wander. In addition, the ergonomics of conference tables and chairs aren’t great for typing on a MacBook Air, and my wrists and eyes could have used some rest.

An observation on diversity: compared to the places where I’ve personally worked, my gut sense from looking around the room was that gender diversity was poor and age diversity was slightly better than average. Racial diversity seemed about on par. I was shocked to overhear someone say that “There are a lot more ladies here this year.” I realize that my experiences at large companies in San Francisco may not be typical, but I wanted to note my reaction anyway.

Overall, my experience at RWDevCon was very positive. I’m glad that I was able to attend and I feel like I gained a lot from it, both in terms of the technical material covered and the many ad hoc conversations with folks from other places.

The cost of healthcare

Nancy Pelosi has been working with other Democrats to host events in support of the ACA. I attended a rally at City Hall on January 15 and a town hall at Delancey Street Foundation on February 18. Pelosi is also asking constituents to send her personal stories of how we would be affected by the repeal of the ACA. I decided to adapt some of my tweets into a letter that I sent by email.

A few weeks ago, I attended your rally to save the ACA at City Hall here in San Francisco. I was proud to see the turnout across the country that weekend. For me, that day was partly about being a person in a visible crowd, but also about spending the time to hear other people’s stories. I wanted to share my own story with you to explain why it’s so important to me to fight for healthcare for everyone.

I grew up without consistent health insurance, but I got mandatory coverage when I went to college. In my senior year, a few days after a student clinic visit, I got a call insisting that I go to the ER immediately. I asked them, “Wait, what? Why? I feel fine.” They told me that they’d completed a blood test and my results contained something or other that was 3x the expected levels. They were super scared, so I reluctantly canceled my plans with friends and hopped on a bus to a nearby hospital, rolling my eyes. Getting screened in the ER was tedious because I had to wait around, but I didn’t really mind. Just like I assumed, they found levels contrary to campus clinic.

However… they did find high blood pressure. Really high. Enough that they wanted to admit me immediately to run some more tests. At this point I started arguing with them. I felt fine, no big deal. What I really meant was, “I don’t know whether I can afford to be that sick.” I find that it horrifying that I was 21 years old and had blood pressure that called for hospitalization and still tried to refuse further tests. Even though I had insurance, I was panicking that I might be on the verge of a preexisting condition that meant I could never afford a coverage gap again.

I was very lucky: my insurance covered almost all of my $23k hospital bill for a two day stay. I had a parent that taught me how to talk to institutions, including calling the hospital on the phone and asking for a payment plan. I didn’t end up with a serious health crisis. And when I graduated a few months later, I started working at a job that provided good insurance and paid enough that I could save up. But if my health had been a bit worse, or my family had been poorer, or if I’d been less educated, that could easily have been catastrophic.

Our broken healthcare system affects every single person in this country. The ACA finally gave me hope that we would fix it in my lifetime. Thank you for the support you’ve shown so far. Please continue to fight on behalf of all of us.

Post-election changes

This is not a post about how the outside world has changed since November 8, 2016. If you’re looking for that, you probably want this series of posts by Amy Siskind. These are observations about myself.

On the night of the election, I stayed up until 5:30 am, struggling to come to terms with what had just happened. By the next day, I was angry and had resolved to show up and do my part.

Here are some ways that my life has changed in the past 2.5 months.

It’s impossible to maintain focus at work and in my personal life. Turns out it’s harder to write layout code when you simply don’t feel safe. This shift has made me realize how secure and happy I felt for much of the past year. Even as I struggle to find my footing again, I’m grateful to have had that time and to become more aware of it.

I feel physically nauseated from time to time, regardless of how much I sleep and what I eat. Sometimes it seems incredibly daunting to get up from where I’m sitting and walk to my bus stop and go wherever I need to go. I assume that this is due to stress.

I lost interest in most of my old hobbies. I would like to keep running, but it feels like I don’t have the energy to do it yet. I picked up comic books but gotten bored after a few pages. My cosplay ambitions are on indefinite hold, partly because I have no interest at all, but mainly because I don’t think I can sustain both cosplay and activism, and if one of them has to go, it’s obvious what I should do.

I started reading the news again. I’d been trying to limit my daily consumption of it, especially during the endless campaign, but I think I went overboard and got disconnected from the outside world. I grew up reading the Washington Post and the Wall Street Journal, and when I moved to California after college, I got into neighborhood coverage, urbanist blogs, and The Atlantic. These days I mainly try to read The Guardian and periodically peek at National Review, but I inevitably also read a lot of New York Times and Washington Post because that’s what gets shared the most in my networks.

I call my members of Congress on a regular basis. I put their phone numbers in my contact list a week after the election and I’ve been following action newsletters and calling their district offices ever since. I helped a few friends get through their phone anxiety to make their first call.

I learned that I like attending political events in person. However, not every group is right for me. Each group of people has its own style of running the meeting and resolving conflicts. Coming from a tech environment where everyone bends over backwards to avoid crosstalk, it’s jarring to hear people interrupting each other or bluntly saying, “That’s not true. Your facts are wrong.” It’s something I’m trying to get used to without losing my sense of self.

Becoming a Democrat (again)

I’ve been voting for about a decade now and I’ve almost always voted for Democrats. I was excited for my very first election (a midterm election!) because I could finally vote Rick Santorum out of the Senate for his opposition to birth control and promotion of intelligent design. I was also eager to vote for Barack Obama in the 2008 primary.* Back then, it actually mattered that I was a Democrat because Pennsylvania had closed primaries, meaning that only Democrats could vote for the Democratic candidate.

However, when I moved to San Francisco, I registered to vote without declaring a party preference. This isn’t the same as explicitly declaring yourself Independent; it’s just not having any annotation on your name in the voter rolls. I was just trying to avoid phone calls and paper mail, not totally disavow the party. Over the years, I got used to this status quo, and ended up feeling surprisingly attached to it. Since California’s primaries are only closed for Republicans and not Democrats, I didn’t feel the need to rejoin until now.

In the weeks before an election, you get voter guides in the mail from a bunch of different advocacy groups. I do my best to study multiple guides and compare their reasoning when they differ, but I assume that some voters will vote Democrat all the way down the ticket out of information overload or apathy. After all, I’ve considered doing it myself: I didn’t do enough research before my first election and was surprised by how many offices there were beyond Senator.

Here in San Francisco, the Democratic party totally dominates local and state politics, to the point that people strongly identify with specific factions within it. In San Francisco, this looks like a fight between “progressives” and “moderates” over how to fix the housing crisis (but everyone at least agrees that we have a housing crisis and that it’s hurting existing communities and vulnerable people). When I’m on the fence, I do look to the Democratic party’s endorsements in hopes that party members have done a lot of useful arguing on our behalf and figured out a reasonable compromise.

I’m not sure where I thought those party members came from, but last fall, I learned that some of them are directly elected at Assembly District Election Meetings (ADEMs). So, last weekend, I showed up to the Assembly District 17 election at Local 261, a union hall in the Mission to reregister as a Democrat and vote for San Francisco’s voice in statewide party policy.

The line was several blocks long and the wind and the rain were intense enough that my umbrella snapped in the line of duty, but I made it into the building after an hour and was able to cast my vote. As of this post, official results aren’t out yet, but a preliminary photo on David Chiu’s Facebook page suggests that the margin between the 7th Delegate and the 1st runner-up might only have been a vote or two, which is amazing and makes the wait in the rain feel worthwhile.

* This claim is according to the best of my recollection, but I’m not 100% sure and I’m not going to FOIA my voting record to fact check my own blog post and confirm that I voted. For what it’s worth, I did find a Facebook post from April 2008 where I mentioned Obama.

San Francisco’s representatives

My Civic Workout recently asked subscribers to look up the answers to these questions:

  • Who are your elected officials?
  • Where are their newsletters?
  • When are their upcoming town hall meetings?

I live in San Francisco, and if you live in my general vicinity, all of the information below should apply to you too. If you live elsewhere, consider taking some time to research your own elected officials and share your work with your local friends.

Here are the links I used:

I couldn’t find websites or newsletters for everyone. Most people do seem to have campaign newsletters, but those aren’t the same thing as constituent newsletters. One reason might be that newly sworn in members haven’t set everything up yet (as of early January 2017): for example, Kamala Harris was elected to the Senate and Scott Wiener was elected to the State Senate on November 8, 2016.

Federal legislature

Each state has two Senators that represent everyone in the state. If you live in California, both Dianne Feinstein and Kamala Harris represent you, regardless of where in the state you live.

Each person has exactly one representative in the House of Representatives. The districts don’t necessarily line up with city names. You might need your zip code or even your street address to figure out who represents you in the House. Nancy Pelosi represents most, but not all, of San Francisco.

Legislation can be introduced by either the House or the Senate. If someone tries to introduce a nationwide version of SB 1070, Arizona’s notorious racial profiling bill, it could come from either the House or the Senate.

Cabinet nominations and Supreme Court nominations are confirmed by the Senate. When the president chooses people to lead the Department of Homeland Security or the State Department, or to fill an empty spot on the Supreme Court, the Senate needs to sign off on each of those choices.

Senator Dianne Feinstein
San Francisco office: 415-393-0707
Washington DC office: 202-224-3841

Senator Kamala Harris
San Francisco office: 916-448-2787
Washington DC office: 202-224-3553

Representative Nancy Pelosi (newsletter)
San Francisco office: 415-556-4862
Washington DC office: 202-225-4965

State legislature

Legislation can be introduced by either the Assembly or the (State) Senate, which are similar to the House and the US Senate. One important difference is that State Senators don’t serve the whole state; instead, they have their own districts which are a bit bigger than Assembly Members’ districts.

Scott Wiener serves San Francisco, Daly City, and Colma in the Senate. David Chiu serves the eastern half of San Francisco in the Assembly; Phil Ting serves the western half of San Francisco.

State Senator Scott Wiener (newsletter)
San Francisco office: 415-557-1300
Sacramento office: 916-651-4011

Assembly Member David Chiu (newsletter)
San Francisco office: 415-557-3013
Sacramento office: 916-319-2017

Assembly Member Phil Ting (newsletter)
San Francisco office: 415-557-2312
Sacramento office: 916-319-2019

Concrete actions

Throughout the 2016 presidential campaign, I hoped that Trump would not be elected. If he did get elected, I hoped that he wouldn’t follow through on his claims. Since the election, I have been proven wrong over and over. Right now, I have very little hope for the future, but I cannot stand by and do nothing.

Here are my attempts to take consistent, effective action against the regressive policies and cultural fallout that I’m expecting from a Trump administration:


For the immigrants that will be targeted by inhumane deportation policies, I’m donating $50 per month to the American Civil Liberties Union.

For the people who will lose access to reproductive healthcare thanks to fundamentalist Christian terrorists, financial barriers, local abortion clinic shutdowns, and coercive state laws, I’m donating $50 per month to Planned Parenthood.

For everyone endangered by unconstitutional government surveillance, especially activists, I’m donating $50 per month to the Electronic Frontier Foundation.

For queer people who might lose their marital status, get fired from their job, or get denied their correct gender markers on paperwork, I’m donating $50 per month to Lambda Legal.

For everyone targeted by hate crimes and resurgent white supremacy, I’m donating $50 per month to Southern Poverty Law Center.


I’ve purchased annual subscriptions to The Guardian and Foreign Policy to get news that isn’t curated for me by advocacy groups, friends, or colleagues.

I’m donating $50 per month to ProPublica to support investigative journalism.



I’m following three email newsletters: flippable, re:act, and resist in addition to all of the advocacy groups above.

I’m calling Representative Nancy Pelosi, Senator Barbara Boxer, and Senator Dianne Feinstein with my comments and including my name, address, and zip code to make sure they know I’m a constituent.

My first sewing project

After I recently learned how to use a sewing machine at an all-day bootcamp class, I ordered my own machine from Amazon. I knew that I wanted to reinforce the things I had learned as soon as possible, but I didn’t think that I would be able to finish anything useful in time for my current cosplay projects in progress. San Diego Comic-Con is less than a month away, and my remaining items include brown skinny jeans and a white jacket, both of which are too structurally complex for a total beginner.

However, after unsuccessfully shopping for plain square scarves or handkerchiefs that were the right shade of red, I realized that I could buy some fabric, cut out the squares, and sew the edges to look neat and tidy. In Super Smash Bros. for Wii U, which is the character design that my roommate and I are using for reference, it looks like Fox and Falco wear the same color scarf as each other. (You can see this costume on the Fox amiibo.) Fox wears a military green jumpsuit, so that’s easy enough to match, but Falco wears a red one. It’s important for the sake of Falco’s costume to get the right shade of red so that the scarf is vivid but the jumpsuit doesn’t clash too badly.

I stopped by Britex Fabrics in the Financial District because I had a few spare minutes before attending a nearby conference. After accidentally browsing some $95/yard fabric near the entrance, I ventured farther into the store and found some 100% cotton fabrics that were much cheaper. I looked at probably two or three dozen different shades of red, most of which looked pretty much the same to me, so I chose based on price and how it felt like the fabric would drape when I wrapped a triangle around my neck as a scarf. A store employee helped me estimate how much material I would need for two scarves, then measured and cut a yard (around $12) for me.

A few nights later, when I finally got around to setting up my sewing machine on our kitchen table, I had difficulty threading the bobbin case. I did this once during the bootcamp class, but when I tried following the instruction manual, I struggled to translate the written instructions and simple line diagrams to real life. After watching a few different YouTube videos that explained other steps really well, but not my particular step, I gave up (bad idea!) and decided to just poke the thread where it looked vaguely right, and figure out later on whether it mattered.

Unsurprisingly, it did matter, so when I started feeding my scrap fabric through the machine to test it out, the bobbin thread kept bunching up and then breaking. This is apparently a common enough failure that it was included in my instruction manual’s one-page troubleshooting guide. At this point, I called my roommate over (“Hey, you can complete puzzle games where you rotate blocks, right? Can you help me rotate some real-life blocks?”) and together, we threaded the bobbin case successfully. Everything went pretty smoothly from that point on. I was able to back tack when starting and finishing my stitches, and when I got sloppy and let the fabric wander too far away from a straight line, I used a seam ripper to undo my mistake.

It took me a while to set up the machine, cut both squares of fabric, iron all eight edges, sew all eight hems, and tidy up my materials, but it was so incredibly satisfying to be able to produce exactly what I needed for our cosplay project. I’m glad I found a simple project to reinforce my new skills, and I’m looking forward to making something more challenging next time.

A test pose with my new scarf

You can see what Falco looks like on Smashpedia.

Sewing bootcamp

Last Saturday, I took a 7-hour class at Workshop as an intense introduction to learning how to sew. I registered for the class partly for the sake of trying something outside of my comfort zone, but also because I wanted to decide whether to buy a sewing machine to continue teaching myself at home. Back in college, I never wanted to learn how to cook to feed myself. I was only interested in learning how to bake cookies to give as gifts or to host rush events for my service fraternity. Likewise, I don’t want to sew in order to alter my regular clothes or save money. What I want is to wear better costumes at Halloween, Bay to Breakers, and comic / anime conventions.

Workshop’s 7-hour sewing bootcamp was the perfect place for me to test my interest. They provided a bunch of identical sewing machines and boxes of sample fabrics that our instructor had already pre-cut to the sizes we would want to use for the day’s starter projects. We started by gathering around one machine while our instructor gave us a rapid-fire explanation of the various components and what we would do with them. Several of us looked stricken at this point, so she reassured us that we would get the hang of it very quickly once we got our hands on the machines.

When I first returned to my seat, I felt like I had already forgotten everything she told us. After taking a moment to poke at the machine and try some reasonable guesses, I raised my hand and told her that I couldn’t remember at all where to start, so she reviewed the first three steps with me. Once I had actually gotten started, I found myself remembering more than I expected. It was also useful to have classmates on both sides (there were ten of us gathered around a long table) so that I could ask my shorter, simpler questions to a peer without waiting for the instructor to return to me.

The first thing we did was to load top and bottom threads onto the machine. The threads hook onto each other, which is how they stay in the fabric after they’ve been pulled through by the needle. Our “hello world” task was to add a stitch onto a piece of scrap denim. After we had confirmed that the thread was indeed going into the fabric, we continued practicing different stitch styles and speeds, backtracking (which is like reversing the gear to go back over the same section), and stopping to lift the foot so that we could turn the fabric and then continue stitching at a 90 degree angle. I was surprised by how much we were able to make mostly just using those two skills.

We made two projects before lunch: a pouch that tied with an attached string or ribbon, and a beer or soda koozie (which I’ve always called a cozy, so that was disorienting to hear all day) with a little decorative pocket. I made noticeable mistakes on both of these projects. I knew that we would be making the pouch by pinning two rectangles together and then sewing the two layers together along three of their four sides. However, I pinned my ribbon to the wrong spot, so when I sewed those three sides, I also sewed the ribbon halfway into the inside of the pouch. After turning the pouch inside out and realizing what I had done, I considered my options and then cut the ribbon mostly off, tying it to a little loop that had formed on the outside and deciding that it would now be decorative instead of functional. I sewed the beer koozie correctly, but when I traced the pattern using a tailor’s best friend (a white crayon for temporary markings that are easily removed without laundering) and then cut it out with bulky scissors, I made it quite a bit bigger. Even after some adjustment (I borrowed a can of PBR from a classmate to size it), I still ended up making it a bit too big.

Lunch was a welcome break from intensely focusing and talking out loud. I went across the street and ate a sandwich and mindlessly read articles on my phone. In retrospect, though, I wish I hadn’t done that last bit, since my eyes and my mind could have used a bit more rest.

After lunch, we used scrap denim again, this time to learn how to make button holes and attach buttons using a sewing machine. We were impressed to learn that one of the wider stitch options could be used to send the needle precisely through the holes of each button, as long as we were careful to adjust it manually before stepping on the pedal. A few students broke their needles at this point, so they got an opportunity to learn how to change the needle on their machine. We also used a different foot to hold down the fabric when making button holes. This special button hole foot had a guide that helped us keep track of how large we were going to make the hole. On my first try, I ended up making the button hole too small, but after I measured the button more precisely, I made it fit easily.

The toughest part of the afternoon was making a zipper pouch. Like the earlier pouch, this was mostly two rectangles of fabric that were attached together on three sides. However, we had to start by attaching the zipper to the top edge, which was a precise task that required swapping out for yet another foot (shaped differently than the standard foot and the button hole foot) and ripping out some loose temporary stitches after putting the real ones in place. The hardest part for me was guiding the fabric through the machine after I had already attached a zipper to it, since the zipper was bulky and not flat, unlike everything else we were working with that day. I ended up with a somewhat lopsided zipper pouch, even after detecting the problem partway through and ripping out some stitches in order to redo the bottom edge. I also learned the hard way that I shouldn’t cut fabric with the only interesting parts of the print at the very edge, because those edges get folded into the final product, so my pouch that was supposed to have cowboy boots just looks like it has some abstract colors instead.

Our final project was a tote bag, which was conceptually simple but still tiring, especially after a long day of learning. It was really satisfying to call upon the basic skills that we had been practicing all day, and to realize that we were getting a lot better and that things that had seemed baffling at 11:30 am were now simple at 6 pm. Some students finished so quickly that they made an extra pouch or an extra beer koozie, but I used most of our allotted time to finish my tote bag.

I’m really happy that I signed up for this class. I appreciated the hands-on guidance when using a sewing machine for the first time, since that had really intimidated me. (I have no experience at all with most crafts and physical tools.) I’m also glad that we started making things almost immediately. It was fun, of course, but also crucial in solidifying what we learned. I’ve ordered a machine to use at home and I plan to head to a craft store to start buying some starter threads and fabrics next week.

Strange Loop

Last year and this year, I flew to St. Louis to attend Strange Loop. I’ve attended several conferences, a few hackathons, and plenty of local meetups throughout the past two years and Strange Loop is still my favorite developer event. It prides itself on being at the forefront of technology and on unifying industry with academia. Most talks are about functional programming, distributed systems, and new languages, but there are also a number of passion projects that wouldn’t fit neatly into a formal conference track.

The talks I’ve attended at Strange Loop have very little application in my daily life, and that’s really refreshing. Most of the time, I need to be practical about time management, so I prioritize what I learn based on whether it could help me at my current job, or whether it could help me become more employable in the future. When I’m at Strange Loop, all I care about is the rush of encountering something new and challenging.

One highlight from this year’s conference was Analyzing Rap Lyrics Using Python. Julie Lavoie wanted to see if she could write some code to determine which rappers were the most sexist in their songs. She explained natural language processing (NLP) concepts and told us how she tried to apply them to her project, as well as the hurdles she ran into. For example, text search relies on stemming, a process for putting words into a common form so that we don’t count verb conjugations and plurals as unique words. However, stemming libraries don’t support many slang terms used in rap lyrics, so Julie’s program needed to work around that by manually consolidating certain words. You can watch Julie’s talk on YouTube.

Another engaging talk from last year was Learnfun and Playfun: a Nintendo automation system. Tom Murphy found out that the NES stores the current point total in a memory location that he could easily access. He also knew that he could represent all possible game moves as a tree and then efficiently prune a branch when that move would lead to failure. Using this knowledge, he wrote a program that played NES games by guessing different moves and maximizing the total score. This technique worked very well for Mario, but less well for games that require advance planning. You can watch Tom’s talk on InfoQ.

Through its diversity in both speaker lineup and talk topics, Strange Loop provides unique opportunities for discovery. The social events are the perfect complement to this environment. For one night each year, the conference rents out City Museum, a 10-story museum filled with climbable art. When you arrive, you learn two things. First of all, the gift store sells knee pads, and unlike almost any other museum, you may find that useful. Second, the museum doesn’t provide maps so that you’re forced to explore on your own. Crawling through winding caves and gazing out at the sparkling city skyline from the rooftop are good ways to make friends with some of the hundreds of developers around you. And you do want to make friends, especially before you go down a 10-story slide and get too dizzy to walk in a straight line.

Strange Loop is different from any other industry event I’ve attended. The location and the people are both remarkable and allow me a chance to peek into lives far away from my own. I feel lucky to have accumulated so many fond memories there and I can’t wait to return to St. Louis next year.

If you want to learn more detail about the event or hear other perspectives, I highly recommend the dozens of blog posts linked from Strange Loop Coverage on GitHub.