Literacy: The Shift From Reading to Writing


Next was Literacy: The Shift From Reading to Writing presented by Robert Lefkowitz. I missed the very beginning cause I ended up in a talk about JavaScript … not that it wouldn’t have been a good talk … just not for me ;)

So let’s start with what I heard on the way in … code is written to be read! So you need to make sure that your code is readable. Robert talked about ‘Literacy and Learning’ by Deborah Brandt in which the author talked about the origin of literacy and why literacy was important. Reading was important to be able to read the word of God and/or participate in government, but writing was scary. For example in 1853 it became illegal to teach slaves to write because this could be dangerous. At that time they were allowed to read because they needed to learn the word of God – of course that changed later on when it became illegal for them to read and/or write.

So the four ages of literacy are:

  • No readers, no writers (thru Socrates)
  • Few reader, few writers (Plato thru Gutenberg)
  • Many reader, few writers (Gutenberg thru Tomlinson/Ayyadurai/Winer/Hillebrand/Jobs/Zuckerberg/Dorsey)
  • Many reader, many writers (post-Jobs)

So now the way we’re reading has changed! But we’re writing more than we ever did in the past.

Shortly after the introduction of writing, craft literacy came on the scene – people writing about their craft. Today we have programmers writing and then the end user coming in and adding little mods/edits etc. “Recent studies reveal that an important aspect of end user computing is the emergence of programming communities of cooperating users that develop e when a program is used by a group of people.”

In programming we have a few number of writers (programmers) to readers (users) – but that’s changing. More and more people are copying from others and piecing things together – but what most people argue is that it’s better to write your own cause then you not only create but you learn. I’d argue that copying can also help you learn – as long as what you’re copying is written right and well.

I’m not sure that I caught everything that Robert talked about because I was tracking down the resources and big words he was using :) but hopefully this is a clear enough summary for you all.

“Good Enough” is Good Enough!


First session this morning was “Good Enough” is Good Enough! with Alex Martelli. I can’t possibly to Alex justice in my notes below because he was an awesome and charismatic speaker, but I’ll try!

Alex started by asking us if we should always strive for perfection and anything less is unacceptable. No one raised their hands. Instead we agreed that we should release early and release often and constantly fix and improve things.

There are 3 goals that are important to both approaches:

  • simplicity
  • correctness
  • consistency
  • completeness

However they take different priority in the two approaches (“worse is better” and “right thing” coined by Richard Gabriel in 1989).

In the “worse is better” approach takes advantage of incremental development versus the ‘right thing’ approach that lets the experts do their thing all the way to the end before the users get their hands on it.

These models kind of match up with Eric Raymond’s comparison of the ‘cathedral’ (“the right thing”) to the ‘bazaar’ (“worse is better”).

If you only want to release perfection then you have to have designed everything up font … and that’s just not feasible in the real world. It would take forever and ever to do this! And the stakeholders resent the “forever” part of this.

In the real world requirements change all the time and the design will vary based on the implementation and bugs are only found when the software is used. So the iterative approach is the only real world option. Good enough is only good enough if you can make it better later. This means that backward incompatibility is your friend. You don’t want to keep errors and that’s what happens with backwards compatibility.

When thinking of “perfect” think of the verb – you want to perfect your work. Perfection of the product is not an achievable state. To do this you want to use a light-weight and agile process. Revision control, code reviews and testing all need to be part of the process! Code reviews are the single best technique in perfecting your code. You also have to keep documentation up to date – if you don’t document what this code is supposed to do then how does it help the poor user – users are not mind-readers.

Given the above there is one thing you don’t want to skimp on … security! This is one thing you need in from the start – it’s nearly impossible to retrofit this in to the system.

When it comes to working on bugs you want to focus all of your energies on bugs that lead to irrecoverable losses. You want to make sure you release your code without these kinds of bugs though if you can. These kinds of bugs can lead to reputation losses that might not be recoverable. More often than not though these kinds of losses – as long as you fix them in a timely fashion and in a helpful way (good service is the be all and end all of a successful enterprise) – don’t usually ruin your reputation. “Customers with the highest levels of satisfaction are not those who have never had a problem, they are the ones who did have a problem and had it speedily and courteously fixed.” (the Service Recovery Paradox). We rarely think of service in an open source context – but we should!

