Strange Loop 2018

I attended my fifth annual Strange Loop earlier this year. I’ve written before about why it’s my favorite conference, and after taking 2017 off to use my annual conference benefit a bit differently at RWDevCon, I was excited to return to St. Louis.

In past years, the talks I usually enjoyed most were about people’s hobby projects, particularly games, music, and art. I always like hearing stories about how someone else completed a particular project, even if it has nothing to do with my own discipline. I don’t attend as many strictly-academic talks, but since that’s part of the appeal of Strange Loop, I try to make some time for that too.

I started my week at a pre-conference event called Software with a Mission. SWAM’s goal is to highlight people who work on “Software that makes the world a better place,” whatever that means to you. Several of the speakers came from some sort of civic tech organization, including From Coder to Bureaucrat: How We Implemented the First Open Data Law by Becky Sweger and Kaitlin Devine.

Sweger and Devine talked about the surprising opportunity available in publishing budget info: “My whole life, I assumed that the government is big and there are smart people working on it, so they must be keeping track of whether this data is right.” It turned out that this was not the case. At the Sunlight Foundation, they built a system that could track how each dollar was ultimately spent and created scorecards to rate the quality of data being published by each agency. Nobody wants to be known as the worst at something, and these scorecards were successful at pushing the agencies to improve their public data. In their talk, they also emphasized how accessible lobbying can actually be. When you’re an elected official with few staff and you have little expertise, and then people show up and tell you what you should do, you’re likely to try listening to them.

I can’t link to the SWAM talks because they weren’t recorded this year, but the event seemed well-attended, so hopefully it will return to Strange Loop in the future.

The main conference ran for the next two days, and I crammed in as many talks as I could watch in a row. Just about every talk was interdisciplinary in some way, and most of them were things I would only expect to encounter at Strange Loop. Here are just two of the many talks that stood out to me from this year’s batch:

Generating Music From Emotion (and other experiments) by Hannah Davis

Davis starts her talk with a series of little animations and accompanying melodies that show the stock prices of Lehman Brothers and Bank of America during the period leading up to the 2008 crash. Her first example of sonification (like visualization, but with sound instead of visuals) demonstrates that sound is good for streams of data, grabbing attention, humor, and conveying emotion. She walks the audience through includes lots of compelling examples, drawing on both literature (Heart of Darkness, Peter Pan, A Clockwork Orange) and politics (2016 debates).

“It’s Just Matrix Multiplication”: Notation for Weaving by Lea Albaugh

Albaugh does a remarkable job of entertaining while breaking down complex concepts that I would struggle to follow in a printed book. The foundational insight is to notice that warp vs weft notation (which is what I would’ve naively described as “horizontal threads” and “vertical threads”) is binary in nature. At every intersection, the warp yarn is either above the weft yarn or below it. which means that a weaving pattern can be represented as a rectangular grid of 0s and 1s. Albaugh builds on this, showing how a matrix (the grid of 0s and 1s) can be multiplied with another matrix in order to represent the pedals pushed on a loom, and compares every mathematical operation to its corresponding physical loom operation.

Strange Loop continues to be one of the best tech events I’ve attended. This year brought a truly overwhelming number of tracks—good luck with browsing the massive 2018 schedule to figure out which recordings you want to watch—but the conference still feels small enough that I can run into the same faces over and over and friendly enough that I look forward to each of those encounters. I’m grateful to all of the organizers, speakers, and attendees that make it such a rewarding place to visit.

Bridging the digital gap

A few months ago, I started volunteering at Digital Device Drop-In, one of the services provided at The Bridge at SFPL Main Branch. Digital Device Drop-In is a place where people can get friendly help from library staff and volunteers about how to use their laptops, phones, tablets, ereaders, and other devices. Contrary to stereotypes about who is comfortable with technology, I’ve found that the attendees from the Tenderloin community are a diverse set from different ages, genders, and races.

