16. “In the early years of programming,
a program was regarded as the
private property of the
programmer. One would no more
think of reading a colleague's
program unbidden than of picking
up a love letter and reading it.”
17. “This is essentially what a program
was, a love letter from the
programmer to the hardware, full
of the intimate details known only
to partners in an affair.”
18.
19. REM The IBM Personal Computer Donkey
REM Version 1.10 (C)Copyright IBM Corp 1981, 1982
REM Licensed Material - Program Property of IBM
DEF SEG : POKE 106, 0
SAMPLES$ = "NO"
DIM CAR%(900)
GOTO 1010
SAMPLES$ = "YES"
1010 KEY OFF: SCREEN 0, 1: COLOR 15, 0, 0: WIDTH 40: CLS :
LOCATE 5, 19: PRINT "IBM"
LOCATE 7, 12, 0: PRINT "Personal Computer"
COLOR 10, 0: LOCATE 10, 9, 0: PRINT CHR$(213) + STRING$(21, 205)
+ CHR$(184)
LOCATE 11, 9, 0: PRINT CHR$(179) + " DONKEY " + CHR$(179)
LOCATE 12, 9, 0: PRINT CHR$(179) + STRING$(21, 32) + CHR$(179)
LOCATE 13, 9, 0: PRINT CHR$(179) + " Version 1.10 " + CHR$(179)
LOCATE 14, 9, 0: PRINT CHR$(212) + STRING$(21, 205) + CHR$(190)
COLOR 15, 0: LOCATE 17, 4, 0: PRINT "(C) Copyright IBM Corp
1981, 1982"
COLOR 14, 0: LOCATE 23, 7, 0: PRINT "Press space bar to
continue“
1100 IF INKEY$ <> "" THEN GOTO 1100
1110 CMD$ = INKEY$
IF CMD$ = "" THEN GOTO 1110
20. This series of books is affectionately dedicated
to the Type 650 computer once installed at
Case Institute of Technology,
in remembrance of many pleasant evenings.
Donald Knuth
dedication to
The Art of Computer Programming
1968
24. One of the great pioneers of computer
and online gaming, Dani Berry died in
1998. Some of her aphorisms are still
frequently quoted by game developers,
including
”No one ever said on their deathbed,
‘Gee, I wish I had spent more time
alone with my computer.’”
25.
26.
27. Programming used to be an intensely
private experience.
Programming is now a public, social
activity
Like it or not.
28.
29.
30. SourceForge is about projects. GitHub is
about people... A world of programmers
forking, hacking and experimenting. There
is merging, but only if people agree to do
so, by other channels... GitHub gives me
my own place to play. It lets me share my
code the way I share photos on Flickr, the
same way I share bookmarks on del.icio.us.
Here’s something I found useful, for what
it’s worth...
31. Moreover, I’m sharing my code, for what it’s
worth to me to share my code... I am
sharing my code. I am not launching an
open source project. I am not beginning a
search for like minded developers to avoid
duplication of efforts. I am not showing up
at someone else’s door hat in hand, asking
for commit access. I am not looking to do
battle with Brook’s Law at the outset of my
brainstorm.
41. Modern programming may be a
social activity, but programmers are
still introverted and anti-social.*
What motivates us to work with
confusing, complicated, erratic
people instead of simple
computers?
*and that’s how we like it!
44. • I don’t have to agree with you
• I don’t have to be “friends” with you
• I don’t even have to like you
… but we have a shared passion, a
shared enemy, and we can learn from
each other.
45. The currency of Stack Overflow is
information.
Programmers map social
relationships on top of that.
Do you really need software to tell
you who your friends are?
48. Work is when your boss tells you to do
something, you do it, and you get paid.
work is motivated by inherent interest
and generally unpaid.
49.
50. Usability testing techniques developed
over the past 25 years for Work no
longer apply for work.
We shouldn't be asking, “Can you
complete the task?” but rather “Are
you motivated to do it in the first
place?”
54. “If you take Wikipedia as a kind of unit,
all of Wikipedia, the whole project --
every page, every edit, every talk page,
every line of code, in every language
that Wikipedia exists in -- that
represents something like the
cumulation of 100 million hours of
human thought.”
55. • Fast, fast, fast
• No registration required
• Simple Markdown formatting
• Edit anything, anytime (even anon!)
Every question has an input box at the
bottom, inviting you to participate and
share what you know
56.
57.
58. “I'm doing a (free) operating system (just a
hobby) [...] I'd like to know what features
most people would want.”
“Humor me. Go there and add a little
article. It will take all of five or ten
minutes.”
“In the past, we could do little things for
love, but big things required money. Now,
we can do big things for love.”
59. 1. Radically lower the bar for
participation
2. Trusting (some of) your
users
3. Life is the world’s biggest
MMORPG
4. Bad stuff happens
5. Love trumps money
69. Oil
The value of the
information is more
important than the
individual authors.
Water
Information from
credible authors is more
reliable.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83. Channel Rules
1. No whining
2. No colours or other formatting, especially in
automated scripts.
3. Do not paste code (or anything) on the channel.
4. If you feel you have been unfairly treated, abused or
just aren't getting your money's worth ($0), see Rule
#1.
84.
85.
86.
87.
88.
89. Scary Idea #3
Life is the world’s biggest
MMORPG
What if you embraced the game-
like aspects of your profession?
101. “A soldier will fight long and hard for a
bit of colored ribbon.”
102. “Even though points on
Consumating were redeemable for
absolutely nothing, not even a gold
star, our members had an
unquenchable desire for them.”
103.
104.
105.
106.
107.
108. Scary Idea #4
Bad stuff happens
It’s OK for bad things to happen
as long as the community has
ways of dealing with them.
109.
110. “So, Lone Starr, now you see
that evil will always triumph,
because good is dumb.”
121. Scary Idea #4
Love Trumps Money
Even the most staunch capitalists
will do things for love that they
would never do for money.
122.
123.
124.
125.
126.
127.
128. Because the community is engaging, gives you new
and different problems to solve, your help is
appreciated and no one can force you to do
something that you don't want to (as long as you
don't want to troll or set things on fire) and you don't
have the stress of having to answer correctly or you'll
lose your food (being fired). Lack of having to answer
to a clueless PHB is just a plus.
In short: You are here for intellectual
leisure/engagement/fun, you are at work to get
money so you can eat every day and sleep
comfortably (consumerism aside).
129. Linux
“I'm doing a (free) operating
system (just a hobby) [...] I'd
like to know what features
most people would want.”
Wikipedia
“Humor me. Go there and add a
little article. It will take all of five
or ten minutes.”
130. 1. Radically lower the bar for
participation
2. Trusting (some of) your
users
3. Life is the world’s biggest
MMORPG
4. Bad stuff happens
5. Love trumps money
133. I live in US – skycbc5405
Can you get a GTX 480? You can get them
brand new in the UK now for like £200-£220 –
Atomfix
What kind of resolution do you play on? That
would help us pick out the right GPU for you?
– tryagainplss
134.
135. The other thing I wanted was that they be really
literate in whatever language they write to other
humans. I want people who can write, because
we spend a lot of time writing to each other.
We’re writing email or documentation. We’re
writing plans. We’re writing specifications. I want
to know the people on my team are capable of
doing that, and that turns out to be a very
difficult skill. I would actually rather see people
start as English majors than as math majors to
get into programming.
-- Douglas Crockford
136. Another is Elements of Style, which isn’t
even a programming book. You should read
it for two reasons. The first is that a large
part of every software engineer’s job is
writing prose. If you can’t write precise,
coherent, readable specs, nobody is going to
be able to use your stuff. So anything that
improves your prose style is good. The
second reason is that most of the ideas in
that book are also applicable to programs.
-- Joshua Bloch
137.
138. I heard about a computer science
department where in the tutor’s office
they had a stuffed animal and the rule
was that you had to explain your
problem to the stuffed animal before
you could bother the tutor. “Ok,
Mister Bear, here’s the thing I’m
working on and here’s my approach –
aha! There it is.”
139.
140. I’ve occasionally been asked to advise universities
on syllabus subjects for computer science
courses. And I say “Well, turn ‘em out being able
to write and argue cogently.” Most graduates
who come out, they’ve got degrees in computer
science, but writing’s not their strong point.
It’s very difficult to teach *writing+ because it’s
very individual. Somebody’s got to take your text
and a red pen and explain to you what you did
wrong. And that’s very time consuming.
-- Joe Armstrong
141. Everyone should write a lot – whether it’s a blog,
a book, SO answers, emails or whatever. Write,
and take some care over it. Clarifying your
communication helps you to clarify your own
internal thought processes, in my experience.
It’s amazing how much you find you don’t know
when you try to explain something in detail to
someone else. It can start a whole new process
of discovery.
-- Jon Skeet
I know a little bit about community, after watching a sizable one form around my programming blog. So big, in fact, it changed my career forever.Blog comments does not equal a vibrant community. What do you do with the stored energy of a large community? How can you harness that energy and turn it into something positive, something the community can build together?
Again, with the theme of collaboration.I’ve studied Clay’s writing for years, and his book “Here Comes Everybody” was a sort of blueprint for what came next.
In February 2008 GitHub.com launched, a “social coding” site which provides Git hosting and rich social networking tools to all the developers using the site, gratis for open source code.
Good programmers write. Great programmers steal.Joel and I wanted a mashup of all the social website concepts that we knew worked at places where programmers hang out.We did a LOT of research into sites that worked.
Let’s start with a static phpBB style discussion forum. A chronological list of messages.
Voting – digg/reddit. AJAX style. So the best stuff goes to the top. You don’t have to read 40 messages to find that one nugget of useful technical information buried in there.
Bring in editing. So a year later, after this API has been deprecated, or if there’s a better way to do this, users can change their posts.Note that editing brings in discussion about the editing as well. This is important.
Blogs –owner authorship. From delicious, the concept of tagging.
Finally, bringing it all together. A Web 3.0 forum.
Loving not necessarily each other, because people can be hard to love – but loving the thing we are creating together for the future.
How do you deal with the loud dumb anonymous people on the internet? YouTube is a great example. All YouTube comments are a waste of time!Or are they?
Mutual constraints, mutually agreed upon
This is the most viewed video on YouTube for the month of March at the time I visited.http://www.youtube.com/watch?v=UhCzWs6hDSs
http://www.youtube.com/watch?v=JQnHTKZBTI4
This is the big leap of faith.
Who wrote this article? Where is the byline?
We absorbed a tremendous amount of design friction from our choice to allow both selfless wiki editing, and authorship.At the very least, attribution provides context for the words. It’s additional information.
Well, not quite everyone. But once we learn to trust you – the more reputation you have, the more abilities you have on the site.
This sort of collaborative editing ends up being familiar to programmers – it’s like pair programming!
Remind you of anything? Developers understand revisions and source control, it’s part of every programmer’s DNA.
Story two: : The Bronze Beta – is a Buffy fan site, When Warner Bros was selling Buffy to UPN – they told them that they had also set up a community bulletin board. UPN said please tell the users the old board will close down and we will set up our own. Clay told us that the users were not happy. They pooled resources and paid for a new site. They had fallen in love with each other and just wanted to be there. When they got their new site they didn’t want lots of new features, just text really.And so this story confirms for me (Clay) that social software is the only area in software that I know that the later products have fewer features than the previous products – not the same in other areas. If someone a few years ago had told you that most of what would be published in 2008 will use the simpler tools not the more complicated tools. You wouldn’t have believed that if someone had predicted it as you want as many toys in your box as possible. If the tool is social then it matters a lot how you use it and how I use it.
The other hard thing: how do you tell people they don’t belong?
If you’re only playing a game, that time disappears. The difference here is that we’re investing this time in our career.
You can have your cake and eat it too. Get paid to do something you love. This is a wonderful thing. We are very, very fortunate. Embrace this!
Statistics and experience levels – a familiar concept to geeks.
From the early 1980s. “roguelike”. From UC Santa Cruz, to Berkeley, and distributed with BSD 4.2.
Many years later, we’re still levelling up.
Clay uses Slashdot as an example of defending against this. Slashdot has managed to not be swamped by negative activity over the years. The basic trick is that Slashdot members defend readers from writers. He describes the karma system. The average reader never see posts rated 0 or -1. That accounts for 20% of the comments. Moderating is done by logged in users with high karma, randomly selected to moderate, who have chosen to moderate. That’s a daunting chain of decisions.Slashdot isn’t easily replicated, even by using the using the actual code base. Neither the gestalt of understanding nor the actual code is sufficient, so we need a pattern.
The problem Slashdot faces is the tragedy of the commons. Each poster has a motive to hurt the commons to gain notoriety for themselves. Here’s the pattern:1. Move comments to a separate page2. Treat readers and writers differently3. Let users rate posts4. Use defensive defaultsBut who guards the guardians? A second pattern solves the problems that the first pattern creates:1. Treat users and members differently2. Measure good behavior3. Enlist committed members4. Judges can’t post
Encourage positive behaviors, discourage negative behaviorsTHINK about what you’re encouraging. Design the game responsibly.http://benbrown.com/says/2007/10/29/i-love-my-chicken-wire-mommy/
http://developer.yahoo.com/ypatterns/
When you design your software, work under the assumption that some of your users will be evil: out to game the system, to defeat it at every turn, to cause interruption and denial of service, to attack and humiliate other users, to fill your site with the vilest, nastiest spam you can possibly imagine.
When you design your software, work under the assumption that some of your users will be evil: out to game the system, to defeat it at every turn, to cause interruption and denial of service, to attack and humiliate other users, to fill your site with the vilest, nastiest spam you can possibly imagine.
THE IMAGES THAT SHALL NOT BE NAMED
both the manual human being way, and the automatic computer way. These complement each other.
Even after spending a lot of time thinking about this, we still got bitten.