This theory applies when talking about finding employees as well. You want the “perfect” employee – that takes forever. Pick someone who’s personality and culture matches – who’s keen to learn and knows some of what you need. This person will then improve over time with your company/code.

In conclusion we are not talking about lowering our exceptions – our dreams must be big!! The best way to change the world though is to release early, release often! We need to reach beyond ourselves and release incrementally. “Less is more!”

Check out the slides from more info!

Keynote: We The People: Open Source, Open Data


Up last this morning was Leigh Heyman (Executive Office of the President) in a talk titled We The People: Open Source, Open Data. We The People is the White House’s online petition platform. Online petitions are not particularly new, but there hasn’t been much change in the way they’re handled. The goal of We The People is to change that – President Obama said that he wanted to have the most transparent and open administration in history – and so We The People was born. Leigh pointed us to the White House Death Star petition and to show that the administration was going to stand by their promise they responded to this petition because it met the threshold.

When talking about open source specifically though you can go look at So what’s next?? APIs for and We The People. A hackathon was held at the White House to create more APIs.

What comes next is up to us here at OSCON. We need to go fork the White House code on GitHub and participate!

Keynote: Licensing Models and Building an Open Source Community


Next was Licensing Models and Building an Open Source Community presented by Eileen Evans at HP. Eileen made a broad generalization about open source licenses – there are two types of licenses: Permissive and copyleft. The question is can a permissive license be used to build an open source community. Originally Eileen felt that the answer was “no”. You needed a contractual reason to make people contribute back to open source. Today though more projects seem to be leaning toward permissive licenses. And so, based on the data, the answer is “yes” a permissive license can be used to create a vibrant open source community.

Keynote: Start With Freedom


The next talk by Tom Preston-Werner at GitHub was titled ‘Start With Freedom.’ Tom wanted to talk to us about decision making – a better way to make decisions by starting with your principles and then building off of them. Today we do things the way we think it should be done because others are doing it that way – instead we should start with ourselves and our principles. Next up we get an example from Game of Thrones (which I don’t follow cause I’m not a fan … go ahead start yelling at me).

open allocationFor Tom his first principle is ‘Freedom’. If we start with freedom what decisions can we make? One thing GitHub has done is add a license chooser to the site so that you can choose the right freedoms associated with your code. One option is to put your code in the public domain if you believe in freedom, but there are problems with this – including issues across other countries. Next, Tom introduced me to the WTFPL (how had I not heard of this?) – which actually turns out to be too broad and in the end limits freedoms. So the next option Tom gave us was the MIT License which is so short it fits on one slide and is readable (aka not tini tiny font). This license uses legal terminology to grant all of the freedoms you could want as long as you include the copyright notice. It also has a warranty on it that prevents you from falling to the “Stark Principle” (that Game of Thrones reference). Tom feels that this license is the best one if your fist principle is ‘Freedom’. Why not the GPL? Well it’s too complicated to be focused on freedom (according to Tom).

Happiness and FreedomAnother decision you have to make is starting a company. If you use Freedom as your first principle in starting a company you want to start with minimalism. First off GitHub has removed “traditional” management because that’s about subjugation and control … not freedom. Instead have a highly networked group of people. Teams with team leaders that make decisions – remove barriers to freedom. People end up aligning themselves with projects that are important to them. When things are done this way the projects compete for for developers because no one is telling you you have to work on something. So you can work on whatever is most interesting to you as long as it’s important to the company – in the end everyone is happy.

If you start with freedom then you can finish with happiness! Watch the full presentation on YouTube.

Keynote: Code Is Making Government More Effective


Next up was Tim O’Reilly with a panel entitled Code Is Making Government More Effective with Jared Smith (Bluehost) and Michal Migurski (Code For America). First up was Jared. Last year Jared talked about the case study: Economic impact of open source on small business, this year those they’re talking about using open source code to make government more efficient. First we saw a video of how Code for America has helped the city of Oakland. Oakland has a site called Oakland Answers that was one product of this partnership.

