Enlightened Business, Tech

Bypassing (some) Cultural, Gender and Racial Barriers by Training Great Engineers

I’m starting up a new open source software project and thinking of structuring it like an ongoing free seminar on how to be a great software engineer. I’ve seen a similar structure work really well in the Hydra Project and now I want to do it again. I think it might be a potent way to help a broader range of people to become empowered, successful, satisfied software developers.

In Spring of 2014 I ran a RailsBridge workshop as part of the Libraries Technology and Gender Summit in Austin, Texas. Almost all of the participants were women who have jobs at libraries around the country. Many of them had technical roles at their libraries but did not work as software developers. Most of them were interested in transitioning into software development roles. At the end of the workshop we had a lengthy discussion about “what next”. If you want to be employed as a software developer the first step is to learn how to code but then you need to get real experience. This creates a Catch 22 – in order to get onto a software development team you need experience, but in order to get experience you need to get onto a team.

Training experiences like a RailsBridge workshop are great, but when you walk out of that workshop you face a different set of barriers.

One woman told us about the dilemma her boss faces – should he give assignments to the two experienced software developers (both men) or should he go out on a limb and give those assignments to a young librarian whose only coding experience was a weekend training and a couple of online tutorials. Her boss was always under pressure to turn around work really quickly so he kept giving the assignments to the experienced developers. She understood her boss’s decision, but she wanted to get “software development” into her job description so she could build those skills in earnest. What was she to do?

Heads nodded around the room in response to this woman’s account. Training experiences like a RailsBridge workshop are great, but when you walk out of that workshop you face a different set of barriers.

One common suggestion for getting experience and establishing a portfolio as a coder is to contribute to open source projects. In theory that’s a great idea — most open source projects are willing to accept pull requests from newcomers. In practice, contributing to an open source project can be an intimidating or outright hostile experience and it takes a lot of up-front communication to work on really juicy features that will look good on a resume.

In practice, self-taught engineers, myself included, and fresh CS graduates have often found their way onto the meritocracy ladder by practicing the age-old art of “fake it til you make it”. Whether it’s by bluffing their way through a job interview or submitting pull requests to a stranger’s github project, they get past their lack of experience by relying on pure chutzpah. This approach favors people who are bold and brash, who have less to lose, and who have been encouraged to take risks. It also falls back on the existing biases of the surrounding culture — I’m more likely to trust you if you look like me, talk like me, and write code like me. As a result, it’s biased against women, people of color, people who have families to support and people whose cultural background feels foreign to the average geek.

What’s the alternative? I propose that it’s not enough to teach people how to write code. We have to teach them how to be great coders. I think that will make a real difference, and I have an idea about how to do it.

In some contexts, meritocracy really does rule among software developers.

Employers don’t just want to hire developers, they want to hire good developers. Open source projects don’t want more Pull Requests, they want good contributors. In some contexts, meritocracy really does rule among software developers. In some places, working code wins and Pull Requests are welcome as long as your tests pass and your code is commented properly.

There are objective, teachable ways to become a great engineer, and the best way to learn those skills is to practice them in a community of peers.

Working in an environment of mutual assistance and mutual respect is incredibly empowering.

A prominent part of my role at MediaShelf was to run HydraCamp workshops. These events, which range from 4 hours to 4 days in length, are focused on teaching software developers how to contribute code to the many components and applications under the Hydra Project’s umbrella. The formal content of the workshops was focused on learning how to use specific technologies like Ruby on Rails, ActiveFedora and Blacklight but the built-in learning goals were focused on the important nitty gritty of contributing and collaborating. We practiced writing different kinds of tests for your code, we practiced submitting pull requests and commenting on them, we talked through the process of planning features and, most importantly, we practiced asking for help.

I think that teaching people how to participate in the collaborative process has made them better, more productive engineers. It has also helped to make Hydra a distinctively positive, supportive, robust and dynamic open source project.

Working in an environment of mutual assistance and mutual respect is incredibly empowering. I helped to create and sustain an environment like that in the Hydra Project and I learned countless things from my peers along the way. Now I want to do it again and this time I want to document the process so others can crib notes and try their own approaches.

I’m interested in gathering a team to contribute a new module to the Dat project. This new module will be immediately interesting to a global community of software engineers and data-wielding researchers. I could write the module myself, or I could hire experienced freelancers to write it, but I propose a different approach. I propose gathering a team of software developers who want to “up their game” and bolster their resumes by designing, building and maintaining this module together with me. Together, we’ll cover all of the stuff that makes great teams of engineers. We’ll work on designing features, managing work with agile process, writing unit tests and integration tests, using Continuous Integration, submitting pull requests, doing code reviews, and documenting code. Surrounding all of this, most importantly, we will practice creating and holding a culture of mutual assistance and mutual respect.

