This is the P2PU Archive. If you want the current site, go to www.p2pu.org!

Reading Code

This course is complete. Subscribe to the announcement list for updates.

Reading Code

Jessy Cowan-Sharp's picture
Course organiser: Jessy Cowan-Sharp
About the Course Organiser: 

My name is Jessy Kate and I'm a web developer and computer science grad student. 

No of Seats: 
15
Course Status: 
Completed

My items in this course

Members

Jessy Cowan-Sharp's picture
admin
Jessy
Abhaya Agarwal's picture
Abhay
Adam Collado's picture
Adam
Andrew Bloss's picture
Andre
Brylie Oxley's picture
Bryli
Diana Lezama's picture
Diana
Viacheslav Rostovtsev's picture
Viach
Eric Bréchemier's picture
Eric
hemanth hm's picture
heman
Ivan Teoh's picture
Ivan
Jake Dahn's picture
Jake
Nadeem Shabir's picture
Nadee
Oswald Hugo's picture
Oswal
Mel Chua's picture
Mel C
Natan Mallinger's picture
Natan
Brad Burkett's picture
Brad
Pablo Olmos de Aguilera C.'s picture
Pablo
Gebhard Matt's picture
Gebha
Rin Raeuber's picture
Rin R
Sebastian Dziallas's picture
Sebas
Sid's picture
Sid
sometwothings's picture
somet
tapesofwrath's picture
tapes
Osledy Bazo's picture
Osled
William Reynolds's picture
Willi
Get comfortable reading other peoples' code, from big open source projects to small standalone apps. #p2pu #webcraft

Summary

In the Open Web world, we are often working with other peoples' code. Reading code helps to us to appreciate that there's no magic black box around "other peoples' code"; that it all comes down to logic; that every program has errors; and that sometimes reading the code is the best documentation.

This course will remind us that there is no magic-- only logic. We will dive into the mini universes of open source projects and learn techniques for getting oriented in projects large and small, debugging, stack traces, and simply getting comfortable reading code.


Each week we will plan to cover one open source project. During the week, participants will read specific code sections on their own, and there will be an ongoing chat room, (possibly with people signing up to be present during specific hours) to support discussions and questions outside of class time. Coursework will involve contributing to the public online documentation for each of these projects.   

We will try to cover a variety of project types and languages (javascript, php, python, ruby), and for each project and/or language, information about tools for reading, debugging or understanding the relevant "stack" will be introduced. 

During the weekly course meetings, a different person will lead each session and together we will go over the section of code assigned for that week, discussing our understanding of what is happening, techniques employed, and areas we found difficult to understand. At the end of the in-virtual-person session, the next week's subject matter will be introduced.

Initial list of proposed projects (balancing languages, familiar/popular frameworks, newness (older and cruftier or well developed vs new code))-- this list will be refined with course participants based on experience and interest as appropriate:

  • Drupal or wordpress (php)
  • Django or tornado (python)
  • Jquery, NodeJS or Protovis (javascript)
  • Mongodb (c++) or one of the mongodb language drivers (ruby/python)
  • Need a Rails project
  • Erlang? Haskel?
  • Browser extension firefox s3:// extension (ec2/s3)

Language/framework inspection and debugging tools

  • Print statements
  • Firebug/Chrome developer tools (javascript)
  • strace
  • server log files
  • ... more here (add your suggestions!)

What you can Expect to Learn

  • Code Reading comprehension
  • Exposure to different languages
  • Debugging tools for different environments and languages

What you Might Learn if you Work Hard

  • You might end up submitting a patch if you come across bugs or have ideas for enhancements

Thing we won't Cover

  • Writing code

  • Installation and configuration of these tools, although it will probably be helpful to have them installed (to tweak/explore/break them!), and there will be indirect/informal support via the chat room for doing this.


Schedule/Syllabus

Comments

Since it says in the course

Oswald Hugo's picture
Oswald Hugo
Sun, 2010-09-12 09:07

Since it says in the course summary that the list of proposed project "will be refined with course participants based on experience and interest as appropriate", can we show our interest now?

What I'm most interested in:
-Wordpress
-Django
-NodeJS
-Haskel

in order of interest: -

Rin Raeuber's picture
Rin Raeuber
Sun, 2010-09-12 14:45

in order of interest:

- NodeJS
- MongoDB
- Django
- Wordpress

I like the proposed lists,

madarve's picture
madarve
Sun, 2010-09-12 15:26