Next Michal came out to talk about Code for America. The Code for America Fellows is looking for new applicants. It’s a year long program with Code for America. The bulk of your time is spent in San Francisco at the offices there. Code for America helps you build your skills and make you better at what you’re doing. If you can’t do a fellowship you might want to look at the Code for America Brigade. Tim participated in the Brigade to help Oakland create Oakland Answers which offers answers to city related questions in plain English.

You don’t even have to be a coder to participate! You can become a fellow, join a brigade or start one or you can donate to just help support the organization.

Keynote: Diversity in the Innovation Economy


First up this morning was Laura Weidman Powers from Code2040 in a talk entitled Diversity in the Innovation Economy: Why It Matters And What You Can Do About It.

Laura started by talking about race (which is “super awkward” according to her). Even though is awkward for her she thinks it’s important for us to talk about. Two things are happening in America that make it important. First the software world is easting the world – it’s the key component in nearly every industry. The second is a massive demographic shift where by 2040 42% of the population will be Black or Latino.

Diversity in TechThis matters because if we look at the graph here we see that Blacks and Latinos are not filling rolls at the top of tech jobs. This matters to this audience because we’re a community and communities care about the people in them. In 2012 Laura’s team started 2040 because they cared about this issue. This organization brings high performing young Latino and Black software developers in to internships with top tech companies.

One of the 2040 students said: “Diversity isn’t the problem here, diversity is the opportunity.” So let’s see this as an opportunity to live up to our potential of universal access. We can draw more talent in to the tech sector by creating pathways for a more diverse audience to join and succeed in our industry.

Code2040 shows kids what they need to know about getting in to the tech industry – simple things like a GitHub account and an online portfolio. But what can we do? We can get involved in Code2040.

How To Get More Kids To Code


Next up was How To Get More Kids To Code with Regina ten Bruggencate and Kim Spiritus. I got in late (I was waiting in line to get a free signed copy of ‘The Art of Community‘ by Jono Bacon) so I missed the beginning of this session, but came in as they were demoing Scratch. This is a website where kids can play little games (available in 40 languages) and then click the ‘See inside’ button to see the code behind the game in a kid friendly way. It’s a great way to get kids to see code and learn not just programming, but the concepts of open source.

Next up was Alice meant for kids ages 8 and up. This site uses a story telling type of learning to program. For some reason boys don’t seem to like Alice very much (they’re not really sure why since the kids can use aliens and spaceships in their stories). Using Alice you can drag and drop objects in to your scene/story and when you do it pops up windows where you enter properties for the items. Once you have your scene set up you can edit the code by clicking on the object (your alien for example), but the edit screen is not your standard ‘code’ view, instead it’s friendly to kids by giving them pull down menus of actions.

Greenfoot is meant for slightly old kids (12+), but works similarly to Alice. The code editor in this shows you the Java with a bit of color coding (unlike the other tools that showed code in easy to use bubbles). Greenfoot is actually just a visual interface on top of BlueJ.

Another option is to use Mindstorms which walks kids through creating a robot and programming the “brain”. Mindstorms is great for kids age 8 and up.

Sagan is an open source project where you can simulate the Mars rover. It comes with 3 Mars landscapes and you program your rover to move around. It even has conversion tools so you can load it in to a Mindstorms robot (and others).

Arduino is a great way to teach kids about programming and electronics (it’s not only for kids!).

Raspberry Pi is a computer with a flash hard drive that will take any Linux distribution. I has 2 USB ports (keyboard and mouse), an ethernet port, and a port to connect to your TV. This is a great way to let the kids see the inside of the computer and work with it and programming on it. Quite a few people actually use this as a media center.

In addition to tools, there are events out there for kids. Devoxx 4 Kids is a one day convention with a keynote in the morning and parallel tracks during the day. In the sessions they learn about all of the tools listed above. The speakers are all computer professionals like us who want to get the kids involved. The first one in the Netherlands was sold out in 2 hours!!