It might make sense to approach this as a long free seminar with weekly installments.

Along the way, in addition to learning the skills of collaborative software development, participants will also hone their skills with NodeJS and get exposure to the cutting edge of technologies that will define the next generation of the world wide web such as blockchains and the new breed of wire protocols inspired by bit torrent. They will also get exposure to topics related to data science, open data, and reproducibility of research. We will tackle those topics together, pulling them apart in a safe, unassuming, respectful environment. We’ll also be able to tap some of the brightest engineers in the industry for answers when we have questions.

In an ideal world, I would like to build this team locally in Philadelphia, my new home. If we’re all in the same city we can meet face to face, which makes a big difference. I would like to draw heavily from the communities of people who have received training from projects like Girl Develop It.  I hear there’s an active chapter in Philly. I don’t know if this is reasonable, or even possible, but it seems worth trying.

If you would like to follow along or join the project, there is a project page on the Code For Philly website. The current working name for the project is “Dat Tables”.

Musings & Adventures, Random

Seeking New Urbanism in Minneapolis

Note: I found this post on my laptop. It feels unfinished to me, but these ideas are constantly evolving in my life and I won’t be coming to any conclusions any time soon. It’s all an ongoing exploration. In the spirit of working & pondering openly, I’m putting it out there as-is.

17 March 2012

Last night I lay on my floor with a university math student from Beijing. We talked about the dissociative culture of a megalopolis – the crush of people, the aggressive push, and the concomitant loneliness. This isn’t our only option for densely populated human existence.

In the middle ages, urban populations tended to max out at a couple hundred thousand. They were dirty, smelly, dangerous places prone to rampant disease and violent political conflict. We had reached a hypothetical limit to the size of population that a city — a type of ecosystem — could sustain without suffering collapse. However, with time, we reimagined what a city could be and forged ahead with new developments in hygiene, communication, education and food transporation. This allowed for a new flourishing of urban landscapes, allowing cities to grow and host millions of residents. Along the way, extensive social change occurred to accommodate urban life. New forms of urban culture arose, often characterized by greater mobility and stronger emphasis on individualism.

We have reached another hypothetical limit, this time on a global scale, and we must innovate again. The challenge is surmountable, and the solution lies in reinforcing the positive things that we are already doing. As with any truly challenging situation, panic is not constructive, differing perspectives must be accommodated, and everyone must make the effort to look beyond their personal comforts to see both the greater threat and the broader possibilities.

It was over seventy degrees and humid in Minneapolis at 10am this morning, March 17. Historically, this would be a week where 30-degree temperatures (that’s zero celsius) would inspire comments of “ooh. Its a bit warm today… and humid. Enjoy it before the thermometer dips back below zero (fahrenheit).” I’m flying over North Dakota, near the badlands, it’s late winter and the land looks dead but you can see the touches of agriculture. Sparse settlements, a set of farm houses, irrigation and the telltale grid of crop rotations on parceled-out private land. I wonder what the weather will be like here in five years. Where will the water be? What will the temperatures be like? In many ways, this region and areas north of it might benefit from a warming climate — a longer growing season, milder winters, less competition from agricultural states further south whose crops will be failing due to drought, heat waves and severe weather. This region sits on top of the Odwalla Reservoir, which will serve to hydrate the land and moderate shifts in the climate. How can this knowledge guide our decisions? In particular, how should it inform the way we build the cities where most of our residents live?

When viewed from a map, the corridor between Minneapolis/St Paul and St Cloud already shows the markings of a megalopolis — an automobile-based concrete landscape that sprawls like Houston or Chicago, at night appearing as a glowing gash on the surface of the earth. When viewed on a national level, this development into a megalopolis seems inevitable and the patterns of that metropolis seems predictable. Someone who doesn’t understand this place would think of it as derivative — a starstruck little sibling enthusiastically immitating its elder sisters, doomed to repeat their mistakes and destined to show the same blemishes. That is one possible future, but it’s not inevitable.

