still flowing

energy, thoughts, flow

An Experience in Contributing to Open Source

21 december 2014
open source, programming

I joined github back in 2012, and starting working with software from the Ruby/Rails community in 2013. After a few months of working in the Rails ecosystem, the greatness of open source software (OSS) began to dawn on me- As OSS-founder (he wouldn’t like me calling him that), free software advocate, and sorta hippy-computer-guy Richard Stallman said,

‘Free software’ is a matter of liberty, not price. To understand the concept, you should think of ‘free’ as in ‘free speech,’ not as in ‘free beer’.

Who wouldn’t want to write free software for the betterment of mankind with this dudebro? (Photo courtesy of Wikipedia)

Although Stallman’s perspective is essentially a humanist one, there are also arguments to be made for OSS in capitalism. It fosters competition and innovation, and encourages the movement towards aaS, which I believe to be a business model better suited for the digital world: shit is way too easy to steal.

Tangents… So, let’s say I had the desire to contribute back. For a long time I sort of floundered as to exactly what I would contribute - it just seemed that a majority of functionality had already been created. I spent some time digging around existing projects looking for things to do, but that didn’t seem like a good use of my time, and it was kind of boring too! (It was like an endless cycle of code reviews for code I didn’t particularly have an interest in, for people I didn’t know… and the flaws I did find were usually things like: [‘prefer single over double quotes for non-interpolated strings’, ‘slightly refactored method with default parameter’, ‘removed whitespace’]… I was rubocop incarnate). I didn’t feel great about the scope of these ‘improvements’ or particularly enthusiastic about contributing them. I stopped looking to contribute, and became a ‘user’ for the next year or two.

Then, just last week, I started working on a personal project, intending to connect a few music APIs (, spotify, echonest, bandsintown) in one interface, providing links to relevant events and cool data visualizations and other fun stuff. That’s a work in progress™, and maybe another blog post… Anyways, I looked for gems. Working with the most-starred ones on github, I had a lot of success, but I discovered some issues- Specifically, the echonest libraries didn’t have access to the genre API endpoint, and the latest version of the bandsintown gem released on had a bug in it that was preventing me from pulling events. I wanted to use these gems, so I forked them, debugged the one (really just a gemspec and version bump), and added a class for Echonest::Genre to the other. That first day, I really don’t believe I was thinking about contributing to these gems; my idea for my music site was so exciting, I had no choice but to improve the available tools to meet my goal! After I got the gems integrated in my project, my thought then turned to open source. I realized I had improved two gems with at least reasonably well-written code, the worst I could do is submit a PR and get rejected, right? I cleaned up my code, added some tests, and opened the PR… Silence at first, but a day or so later the echonest gem maintainer responded with more-or-less thumbsups!

This is pretty cool. feelsgoodman.

My code has yet to be actually merged, but merge or no, I’m excited for more opportunities to write open source software. There’s a nice little positive feedback loop between personal projects and contributing: Work on a project to build something cool or useful, you’ll eventually write code that nobody has written yet. Contribute to OSS and you get that sense of pride and satisfaction in your work, which in turn gives you motivation to keep working.

In comparison to actively seeking out projects to work on, another benefit of this more organic approach is a deeper understanding of the source you’re working with. If you’re approaching a project as a tool to solve your problem, and need to make changes, the code you write will hopefully be well-thought out and cleanly written, – you want to accomplish your goal in an efficient way, after all – and thus, without really having expended any extra effort, you’ll have some nice bits of code, prime candidates for giving back.

TLDR; don’t to try to force your contributions to OSS. Keep programming, building things you’re passionate about, and solving real problems, and eventually you’ll discover a space where code has not been written to accomplish your task, and you’ll find yourself naturally improving an existing project or creating one.



05 march 2014
personal, programming

