Code for Humanity

Thoughts on coding, data, startups, and life.

Code.org: What Most Schools Don’t Teach

The programmers of tomorrow are the wizards of the future. You’re going to look like you have magic powers…

- Gabe Newell, Founder of Valve

Code.org just launched with the vision that every student in every school should have the opportunity to learn how to code as well as a film encouraging every student to do so.

I’m grateful to have contributed to this inspiring short film by Lesley Chilcott, producer of Waiting for Superman, alongside Mark Zuckerberg, Bill Gates, Bronwen Grimes, Chris Bosh, Will.I.Am, Elena Silenok, Jack Dorsey, Drew Houston, Ruchi Sanghvi, and other oustanding people.

If you’re a teacher, know a teacher, sit next to a teacher on the subway, or otherwise have means to spread the word, please do so! No one is too old or too… anything, really, to learn how to code. There are several lengths and versions of the film available, and you can start learning to code right away.

Once you’re ready, we’ll be thrilled to have you improve the world by contributing to social good coding projects at CodeMontage.

ThinkUp Setup: Get Better at Coding and Social Networking

In typical developer style, I just spent several hours hacking on something only to find a totally different way to accomplish the same thing in about ten minutes.

The short version of setting up ThinkUp app was pretty phenomenally easy:

  1. Create a free account with a free plan on AppFog
  2. Use Launcher.io’s ThinkUp Jumpstart one-click install (golden!) to deploy to AppFog
  3. Upgrade ThinkUp as prompted in your navigation bar
  4. Update Settings > Account > Enable beta upgrades so you can get the snazzy 2.0 beta
  5. Upgrade ThinkUp as prompted in your navigation bar (again)
  6. Add social media accounts in the plugins section
  7. Clear your browser’s cache
  8. Rock and roll

I’m intrigued by ThinkUp for a few reasons:

  1. It’s open source!
  2. It has a community that first identifies itself as friendly
  3. It has analytics! based on data!
  4. Its core codebase was written by one of my favorite developer-founders, Gina Trapani
  5. Anil Dash, Gina’s co-founder, is one of the best twitter users I know (seriously, did you see this tweet?)

Looking forward to seeing how this goes :)

Scouting for Open Source Software With WebFWD

Dearest Open Source Software,

I know you’ve always been a bit worried about the future - no need to worry, you’ve got friends. Friends who love you and want you to be successful and sustainable. Among those friends are the crew at Mozilla’s Open Innovation Group - and this time they’ve put together something really exciting: the WebFWD accelerator.

WebFWD is an accelerator for businesses based on open innovation. The program is entirely remote and lasts 12 weeks with eight of intense education and four of focused product development. At the end of the program, companies may be eligible for funding from Mozilla.

Curious what kinds of products and companies WebFWD crew has been working on so far? Here are the current WebFWD Teams:

Codebender, aka hardware hacking made easy, @codebender_cc
Harp, easy website deployment using Dropbox, @HarpPlatform
Linklib, open source video commentary library
Open Jumpstarts, try a full web app with just one click, @OpenJumpstarts
Sketchfab, interactive 3D content publishing, @Sketchfab
Trivio, streamlined data wrangling
Wercker, simplified continuous deployment, @wercker

And a few of my favorites from the many awesome WebFWD Alumni:

CASHmusic, Wordpress::Bloggers::CASHMusic::Musicians, @cashmusic
Tomahawk, a delightful open source iTunes replacement, @tomahawk
Propelly, super simple sales of digital files, @propelly

Ready to turn your open source labor love into your main gig? Apply to WebFWD!

If you have any questions about WebFWD (@MozWebFWD), please feel free to email me or sign up for a conversation via Ohours.

That Special Someone (a Mentor / Mentee)

They say when you find the right person you just know.

Why do we embrace this notion for love and friend relationships, but create our most pivotal career relationships from job titles or at best, text-based inventories of skills? Mentoring is about so much more than a discrete transfer of skills - it’s about sharing the real failures and successes we inevitably encounter in our professional lives.

I’m grateful to have mentored as a technical lead, founder, and girl scout. I’ve had excellent short and long-term mentors and I’ve also connected with “mentors” who I wasn’t sure what to talk about with next. I’ve seen mentoring relationships between people of all ages and from casual to corporate environments and noticed a few common factors of success.

All relationships need a strong foundation, and mentoring is no different. The key components of a strong mentoring pair are: 

Chemistry

  • You have to straight up like each other. Mentors must genuinely care about their mentees as individuals so they will share time and experiences openly, without resentment. Mentees must feel a strong enough connection to overcome the discomfort of asking tough questions and to internalize the mentor’s advice.
  • Corporate mentoring programs tend to match purely based on divisions or job ranks, and their programs are valuable for networking, but rarely as effective as matches with an emotional bond.