Each year, Minneapolis becomes more cosmopolitan. In many ways the pattern of growth and gentrification here repeats many of the patterns you see in places like Brooklyn or Oakland, but at the same time there are fundamental differences. We’re a new Metropolis. We are surrounded by arable land on all sides for thousands of miles. We have no Manhattan island. We have a population laced with individuals who are only one or two generations removed from life on a farm. We also have the mistakes of past urban developments, and current successes as reference points. In short, we have leeway to choose how we do things, and we have room to grow in all directions.

It’s imperative that humans begin to create urban landscapes that foster local production of food, community cohesion, and rich, diverse, creative culture. This is the best way to brace ourselves against challenges that loom before us — the danger of potential economic instability, the unpredictability of changing climates, and the erosion of social/moral infrastructure.

The real problems of the modern world cannot be addressed through political means. They must be addressed by gradual, intentional, change to the fundamental structures of urban/suburban life.

It’s easy to think of localvorism as an elitist fad, or as merely a limp-wristed retaliation against the moral failings of industrial agriculture and the global supply chain that it’s part of. Likewise, urban farming may seem like a sweet indulgence by liberal dilettantes. Others see it as a valiant shift away from participating in a global economy — a maneuver which, when you run the numbers, simply couldn’t lead to positive economic results. I propose seeing it as something more gentle and potentially more meaningful. It’s a shift in relationship to our immediate environment. The innovations of the modern economy have made it possible to operate on a global scale. In fact, it has become nearly impossible not་ to operate on a global scale, and this has the unintended effect of destorying our sense of ordinary, day-to-day orientation with respect to our surroundings. Local food production is a beautiful and deeply effective means of addressing that disorientation. Producing some of your own food, or at least consuming a meaningful percentage of your food from within a couple hundred miles forces you to be attentive to things like seasons, geography, and supply & demand. The modern economy has been brilliantly effective at stabilizing prices and stabilizing the availability of commodities, but that also means that it has succeeded at hiding some of the human story behind every product that moves around the planet.

It’s valuable and healthy to be attentive to the interconnectedness of our lives. While we can’t have a personal relationship with every person who played a role in producing every object that passes through our hands, we can increase our appreciation for all those objects and the people who produced them by also maintaining and reinforcing economic relationships with geographically close, small scale vendors.

Likewise, modern communications technologies have made it possible to create and/or maintain relationships with people all over the world. For better and worse, in a context where mobile coomputing is ubiquitous, physical proximity plays a very different role in human relationships. This, together with myriad factors of post-industrial society, has led to a disjointedness that’s literally depressing. We have the freedom to choose, at all times, our own customized social and intellectual environment. As a whole, this is wonderful, but there’s immense social, psychological and economic value in being forced to deal with the people who might be physically near you while socially distant. In the past, this was something that circumstances forced upon us. Now we have the freedom, or obligation, to consciously design our urban landscapes and cultures to maintain the necessary goods of those person-to-person daily interactions.

Luckily, these aren’t new ideas. People have been exploring them for decades. Of late I’ve been enamored with New Urbanism, which is based on attempts to design new urban zoning codes in order to achive better human-scale urban spaces. Of course, there’s also Landscape Urbanism, which is also a great start. Where to from here?

Enlightened Business, Meditatation, Musings & Adventures

Materialism, Benefit, Disengagement and Stupas

Boudhanath stupa in Kathmandu

Boudhanath stupa in Kathmandu

The stupa in Boudha has a magical, peaceful quality. When you approach it on foot, you can actually feel it before you see it. The air changes, sounds become less sharp, and people move more slowly. Around the stupa is a wide, paved circular path where people do “khorra” (tib. འཁོར་ར་) – circumambulation – all day & night while saying prayers,

Circumambulating the stupa on the khorra path

Circumambulating the stupa on the khorra path

talking with friends, meditating or simply passing time. This circular plaza surrounding the stupa, sometimes called the “khorra path”, is lined with shops selling local wares like Buddhist statues, Tibetan thangkhas, incense, jewelry, and shawls. When you emerge from a side street onto the khorra path, one’s natural impulse is to to be swept up in the flow of happy, peaceful energy flowing clockwise around and around. What a wonderful thing to pour oneself into!

In 2011, I coordinated travel plans with my mother and her friends Anita & Larry so that we could meet in Kathmandu. I was coming from Bodhgaya & Varanasi while they had arrived days earlier from Delhi and the Golden Triangle. When I arrived from the airport, while walking along the khorra path in search of the hotel where they were staying, I saw my mother emerge from the cicumambulating crowd with a joyful ease that I’ve never seen her embody anywhere else. With a backdrop of the sun-dappled stupa and elderly Tibetan ladies counting prayers on rosaries, I saw a lighter, happier version of this person I’ve known my whole life.