On a typical day, I’ll arrive right around 4 pm. The coordinator greets everyone in our 5th floor classroom, explains what they can expect from Drop-In, and then moves around the room, asking people individually what kind of help they’d like today. Based on the areas of concern (“I want to send text messages and check my missed calls”, “I want to share photos on Facebook and WhatsApp”, etc), he identifies someone in the room who’s knowledgeable and pairs us up. I try to focus on helping people use their Android and iOS phones because that’s what I’m best at. Some of the actual questions I’ve fielded include unfriending someone on Facebook, turning off notifications from the Apple News app, and posting photos to Instagram.

I was initially drawn to this volunteer opportunity because I work in a design-focused group whose goal is to make apps more usable for everyone. I figured that in addition to solving a few gadget problems and connecting with people, I’d also gain insight that I could apply to my professional interests. Here are some of the patterns I’ve seen so far:

There’s no such thing as an obvious icon. Contemporary app design (within my US-centric world) favors icons that don’t have text labels. Thanks to minimalism, icons look less like tangible objects and more like a bundle of lines. One Drop-In attendee asked me about the tennis racket icon, which is what passes for a search icon after years of eroding away the physical details of a magnifying glass. Icon confusion is common; I’ve had a number of people jot down notes while I explained things to them, and they would always draw the icon next to their notes. Since the icons weren’t meaningful illustrations, there was nothing that would jog their memory later, so they had to create their own links between symbols and names.

Information hierarchy is confusing without context. A big part of my role as a helper is identifying the problem, which often isn’t stated directly. The notifications I turned off from the Apple News app were initially described to me as “text messages from National Geographic that I didn’t sign up for.” I tried to figure out why I knew at a glance that News and Messages were separate apps, and I think it’s because a phone notification is shaped sort of like a desktop computer notification. For me, the app icon and app name in the upper left are meaningful identifiers. For someone unfamiliar with different content channels on a phone, it isn’t apparent that “News” is the name of an app.

Usability is a particularly hard problem right now because the mental models that we ask people to build have become so complicated. Every time our phones get more capable, we also leave more people behind. I don’t have many answers right now, but I know I’ll carry my Drop-In volunteer experiences with me when I talk about button styles and other standard UI components at work.

RWDevCon

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

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.

DevelopHer Hackday

This past weekend, I attended DevelopHer Hackday at LinkedIn. It was my first ever hackathon and one of my first truly technical industry events. I’ve been to a few meetups and a conference (specifically, she++ at Stanford) that were especially for women in technology, but a lot of those events are about talks and social time rather than coding. Armed with my computer, I felt a lot more at ease than I usually do in a room full of strangers.

I showed up without collaborators or a project idea, and I’m definitely glad that I did. After arriving at LinkedIn pretty early on Saturday morning, I happened to meet several young women from Hackbright Academy and then had the privilege of working with them for a full day. We decided right away to work in Python and then spent some time brainstorming projects that we would find relatable before another lone programmer like myself wandered over to join our table. Wendy brought strong skills, lots of enthusiasm, and a project idea that eventually evolved into DressUpBox.

I’m not going to give a play-by-play of the event, but I did tweet a lot of it. One unexpected perk was being close enough to Shoreline that we were treated to a fireworks show around 9:30 pm. There was an instructor who led yoga classes and breathing exercises. There were ridiculous oversized beanbags that are approximately the size of a full or queen mattress. And most importantly, there were lots of friendly, supportive LinkedIn employees who volunteered their weekends to make sure the event went smoothly.

Before this weekend, I wasn’t sure I’d enjoy a hackathon. It’s not that I’m never competitive; I played quiz bowl very enthusiastically for most of high school. (Ask me about it sometime, especially if you ever played at NAQT or ACF.) And yes, I had my share of late nights in front of a laptop as a Computer Science major. But for whatever reason, I had trouble seeing myself as someone who would enjoy such an event.

I’m happy to confirm that those doubts were completely wrong. Do you have trouble focusing on personal projects at home? Being surrounded by people helps a lot. Maybe you don’t feel very competitive? Hackathons can be an exhilarating way to help others learn a new language. It was exhausting, but it’s so worth it that I’m already looking forward to my next hacking event.