Shared Values

  • Sharing similar life values makes it more likely you’ll be comfortable with similar tactics for dealing with problems, and that you’ll both listen to each other.
    For example - I believe strongly in the free culture movement. It would be hard for me to take the advice of a technical mentor who believed in technology that strongly limits use in order to protect copyright holders, such as DRM. Without a strong basis of shared values, the depth of our relationship and ability to explore solutions together would be limited. I also might snarl at them, which could compromise our chemistry.
  • Communities (vs. corporations) often spawn excellent mentoring relationships, even if they don’t deliberately facilitate, because of the strength of shared values among members.

Transparent Goals

  • Both mentors and mentees must articulate and share their goals. Otherwise, you’re just hanging out.
  • At the end of a session, and routinely during the active mentoring relationship, both sides should be able to ask “did you get what you hoped for out of this?”.

Once you’ve developed a relationship with someone you can learn from or share your knowledge with, the details of when, how, and how often suddenly don’t seem like such a chore. You’ll be free to focus on sharing and improving through mentorship.

Ready to mentor? Reach out to your communities and join the mentoring topic on Ohours*, which has additional tips for mentoring.

*Note: I’m an advisor and obsessive avid user of Ohours.

My Mentor Got in a Fist Fight

I push an omelet around on my plate as I try to explain to my mentor what’s holding me back on a project. It comes down to embarrassment - sometimes I’m so deeply afraid of being embarrassed, I don’t even try. My mentor has the perfect cure: she tells me the most embarrassing situation she can remember. Think Lost meets Jerry Springer, startup-style. Her story is messy. And exactly what I need to hear. My thoughts shift - This amazing person is human! If she can make real mistakes and still be so wonderful, maybe there’s a chance for me after all!

I’ve been lucky to mentor, be mentored, co-mentor, and generally just talk about work with a lot of great people in various settings. Here are a few keys to success I’ve noticed for both mentors and mentees.

What Awesome Mentors Do 

Tell it like it is

  • Give real, personal, unfiltered insight on what a job, company, or project was really like. Not the “we used analytics and made improvements” excerpts from the company press release, but the “I almost punched him in the face and stormed out” moments your mentee can only learn about from a real person - you.

Add perspective

  • Think outside the box to help your mentee achieve goals or gain insight on a problem. Mentors usually have technical knowledge or experience that puts them in a position to help, even if just by planting the seed of an idea.

Advocate

  • Advocate for your mentee, both directly (if they suffer from impostor syndrome) and to others within the organization, company, or community. Remember, your mentee doesn’t know your entire network, so you’ll need to think of who can help your mentee rather than waiting for an introduction request.

Set Expectations

  • Let your mentee know what you do and don’t want to talk about, how often you’d like to be contacted, and through which channels. There’s no wrong answer to this, and it helps them get comfortable within your parameters so you both can get the most out of the relationship.

Listen

  • Articulating how things are going to someone they respect who’s not their boss can be really meaningful for a mentee. Don’t think you need to talk the whole time to provide value.


What Awesome Mentees Do

Make meeting easy

  • Use Ohours* or another tool to limit time spent on back-and-forth scheduling.
  • Send calendar invitations and polite reminders before meetings.

Articulate goals

  • Write down what you hope to accomplish - what’s going on that you want to bring up?
  • What interesting experience have you been hoping to hear more about from your mentor?
  • Email with your mentor in advance of your session to share specifics if you can (though it’s always okay to bring something else up).

Make follow-up easy

  • Take notes and remind mentors of connections they’d like to make, that book they forgot the name of but think you’d love, etc.

The keys to mentoring are ultimately simple- be genuine, and share your experiences and your goals. Mentoring relationships come in all frequencies (weekly or a few times a year), mediums (video chat or brunch), and arenas (developing specific skills or seeking a promotion). It’s up to you to find a great match and get the most out of the relationship.

Ready to mentor? Reach out to your communities and join the mentoring topic on Ohours*, which has additional tips for mentoring.

*Note: I’m an advisor and obsessive avid user of Ohours.

Ruby Heroes, Open Source, and Hacking to Prevent Human Trafficking

First and foremost, Congratulations to Yoko Harada, one of this year’s Ruby Heroes! She’s made substantial contributions to the Ruby community, specifically for her work on open source projects JRuby and Nokogiri. Yoko inspired me to share an example of one of many projects that were possible thanks to free and open source software, and specifically Nokogiri.

In July 2011, Girl Develop It hosted a Hackathon for Humanity (in the Hamptons thanks to Deborah Jackson & JumpThru!), Nathan Hurst and I used Nokogiri to parse data from Backpage.com and flag potential evidence of human trafficking. We used wget to pull the posts and Nokogiri to parse the data into a Rails application and Postgres database, which I then queried to identify potential child prostitution advertisements. We were able to flag hundreds to be investigated and removed by Backpage.com.