The busy khorra path and shops

The busy khorra path and shops

According to legend, the Boudhanath stupa was built in the 5th or 6th century CE. It was begun by an old woman and later finished by her four sons. It’s commonly said that the four of them later reincarnated as the Tibetan King Trisong Detsen (tib. ཁྲི་སྲོང་ལྡེ་བཙན), his minister, the Indian pandita Shantarakshita and the great realized master Padmasambhava who together brought Buddhism to Tibet in the 8th century.

A lot can be said about Stupas and their purpose. In one sense, they’re said to act like anchors giving stability to Buddhist wisdom and its practice in a land. While that might be true, there’s an inner sense that particularly resonates with me. In Dzongsar Khyentse Rinpoche’s recent book Not for Happiness he talks about stupas as a bold challenge to the belief that spiritual pursuits have anything to do with material practicality. He quotes Patrul Rinpoche in pointing out that those who walk the authentic spiritual path must abandon the idea that you can fix the material world; to believe that the material world can be fixed, even for the benefit of others, is just another kind of material clinging. Building stupas speaks directly to that view, because Stupas have no practical function. They take a lot of time and resources to build and maintain, for what? Many of them don’t even have doors. They’re like a satire of all the foolish worldly projects we pour so much effort into.

3 workers whitewashing the stupa

Whitewashing the stupa – maintenance operations are ongoing year-round.

So why build them? Because authentic happiness doesn’t come from external things. Erecting and maintaining these odd structures is a substantial investment in the habits and patterns that go beyond hapless participation in the destructive cycles of confused life. It punches a hole in the ordinary rhythms of things so that people might see a glimmer of alternative.

Sitting by the Boudha stupa or walking around it today, it’s easy to reflect on the amazing beauty that can come from this kind of project. Nearly 1500 years ago a handful of people put their resources into something that made absolutely no sense from a practical perspective. According to tradition (and plausible given the philosophical & cultural context of the time), they did it because they truly wished to do something beneficial in the world and they believed that the only way to achieve real benefit for oneself and others is to completely abandon all attempts to seduce the world into giving us what we want, to instead scrutinize our own minds and to strip away even the most subtle forms of ignorance. It’s like that seemingly irrational selfless act put a kink in the armor of ignorant existence. Over time, thousands of beings have come across this anomaly in the flow of things and their minds have been changed by it. Each one has added a bit to the system, and taken away other bits. The cumulative effect is manifestly present. Anyone can go there and witness it.

In light of all these reflections, I find it interesting that, far from being anti-commerce or somehow divorced from daily activity here, the stupa seems naturally mixed with everyday operations. Rather than condemning the practicalities of life, there’s the air of engaging with and elevating them. Giving up material clinging, even going so far as to let go of the idea that we can fix the world for the benefit of others, does not mean doing nothing. Nor does it mean climbing high on a pedestal and looking down judgmentally at the rest of les miserables. This abandonment is something much more subtle and much more challenging because it must happen in our hearts and minds. Inwardly we have no choice but to abandon material views while outwardly we must constantly seek skillful ways to make the world better: to increate happiness, to decrease suffering, to rejoice in positive qualities and to wash away false differences for all beings.

Buddhist practitioners, surrounded by small stupas, doing prostrations on wooden boards on the first terrace of the Boudhanath stupa

Buddhist practitioners doing prostrations on the first terrace of the Boudhanath stupa

Creative Culture

Reimagining the dance club

Conventional Roles @ a dance club:

  • DJ 1-4
  • Bartender 1-20
  • Bouncer 0-20
  • Willing Dancer 0-3000
  • Wallflower 12-1000


Add more roles, with goals, constraints & rewards. Draw from mythological traditions, Yidams, Organizational theory/practice & Season-driven calendar of greater & lesser holidays.

Example themes/Assignments:

  • Tribalism
  • Gender
  • Politics
  • Industry
  • Materialism
  • Class (& Class Warfare)
  • Love
  • Heat
  • Darkness
  • Water, Air, Earth, Fire
  • Etc…
  • Compassion in Action

Misc Examples of Minor Details/Rules:

  • Have an “ideas box” that gets responses within the night. Any & all ideas entertained & responded to. Farm out tickets to appropriate responders.
  • all actors mandated to breakopen circles & engage the lonely but willing
  • all actors discouraged from closing off / pairing off (or pursuing it) during public events

Constraints on personal interaction: Bollywood Rules.