Another initiative is the First Lego League which is a robotics project for kids. The kids have to create a Lego Mindstorms robot from scratch and then they have to share their solutions with the other teams (so a very open environment). There are competitions as well, but teams are not required to compete.

Maker Faire happens all around the world where kids can share what they have created – a place to share your love of science and building things.

VHTO is a program for girls in the Netherlands where kids can participate in different types of programs like Talent Watcher where they get to find where their talents lie. They also have a program called Mirror Image which shows them women in technical fields that they could participate in. Another program they offer is Speeddating where they get to decide if they want to go in to a more technical field than most girls might choose. They also have Girlsday where companies say that X number of girls can come visit us and see what it’s like to be in this field.

Non-Profit Organizations for FLOSS Projects


We had several speakers talking to us about Non-Profit Organizations for FLOSS Projects: There Is No Place Like Home.

First up was Software in the Public Interest (SPI). SPI was founded in 1997 as a “fork” of the Open Source Institute. SPI provides a bank account, the ability to receive charitable donations, ability to sign contracts, and some light legal assistance. They do not have any part in your project governance, so they are simply a fiscal sponsor/non profit organization.

You join SPI because you need a bank account or what to run a fundraising campaign you have an NGO in another country and you don’t want change your project to join a non profit.

Next up, Software Freedom Conservancy who’s key difference from SPI in that they are a ‘Direct Project” fiscal sponsor. This means that your project becomes part of the Conservancy. In a legal sense Conservancy can act officially in the name of the project as a corporate entity. This gives you liability protection. Like SPI they also offer directed donations. Unlike SPI they offer more legal assistance, conference organization assistance, fundraising services and asset management. A full list is here:

The Apache Software Foundation is more like a family than the above two (says the speaker). It was started to provide indemnity, infrastructure and independence to those who joined the family. All the projects do have to have the Apache license (whereas the other two want any OSI approved license), a collaborative consensus-driven development style and a diverse community (at least 3 independent contributors) to join.

Eclipse which is a 501(c)6 or Trade Association unlike the three above who were 501(c)3. Eclipse offers infrastructure, intellectual property (IP) management, development processes that the members are expected to follow and community development marketing people who help develop communities around projects. Eclipse is technology and forge agnostic and are flexible on the licensing of the software (it used to be just EPL).

Outercurve Foundation was up next. They too are a 501(c)6 like Eclipse. The goal of Outercurve is to help open source projects be successful by offering legal structure, business operations and technical services. One of the best ways they can help is to get contributions to their projects. Like many of the others listed here they are agnostic on license, development process and language the software is written in. That said they do require that their members have a development process in place and have a published governance.

Finally, The Linux Foundation is another 501(c)6. Jim Zemlin spoke more about the importance of these organizations than what the foundation offers. These organizations provide you with the structure you need to grow your projects – and that’s what really matters.

Collaborative Teaching for More Effective Learning


Brent Beer from GitHub talked to us after lunch about Collaborative Teaching for More Effective Learning. As we know budgets are shrinking – everywhere – but in particular in education. So what are we doing in schools to get more bang for our buck? One option is to start using open source software to lower overhead costs. There are also tools out there that are specific for schools with shrinking budgets. GitHub has accounts for schools for example.

More importantly, how do we collaborate and communicate effectively with students – specifically in our computer programming classes? There are tools like Moodle and Blackboard in schools, but they aren’t really terrible friendly to educators who might want to set them up. So you need to hire people or a company to help you set up and maintain the system. That requires money which you might not have. Also, even though those tools have communication areas they’re separate from the assignments. We need one place to go where all the assignments and the communication can happen.

Specifically for these computer programming classes, GitHub allows you to have your code in your repository and then allow communication right there through comments. It also facilitates collaboration and introduces students to open source development by having their repository open to their entire class.

GitHub would also be great for keeping your notes and programs for classes organized as a teacher. This way you can track changes to your own work, share work with other teachers, and get comments and collaboration from other instructors who might know how to solve the problem you’re sharing more efficiently or differently. You could also use GitHub as a social network to find other teachers who are out there teaching the same things.

One example of a school doing this Tufts.

To learn more about GitHub go to and for the slides visit