The project readme file expands a bit on our methodology- basically, we’d read that many human trafficking rings tend to diversify their crime businesses by engaging in many types of trafficking and other illegal activity, so we cross-referenced some of the phone numbers across different subject areas on the site. We found dozens of posts that once examined by the human eye were clearly not legal, and hardly any false positives. This method proved quite accurate and a lot more manageable than manually sorting through all of the posts.

We definitely wouldn’t have pulled that off, especially not in a weekend hackathon, without Nokogiri being free, open source, and delightfully easy to use.

The project is on Github at https://github.com/girldevelopit/traffic-report. Note that this is the code from a one-time weekend project, but if you’re interested in forking or just learning from it and building a service to continue this work, please do! We’re happy to share any undocumented lessons or answer questions, just reach out by email (nathan@ohours.org or vanessa@developersforgood.org).

Piercing the Tech Networking Bubble With Open Mentoring

Last night I watched Soledad O’Brien’s CNN Black in America: The New Promised Land - Silicon Valley special that offered a lesser known perspective on an industry I know well. The special followed black entrepreneurs who participated in the first annual NewMe startup accelerator. After the special aired, I watched Mario Armstrong’s Town Hall and heard plenty of great advice from accomplished panelists of different races and backgrounds. In just an hour and a half they covered a range of cultural problems and shared opinions on solutions.

The best thing about pieces like this is that they focus on a problem and hopefully, get us all riled up to fix it - but do we? One of the audience members stood up and reminded the room that the change wasn’t going to come down from the panelists, but come up from them - that they had to make the change for themselves.

Right here and right now, I’d like to do something to address this problem. We heard over and over again the importance of networks and of having the right conversation with the right people. Entrepreneurs were advised to “insert” themselves into social circles of Silicon Valley. I agree with panelist/engineer/founder Hank Williams that taking baby steps is the key to both programming and life, so here’s my step for today:

I’ll be hosting open video chats specifically to mentor people who aren’t already in my established social circles.

Here’s My Open Mentoring Availability, starting with

My goal is to make it less uncomfortable for new people to get involved in tech and startup communities.

I hope to see other leaders of these communities offer their time and guidance as well. I’ve written some and talked a whole lot about personal scheduling and efficiency, so I want to be clear that this is a relatively small, effective commitment - I plan to give 45 minutes to conversations with up to three new people and to spend the remaining 15 minutes of my alotted hour following up or laying the groundwork to help those people. This will amount to roughly one hour a week. If you’d like to help, too, consider joining the Ohours mentoring topic.

If you or anyone you know aspires to be an entrepreneur, engineer, teacher, computer scientist, wielder of data, or perhaps is now a girl scout, military brat, data lover, amateur organizational psychologist, blonde - or maybe none of the above, but would like to talk with someone who is - please send them my way. My door is wide open.

 

Data-driven Time Management

Laziness: The quality that makes you go to great effort to reduce overall energy expenditure.

In keeping with Larry Wall’s virtues of a programmer, I seek to be as lazy as possible while still achieving my goals. Working smarter, not harder, is fundamental in every program I write - shouldn’t it be fundamental in how I behave? My deepest fear is working incredibly hard on something that creates no value or helps no one at all. At the end of the day, am I tired because I changed the world, or because I developed carpal tunnel syndrome refreshing my Facebook feed?

I’m employed full-time at Paperless Post, where I work across teams on a wide variety of projects. I spend evenings and weekends running Girl Develop It, organizing Developers for Good, and advising Hirelite. I also exercise and watch teen dance movies of low artistic caliber regularly and eat dessert every day.

Simply put, I work a lot and I get a lot done. Despite that productivity, I recently found myself unable to keep up with even important emails, and on edge about relationships that might not use my time effectively. I’m familiar with techniques like Getting Things Done and Pomodoro, but I hesitate to adopt any entirely new method without fully understanding what could be improved about my own.

So, in an effort to understand my time’s ROI, I turned to data. I tried several time-tracking tools for a couple of hours each on a Sunday while I did remote volunteer work. The free tool that was easiest to use and gave me the most freedom in analyzing my information was Toggl. Thanks to web, desktop, and mobile apps, I was able to bring time tracking into all aspects of my life.

I have a workspace for each significant obligation in my life - e.g. Paperless Post, Girl Develop It, Developers for Good & Volunteering, Personal. I use Projects to track the type of work I’m doing - e.g. Analytics, DBA, Product, Finance, Admin, Relaxation. I track significant emails or questions I answer, what I’m debugging, coding, or fixing, how long my meetings, calls, and Ohours take, and just about everything else. When I change windows on my desktop and may be off-task, the Auto-pilot Toggl app sweetly asks “WTF are you doing?” … “Click to change project”, making it easy to stay honest.

From this meticulous data collection, I’ve learned a few things about productivity:

