Upsource: New Code Review Tool

I have a special place in my heart for web apps that make coding management easier.  This week, my crush is Upsource, a new code review tool (and source code repository browser) that’s in a semi-public alpha period.

It looks to have a great interface for:

  • starting ad hoc reviews or requesting reviews
  • looping in other people to discuss or watch the review
  • linking to reviews or multi-line selections
  • adding new code revisions to an ongoing review (more…)

Find programming resources through Pineapple

Pineapple.io is a brand-new programmer-focused site that is a mash-up of existing concepts:

  1. An alternative to “google tutorial {programming problem}
  2. A replacement for crusty web browser bookmarks
  3. A new reddit-style source for procrastination and community link-sharing, but one more edifying than r/bronies

And though its individual parts are little more than attractively-executed clones of existing systems, the whole has potential.  I see myself using it both to discover new ideas I hadn’t thought to search for previously, and to find resources for my immediate coding problems.

The site divides content by tags as well as by three color-coded categories: tutorials, tools, and assets.  See its about page and its FAQ for more.

How is this site different than Reddit or Digg?

Pineapple is a place to submit things you LEARN from, usually in the form of tutorials. In addition, we allow you to submit things that make your workflow easier, whether thats a tool, asset, or some other resource. Here are a few examples of what you might find here:

  • A beginner’s guide to using Emacs
  • A sprite generator, downloadable app for CSS images
  • How to set up ruby on rails with nginx and unicorn
  • How to use layer comps in Photoshop CS6

Khan Academy Tackles CS Education

I’m very excited to learn that Khan Academy has been working with John Resig (creator of jQuery) to develop a new computer science curriculum heavily influenced by Bret Victor’s talk on responsive programming environments.

Check out the video they made discussing their plans:

It’s very interesting to me to see the ways that academically trained developers differ (in ways both positive and negative) from self-taught developers. As I’ve said here before, I believe that having at least some minimal proficiency programming computers is an important part of basic literacy in the 21st century, and it’s not at all clear to me how to implement that on a wide basis. The work that people like Khan and the folks at Udacity are doing with flipped classrooms and the like are something that I’m watching very closely.

Update 27 Sep 2012:

Bret Victor responds (to the Khan Academy, not to me):

Here’s a trick question: How do we get people to understand programming?

Khan Academy recently launched an online environment for

learning to program. It offers a set of tutorials based on the JavaScript and Processing languages, and features a “live coding” environment, where the program’s output updates as the programmer types.

Because my work was cited as an inspiration for the Khan system, I felt I should respond with two thoughts about learning:

  • Programming is a way of thinking, not a rote skill. Learning about “for” loops is not learning to program, any more than learning about pencils is learning to draw.
  • People understand what they can see. If a programmer cannot see what a program is doing, she can’t understand it.

Go read the whole thing.

To Degree or not to Degree

I often wonder if I were a young lad of college age today, whether I would have the gumption to forego college and pursue a programming career right out of high school. Ignoring the fact that my parents would have balked at such a plan, I think a bright kid, a promising idea and a 1-3 year window would be sufficient conditions for an experience as rewarding as pursuing a CS degree.

Such a path does not prevent a person from learning the information they would obtain from a CS program. A quick look around the internet and I’m quite certain I could cover most of my CS curriculum through Khan Academy, MIT OpenCourseWare and Stanford Engineering Everywhere, not to mention other learning resources such as GitHub or Wikipedia. I wasn’t able to find an equivalent resource for the Arthurian Legend course I took one summer, but my knowledge of Sir Lancelot’s and Guinevere’s love trysts never really helped me sling code.

It wasn’t until my first internship that I learned how to develop software in a real-world context. I didn’t even know source control or bug tracking software existed until that point. Opportunities to work in a team at school were contrived and did little to prepare me for real-world collaboration.

I have yet to experience a situation where it was necessary to write a sorting algorithm or implement a data structure from scratch. I must admit that it took a lecture from a professor before the light bulb went off in my head for implementing recursive functions. But though I’m a better programmer for understanding these concepts, couldn’t one just learn them from free online resources?

It will be quite a while before my kids are college-aged and it’s inevitable that the education landscape will be quite different at that point. But should either of my children seek to pursue a career in software, I would consider providing them the essentials for a year or two if they were serious about developing an idea they had. Depending on their potential college choices, such a path could end up being a lot cheaper. If their ideas fail they’re left with plenty of time to pursue other ideas and some real-world experience that many companies value more than academic credentials. If they succeed they can take their company public at $38/share for a cool valuation of a $100 billion and support me in my old age.

Related link: The Thiel Fellowship

(image by nicubunu)

(image by lumaxart)