I like the proposed lists, and for the Rails project, why don't we take a look at Rails itself?

From the alternatives: *

Pablo Olmos de Aguilera C.'s picture
Pablo Olmos de Ag...
Sun, 2010-09-12 19:08

From the alternatives:

* wordpress (php)
* Django (python)
* Jquery (javascript)
* Mongodb (c++) or one of the mongodb language drivers (ruby/python/php)
* Need a Rails (I'd be interested in learning some rails :))
* Erlang? Haskel? (I don't know, anyone is fine for me; I don't have any idea about them :P)
* Browser extension firefox s3:// extension (ec2/s3) (this looks interesting too :))

I haven't used something like mongodb, so I don't understand it :P, but I'm willing to learn if most people want to (the same goes with erlang/haskell).

For me: * wordpress *

Jake Dahn's picture
Jake Dahn
Mon, 2010-09-13 01:17

For me:

* wordpress
* tornado
* nodejs
* mongodb (dont know c++, should be fun)
* Rails itself, or RefineryCMS
* Erlang (http://zotonic.com/ - wordpress looking cms built on erlang)
* Would like to preferably look at a chrome extension, already familiar with s3://

I'm in the very beginning stages of learning Erlang and its very different than the style of programming I'm used to, so it would be great to attack it with a partner. Also I do not know C++ but I'm guessing I should be able to make my way around the mongodb base, so I'm excited for it.

For me: - Wordpress -

Adam Collado's picture
Adam Collado
Mon, 2010-09-13 03:24

For me:

- Wordpress
- Django
- NodeJS (Don't know javascript, but looking forward to learning it :D)
- MongoDB
- Going with what Manuel said and think we should just look at Rails itself

What interests me :*

hemanth hm's picture
hemanth hm
Mon, 2010-09-13 04:12

What interests me :

* Drupal.
* Django.
* Ruby on Rails.
* Jquery.
* Mongodb.
* Browser extension firefox and chrome extensions.

I have tried something or the other in all of them, but yet to do a killer app or a major patch contribution.

I don't have much of a

tapesofwrath's picture
tapesofwrath
Mon, 2010-09-13 04:26

I don't have much of a preference because I only know a bit of php and javascript. But, that's part of the appeal of the course to me. I think trying to read code outside of my comfort zone will help with any new language. If I had to choose:

wordpress
Django
NodeJS
Mongodb
no preference on the rest

And, maybe this is elementary to some of you, but how about something on conventions in pseudocode (if there are any :p) or UML? The point being just to get better at describing code in whatever language?

Sorry, I'd like to make a

Pablo Olmos de Aguilera C.'s picture
Pablo Olmos de Ag...
Mon, 2010-09-13 21:17

Sorry, I'd like to make a change Drupal instead of wordpress. =P and protovis instead of jquery =).

Another thing, I was looking to the other alternatives of javascript (besides jquery), and all of them serves very different purposes, protovis data visualization and nodejs is an evented i/o for v8 javascript (haha, don't know what that supposed to mean btw xD).

That's actually the idea?

What interests me: * Drupal *

Nadeem Shabir's picture
Nadeem Shabir
Tue, 2010-09-14 09:22

What interests me:

* Drupal
* JQuery
* NodeJS
* Processing.js
* Wordpress

I am interested in: *

Ivan Teoh's picture
Ivan Teoh
Tue, 2010-09-14 09:53

I am interested in:
* Django
* JQuery
* Protovis

As for rails project,

Viacheslav Rostovtsev's picture
Viacheslav Rostov...
Tue, 2010-09-14 10:37

As for rails project, http://github.com/popular/forked with rails search gives us insoshi (Socian networking platform), Spree (e-commerce); redmine (project management), not a single project I've heard before of, bu probably all notable.

For Erlang - CouchDB is a cool project and since it's similar to MongoDB, the comparison can provide an additional education value.

Other interesting stuff:

NodeJS
MongoDB
Django
Erlang

I have been a part owner of a

noucktourno's picture
noucktourno
Sun, 2010-10-03 09:24

I have been a part owner of a programming business that writes apps for the web for a number of years now but my true passion is games. I've been planning to try and make a go of game dev as a business or part-time business and this article is encouraging, thanks again scoruri live!

Thanks....

Schnabel Alta's picture
Schnabel Alta
Tue, 2010-12-21 10:09

I was extremely pleased to find this website.I wanted to thank you for this good understand I definitely enjoying every single small bit of it and We've you bookmarked to check out new stuff you post.......copy wii games