You can’t manage what you don’t measure.

I recently had the feeling that I was doing way too much X and not enough Y, and I was not amused. Every time an X task came up, I developed a wrinkle. After one week of time tracking, I saw I really was doing a ton of X. I felt validated. I was less emotional about the problem, and in the next week, I also gave myself freedom to delay or delegate many X tasks in pursuit of Y tasks. I’m working with my team to better manage X tasks and in the meantime, I’m more efficient and feel in control of them. I have irrefutable evidence about just how demanding X work is. As we try different solutions, we’ll also know exactly how much they help.

Good data (tracking time as you go) is extremely important.
Your planning estimates and guesses afterward will always be wrong, and good data is fundamental to any data-driven decision making. If you think you’re good at these estimates, test yourself. Then email me how hilariously wrong you were, and we’ll chuckle.

Tracking time increases focus and limits context switching.
Tracking your time makes you more aware of what you’re specifically trying to accomplish, so you’re less likely to abandon one task for another. Maybe you only actually get to work 25 hours out of the 40 hours you’re at a work. If you need to track what you’re doing, you’ll feel compelled to make use of dead time you might have spent doing the worst kind of context switching - pretending to multitask.

Time is your biggest asset. Knowing where it goes benefits you more than anyone else.
I think a strong component of this experiment’s success has been that I’m doing it for myself. I have the freedom to show others the summary or the breakdown of my time if I’d like, but this isn’t a report that goes directly to my boss or determines my paycheck. I have the freedom to be completely honest. My priority is clean, accurate data and a true reflection of how I spend time, not convincing some other person that I’m working a lot.

Overall, I’ve found time tracking incredibly helpful for my focus and in helping me determine which time investments are worthwhile. I’ve also noticed trends in behavior that I’ve discussed with coworkers so we can work together to boost productivity.

What methods do you use to get things done? How do gauge your own effectiveness? Do your methods work for both short and long-term improvement?

Notes:
One of the reasons I chose Toggl was for their completely free basic features plan. Most other services were unpleasant to use, less functional, or only offered a 30-day free trial, which I knew from experience might not be enough time. Call me old-fashioned, but I just can’t commit to something in every aspect of my life when it’s guaranteed to dump me in a month.

The Zone

Last Friday morning I woke up completely exhausted. Each previous day that week felt as if it shoud have been Friday, but disappointingly turned out to be just some anonymous middle-of-the-week day. I’m sure I don’t need to explain the intense psychological role the day Friday plays in our lives - we have internet sensations for that. But this Friday, instead of strolling into work late, taking extra long coffee breaks, catching up on blogs for hours, and mentally checking out right about lunchtime per the usual Friday routine in Corporate America - I did something different.

I got in the zone. I layed out the design for a project I’d been interested in but slightly intimidated by. Though aware I probably didn’t have enough time to get through it, I dove in. I had one meeting and two phone conferences scheduled that encroached on my maker’s schedule potential for the day, but I let my brain roam into the project anyway. I started with a brief work breakdown structure, gradually adding more detail as I reviewed the intermediate pieces all the way until I wrote the code as easily as I’d written the notes. Two meetings were postponed. By the time the third came around, I was in too deep.

I didn’t eat lunch, I barely noticed the office puppy, and I didn’t even refill my water glass for several hours. I just created. I wrote code, I tested, I rewrote, I tested, I simplified. I kept the entire project - a horizontal data slice of our entire application - in my head and just executed, piece by piece, until I had something I could push together and deploy so that anyone could perform this magic with just one command. Every step of the way presented new obstacles - merge conflicts, unfamiliar deploy tools, arbitrary configs to update - but they didn’t phase me. I was in the zone. I eventually grabbed a few goldfish and a new water glass while waiting on a test data import, but the buzz from powering through this intimidating project stayed with me.

I spend a lot of time dicussing the future of technology and especially diversity in technology for a variety of reasons - innovation, equality, national security, product quality to name a few. But it’s days like Friday, especially because it was Friday, that represent a more indulgent but also meaningful reason I hope people give technical careers a shot: passion.

I have extreme passion for what I do. I can work as if my sore eyes and empty stomach and dry throat don’t even exist because I absolutely love what I’m doing. I can get wholly absorbed in something that helps other people (my team, our customers), that I get paid for, and that makes me a better and more capable problem solver. I have complete intellectual freedom, and I’ve been able to experiment enough to find challenges that both frustrate and satisfy me. Beyond the essentials of food and shelter, I wish nothing more for other humans than that they might find their own zone. That they might know what it feels like to immerse themselves in something so deeply and so fully that time flies. Perhaps coding isn’t that for many people. I certainly never would have guessed it would be for me. And yet, programming took me from a potentially miserable, rainy day to an enthusiastic, high-on-life adrenaline-infused night.