I definitely have not kept up with blogging as much as I would like. There’s simply so much other stuff to do, it’s hard to find the time to collect my thoughts into a coherent post. Despite the relative anonymity of this website, (i.e. I don’t get much traffic =D) I still find myself plagued by the desire to put out only quality content. Whatever. This is more a journal than a blog anyways.

I’ve been spending the beginning of 2014 working on a start-up (I guess right now it’s more of a project, but the goal/dream is to acquire funding and be able to work on this as a paying job!) The project is called MyGnar. It’s action sports website dedicated to mapping and sharing one’s photos/videos. We’re hoping to ride the success of the GoPro line of cameras as well as the macro trend of niche-specific social websites. I’ve been developing for about 6 weeks now. I’m working with a good groups of guys, one of whom is a friend from high school. They’re super stoked on the website and are actually really sick skiers themselves. Check out some of their media on instagram!

Things in the world continue to be insane, with the situation in Ukraine, and with Syria and Venezeula not appearing to be slowing down at all. Meanwhile, I’m sitting here considered with what programming job to take next, with how to best proceed with this action sports website. When I sit back and contemplate for a bit, life strikes me as equal parts strange and unfair. Here’s to hoping, eventually, I’ll be able to use CS to really contribute something back to the rest of the world. For now, I’m content with creating applications that enrich people’s lives, even though the scope of those people is fairly limited.



02 january 2014

This post is probably one of the most self-reflective I will ever write so I’m sorry if it’s boring or vague to the point of being meaningless to the reader. Everything we do’s ultimately an exercise of the ego, right? Blogging being an activity more self-indulgement than most, I’d imagine- Anyways. I’ll throw some nice pics in to spice things up for you.

2013 was an interesting year for me. There were a number of exciting firsts: first job search, first job rejection, first job acquired, first job lost (quit, really, but it feels like lost), first time living with an SO, first time having my own pets, first time seeing a therapist truly of my own accord…

There’s both good and bad in there. Unfortunately I had to leave my job towards the end of the year due to overwhelming mental stress. That’s been bumming me out for the last couple months, but it’s OK. It’s what I needed to do. After years of projection and denial, I’m finally admitting to myself that my life isn’t as rosy as I pretended. My family’s got some issues. My relationship has some issues. I definitely have issues. Stanford was such a challenge for me socially that I think I just had my head down, blinders on, trying to survive any way I knew how. Now that I’ve got some distance and am able to do some self-reflection, I can make sense of all the negative emotion I had while I was up there. I can start to parse the terrible things that happened between myself and people I cared about and hopefully begin to repair those wounds. I can admit to myself that it wasn’t all my fault, but some of it was. I can start to turn my mind towards solving real problems, pursuing passions, and improving the lives of those I care about.

I remember having a conversation with a friend about Albert Einstein. He had read a biography on Einstein and the tidbit of wisdom my friend dispensed to me went something like this: “Einstein was big on separating Einstein the person from Einstein the scientist. Separating his self from his accomplishments.” I took this as a method to protect my ego while continuing to put myself out there in the world. Being driven to accomplish things, but being able to laugh when you fall a bit short. Being able to receive criticism and praise and realize that it’s okay either way. Being able to recognize that everyone has their own unique circumstances that have a definitively not minor role in shaping what they do and say. That was about 6 years, when I had this conversation with my friend. I think I’m finally at a point where I can begin to try and live that wisdom. Here’s to not taking yourself too seriously, but also, here’s to using that enlightenment to accomplish meaningful goals.

I have been truly blessed on this planet to be born into the circumstances I was born into. For too long I’ve been squandering that blessing by being fearful and lazy. 2014 will hopefully be about improving myself but also about truly turning myself towards helping those around me and improving the world. As I’m reading these last sentences back to myself they sounds a little lofty, a lil’ highfalutin, a lil’ self-important, but that’s ok. The most important determinant of personal happiness is perception, and if I can stay this positive through the next year I won’t have the choice but to accomplishment stuff. Fuck yeah!