Commits

Anonymous committed f06e8bf

Added two new essays.

Comments (0)

Files changed (4)

t2/philosophy/computers/index.html.wml

 </p>
 </div>
 
+<h3><a href="$(ROOT)/philosophy/computers/web/online-communities/">Reflections
+on Online Communities</a></h3>
 
+<div class="indent">
+<p>
+An essay that serves as a response to Joel on Software's 
+<a href="http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html">Building
+Communities with Software</a>, with some original reflections.
+</p>
+</div>
 
+

t2/philosophy/computers/web/online-communities/index.html.wml

+#include '../template.wml'
+
+<latemp_subject "Reflections on Online Communities" />
+
+<h2>Introduction</h2>
+
+<p>
+This essay gives my thoughts about Joel on Software's 
+<a href="http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html">
+Building
+Communities with Software</a>. The full original article was sent to the Joel
+on Software subscribers by E-mail, while the public web version had less
+content. I will respond only to the public web version.
+</p>
+
+<h2>Dates</h2>
+
+<dl>
+<dt>Published:</dt>
+<dd>12-November-2005</dd>
+<dt>Last Modified:</dt>
+<dd>12-November-2005</dd>
+</dl>
+
+<h2 id="text">The Essay Itself</h2>
+
+<p>
+Joel Spolsky wrote
+<a href="http://www.joelonsoftware.com/articles/BuildingCommunitieswithSo.html">an essay titled "Building Communities with Software</a> back in March, 2003.
+He explained there the motivation behind his web forum and why it is so good.
+</p>
+
+<p>
+In this text, I'd like to comment on some of the claims that Spolsky made
+in the essay. First you'll have to make sure that you've read it.
+</p>
+
+<h3 id="existing_online_forums">Comments on the Review of the Existing Online Forums</h3>
+
+<blockquote>
+<p>
+On IRC, you can't own your nickname and you can't own a channel -- once the
+last person leaves a room, anyone can take it over. That's the way the software
+works. The social result was that it was often impossible to find your friends
+when you came back the next day, because someone else might have locked you out
+of your chatroom and your friends might have been forced to choose different
+nicknames.
+</p>
+</blockquote>
+
+<p>
+This is true for some IRC networks (especially EF-Net) but is not true for many
+others. In some IRC networks (such as 
+<a href="http://www.freenode.net/">Freenode</a>) one can register one's 
+nickname using a service named NickServ, and one's channels using a
+service named ChanServ. This eliminates most of the bot wars that plague other
+IRC networks.
+</p>
+
+<p>
+I've been chatting on Freenode for many months now, and the presence of these
+services, and its general atmosphere, make talking there an absolute joy. I
+have had very few problems there.
+</p>
+
+<h3 id="email">E-mail</h3>
+
+<blockquote>
+<p>
+Could you make a feature where I check a box that says "email me if somebody
+replies to my post?"
+</p>
+<p>
+A. This one feature, so easy to implement and thus so tempting to programmers,
+is the best way to kill dead any young forum. Implement this feature and you
+may never get to critical mass. Philip Greenspun's LUSENET has this feature and
+you can watch it sapping the life out of young discussion groups
+</p>
+</blockquote>
+
+<p>
+Despite what Joel said being able to monitor the replies to one's thread by
+E-mail is a very useful feature that should be enabled by default. Otherwise,
+people may forget to check what they posted. Also, his argument is weak,
+because once someone visits the page to see the reply, he can also do other
+things.
+</p>
+
+<p>
+For forums that aim to give help with a technology, such a feature is a must,
+because a person should be notified when something happen, instead of having
+to visit the forum times and again. (As someone on 
+<a href="http://discuss.joelonsoftware.com/?joel">the Joel on Software forum</a>
+noted.) But even for community software it is a good idea. I know of several
+flourishing forums that have this feature.
+</p>
+
+<h3 id="branching">Branching</h3>
+
+<blockquote>
+<p>
+Q. OK, but can't you at least have branching? If someone gets off on a tangent, that should be its own branch which you can follow or go back to the main branch.
+</p>
+<p>
+A. Branching is very logical to a programmer's mind but it doesn't correspond to the way conversations take place in the real world. Branched discussions are disjointed to follow and distracting. 
+</p>
+</blockquote>
+
+<p>
+Some forums I frequent have a lot of branching and they are very nice. That
+way, replies to posts are answered as branched posts, instead of as replies
+to the topic that come after many other replies.
+</p>
+
+<h3 id="most_recent_reply_first">Promote
+Topics with the Most Recent Replies</h3>
+
+<blockquote>
+<p>
+Q. Your list of topics is sorted wrong. It should put the topic with the most
+recent reply first, rather than listing them based on the time of the original
+post.
+</p>
+
+<p>
+A. It could do that; that's what many web-based forums do. But when you do that
+certain topics tend to float near the top forever, because people will be
+willing to argue about H1B visas, or what's wrong with Computer Science in
+college, until the end of the universe. Every day 100 new people arrive in the
+forum for the first time, and they start at the top of the list, and they dive
+into that topic with gusto.
+</p>
+
+<p>
+The way I do it has two advantages. One, topics rapidly go away, so
+conversation remains relatively interesting. Eventually people have to just
+stop arguing about a given point.
+</p>
+
+<p>
+Two, the order of topics on the home page is stable, so it's easier to find a
+topic again that you were interested in because it stays in the same place
+relative to its neighbors.
+</p>
+</blockquote>
+
+<p>
+I wholeheartidly agree. Forums that promote topics with the most recent reply
+to the top, are incredibly annoying, and I usually stop frequenting them after
+a short while. Usually, my conversations there disappear to oblivion.
+</p>
+
+<h3 id="confirmation">About Posts Confirmation</h3>
+
+<blockquote>
+<p>
+Q. Why don't you show people their posts to confirm them before you post them?
+Then people wouldn't make mistakes and typos.
+</p>
+
+<p>
+A. Empirically, that is not true. Not only is it not true, it's the opposite of
+true.
+</p>
+
+<p>
+Part one: when you have a confirmation step, most people just click past it.
+Very few people reread their post carefully. If they wanted to reread their
+post carefully, they could have done it while they were editing it, but they
+are bored by their post already, it's yesterday's newspaper, they are ready to
+move on.
+</p>
+
+<p>
+Part two: the lack of the confirmation step actually makes people more
+cautious. It's like those studies they did that showed that it's safer, on
+twisty mountain roads, to remove the crash barrier, because it makes people
+scared and so they drive more carefully, and any way, that little flimsy
+aluminum crash barrier ain't gonna stop a 2 ton SUV moving at 50 mph from
+flying off the cliff. You're better off, statistically, just scaring the
+bejesus out of drivers so they creep along at 2 miles per hour around the
+hairpins.
+</p>
+</blockquote>
+
+<p>
+I disagree here, especially when the forum is using markup. (see below). 
+Previewing the post allows one to check if the URLs are OK, and not too long
+or that they have dangling characters, and to review the post. A good posting
+mechanism should have an optional preview feature.
+</p>
+
+<h3 id="other_comments">Other Comments</h3>
+
+<h4 id="markup">Markup</h4>
+
+<p>
+The Joel on Software forum has absolutely no markup except for URLs being
+highlighted. I think that nevertheless, some forums should allow some markup.
+In their case, what they should have is plain and simple HTML, without any
+of the following idiosyncracies:
+</p>
+
+<ul>
+<li>
+Link the following words to a URL. (at least not without giving any option of
+the "&lt;a" tag).
+</li>
+<li>
+Line breaks (<tt>\n</tt> characters) cause a new line to start at the post. 
+(very annoying!)
+</li>
+<li>
+A very limited HTML syntax. Support as broad as syntax as possible optionally
+converting tags to more sane tags, but don't force the user not to input them.
+</li>
+<li>
+Weird tags like square brackets instead of angles.
+</li>
+</ul>
+
+<p>
+HTML is very easy to learn and one can get the hang of it pretty quickly. Many
+times, people post markup from web pages they created with HTML, and they'll bea
+annoyed if they can't post it as is.
+</p>
+
+<h4 id="operation">Forum Operation</h4>
+
+<p>
+Make sure the forum works, that each topic has a permanent page, and that
+the preview and all functions work. There are many off-the-wall forums that
+tend to not function correctly in various browsers, and have many 
+idiosyncracis. It is a good idea to use a stock forum like PHP-BB, YaBB, etc.
+that are well tested and extensively used.
+</p>
+
+<h4 id="horizontal_scrollbar">Avoid a Horizontal Scrollbars</h4>
+
+<p>
+Avoid horizontal scrollbars. Trim long URLs in your posts, and make sure that
+people don't overflow with large codes in "<tt>&lt;pre&gt;..&lt;/pre&gt;</tt>"
+sections.
+</p>
+
+<h4 id="spam_measurements">Spam Measurements</h4>
+
+<p>
+Make sure your forum has measurements against spam. Bayesian filtering or a 
+different spam filter is a good idea. A must is the
+<a href="http://googleblog.blogspot.com/2005/01/preventing-comment-spam.html">rel="nofollow" 
+attribute</a> which will render comment spam useless.
+</p>
+
+<h4 id="cryptic">Don't be Cryptic</h4>
+
+<p>
+Once a commented I posted to a Movable Type-powered weblog was rejected, 
+without giving me any idea what was wrong with it. I had to use my intuition
+to understand that the reason was the shortened URL I placed there instead of 
+my long URL which I was afraid would cause a horizontal scroolbar. This was
+indeed the case, and after I replaced the shortened URL with the full one
+, my comment was accepted.
+</p>
+
+<p>
+But why wasn't the reason for the rejection of the post given? That's a bug!
+So don't be cryptic - if something's wrong let the user know exactly what
+that is.
+</p>
+
+<h3 id="finale">Finale</h3>
+
+<p>
+During my time, I had and still have to deal with a lot of idiosyncratic
+forums. I hope what Spolsky wrote and what I wrote here will help people
+build nicer, better and less dysfunctional online forums.
+</p>
+
+<h2 id="coverage">Coverage</h2>
+
+<ul>
+<li>
+<a href="http://discuss.joelonsoftware.com/default.asp?joel.3.248655.0">The
+Joel on Software forum</a>.
+</li>
+</ul>
+

t2/philosophy/philosophy/advice-for-youngsters/index.html.wml

+#include '../template.wml'
+
+<latemp_subject "Shlomi Fish' Advice for Youngsters" />
+
+<h2 id="intro">Introduction</h2>
+
+<p>
+There used to be a common meme to offer advice to high school and college
+students. Here is my advice, based on what I know, and practice:
+</p>
+
+<h2 id="live_and_learn">"Live like you were going to die tomorrow; Learn 
+like you were going to live forever"</h2>
+
+<p>
+This is the single best piece of advice one could give, but you'd amazed how
+many people defy it. (It's attributed to Mahatamma Gandhi.) Most people I know
+don't seem to have time for anything. They are crowded with responsiblities.
+"We're too busy", they say.
+</p>
+
+<p>
+I'm not too busy, and never will be. When I worked or studied I also was never
+too busy to talk to people I liked or met at that time; to work on open source
+software and web sites; to relax; to help people with their computer problems.
+I became relatively popular. More people knew me by name than I could recall
+them. (including some very pretty girls, albeit with them I usually recalled
+their names eventually). Everyone knew I was one of the resident UNIX gurus. It
+was fun.
+</p>
+
+<p>
+I treasure the few people who always answer my E-mails on time, always have
+time to chat on the phone, unless they have a previous engagement. Know well
+enough that one doesn't become productive by 
+<a href="http://www.igda.org/articles/erobinson_crunch.php">working more than 
+40 hours a week</a>, and always say "I'll do it when I have some spare 
+cycles" instead of "I don't have time to do it."
+</p>
+
+<p>
+You must be able to dedicate some time for your top priorities because you are
+going to die tomorrow.
+</p>
+
+<p>
+And there are people who refuse to learn anything. They don't have time and
+think that by not learning and acquiring new skills, they'll still be
+successful. Java people think Java is the best thing since sliced bread and
+don't learn Perl, Python or Ruby. C++ people don't know how straightforward
+and painless Object-Oriented programming is in high-level languages.
+Programmers who are used to Perl 4 writing Perl 5 scripts the Perl 4 way,
+despite knowing Perl 5 pretty well. The list goes on.
+</p>
+
+<p>
+Such persons are the worst. They may be pretty good at what they do, but
+they'll never get better, and will maintain their code in a language that will
+become deprecated and then have to learn something new after not practicing
+their learning skills for a long time.
+</p>
+
+<h2 id="recommended_writings">Writings to Learn and Integrate</h2>
+
+<p>
+Learn and Integrate the following things. By integrate, I meat take the time 
+to digest and don't reject as absurd on the spot. Note that you have to <b>read 
+them from cover to cover</b> and not to skip in between, otherwise you'll
+get a lot of false impressions.
+</p>
+
+<ul>
+<li>
+Eric S. Raymond's 
+<a href="http://www.catb.org/~esr/faqs/hacker-howto.html">How 
+to Become a Hacker</a> and
+<a href="http://www.catb.org/~esr/writings/cathedral-bazaar/">the Cathedral
+and the Bazaar series</a>
+</li>
+<li>
+<li>
+<a href="http://www.shlomifish.org/philosophy/philosophy/guide-to-neo-tech/">The
+Online Neo-Tech resources</a>. 
+</li>
+<li>
+<a href="http://www.shlomifish.org/philosophy/books-recommends/#feeling_good">Feeling
+Good by David A. Burns</a>
+</li>
+<li>
+<a href="http://www.joelonsoftware.com/">Joel on Software</a> - most articles 
+are recommended.
+</li>
+<li>
+<a href="http://www.extremeprogramming.com/">Extreme Programming</a>
+</li>
+<li>
+<a href="http://www.paulgraham.com/">Paul Graham's Essays</a>
+</li>
+</ul>
+
+<h2 id="windows_is_dead">Windows will be dead; Microsoft may or may not Die with it.</h2>
+
+<p>
+I put my money that practically the majority of people would switch to
+UNIX-based OSes (most notably the various distributions of Linux and Mac
+OS X) a few years from now. Linux nay-sayers are having less and less good
+arguments to support Linux that "just works", is easier to use, requires less
+constant maintenance, and have so many technical advantages over Windows that
+enumerating all of them here would be not possible. 
+</p>
+
+<p>
+Just search for <a href="http://www.google.com/search?q=%22linux%20vs.%20windows%22">"Linux vs. Windows"</a> or "Open Source vs. Windows.". Windows is trying 
+to catch up but usually gives solutions that are either buggy at first or 
+not as integrated, or not as good or worse, or simply too little too 
+late. In Microsoft conferences, the Microsofties are notorious for getting 
+excited about new Windows features that Linux has had for years. The Win32 API
+is horrible and very programmer unfriendly, while the various Unix APIs are 
+in very good shape.
+</p>
+
+<p>
+Windows Vista will come without any of the features that were most
+publicized. Development on Windows is slowing to a halt. Meanwhile development
+on the various components that make a Linux system is progressing at a greater
+and greater speed. There seems to be a huge shortage in clueful Linux workers
+at least here in Israel. No-one can find any. Linux is hot.
+</p>
+
+<p>
+Microsoft will probably survive. It has .NET which is very portable. (either
+the proprietary version by Microsoft which runs fine on FreeBSD), or the
+open-source Mono. It also has many other good products and some decent APIs
+that can be ported to Linux. But Windows is dead.
+</p>
+
+<p>
+I'm not as 
+<a href="http://lxer.com/module/newswire/view/16376/index.html">paranoid as 
+ESR is</a> about what Microsoft will do next. I think they
+will simply embrace Linux, port their software to run on it. We will see
+programs written in the Win32 API and APIs above that for years to
+come. (There are still programs that run under DOS, and were not 
+ported yet.)
+</p>
+
+<h2 id="technologies_to_learn">Learn Many Different and Orthogonal 
+Technologies</h2>
+
+<p>
+You should learn the following languages and technologies:
+</p>
+
+<ul>
+<li>
+<a href="http://www.w3.org/MarkUp/">HTML</a> and XHTML.
+</li>
+<li>
+<a href="http://perl-begin.berlios.de/">Perl</a>
+</li>
+<li>
+<a href="http://en.wikipedia.org/wiki/C_programming_language">The C Programming
+Language</a>
+</li>
+<li>
+<a href="http://www.gnu.org/software/bash/bash.html">Bash</a> or 
+<a href="http://www.zsh.org/">Zsh</a>.
+</li>
+<li>
+<a href="http://www.python.org/">Python</a>
+</li>
+<li>
+<a href="http://java.sun.com/">Java</a>
+</li>
+<li>
+The Assembly of one or more architectures.
+</li>
+<li>
+<a href="http://en.wikipedia.org/wiki/Lisp_programming_language">Lisp</a> and
+<a href="http://www.schemers.org/">Scheme</a>
+</li>
+<li>
+<a href="http://xml.com/">XML</a> and related technologies (but not all).
+</li>
+<li>
+<a href="http://www.haskell.org/">Haskell</a> and 
+<a href="http://caml.inria.fr/">O'Caml</a>
+</li>
+<li>
+Matlab or a similar tool for bulk operatioins on tensors, like Perl's
+<a href="http://pdl.perl.org/">PDL</a> or Python's SciPy.
+</li>
+</ul>
+
+<p>
+These are languages I recommend you to learn. They were the languages that
+provided me with the most inspiration and insights. I don't like all of them
+as much as I do others, but they are nonetheless truly enlightening. I believe
+Perl or Python (etc.) are the most useful of them, and also the most suitable 
+for learning as a first programming language.
+</p>
+
+<p>
+Another point is to learn about the design of digital circuits (out of logical
+gates and Flip-flops, not the transistor composition of them) and about
+computer architectures. Too many programmers don't have a good understanding
+of a how a computer really works, which ends up showing in sub-optimal code.
+</p>
+
+<h2 id="growth_death">Always reverse your growth death.</h2>
+
+<p>
+Growth death means you've stopped to grow, and become more cynical as time
+goes by and less capable. It is unnecessary because some people have never
+had growth death in their entire life time, while one of my friend already 
+had it in his mid-to-late twenties. I never experienced growth death, and 
+still grow in my skills, capability and productivity. You should too.
+</p>
+
+<p>
+There are no caveats. Either you grow or you don't. And nothing necessitates
+that you don't grow. People in concentration camps sometimes never stopped
+growing, and often experienced spiritual or intellectual enlightenings.
+</p>
+
+<p>
+It doesn't matter how many responsibilities you have, you never have to stop
+growing. I have been corresponding with a man in his late 70's , who is still 
+programming, travels a lot, is very active, and is otherwise very enthusiastic 
+about life. So he also still has a living growth.
+</p>
+
+<h2 id="proper_language">Speak and Write Properly in English and in your Mother Tongue</h2>
+
+<p>
+This is something that Eric S. Raymond suggests in "How to become
+a Hacker", but many people still ignore. Speaking in a language with
+many mistakes, will cause people to look down on you, and they'll
+immediately notice the problems in what you speak. Whenever I write something
+in either English or Hebrew, I make sure to phrase myself properly. Whenever
+I learn of a new Hebrew common mistake, I immediately register it, and notice
+it from then onward. I never consciously write it, and try to correct myself
+if I utter it improperly. Other people whom I constantly remark on improper
+language, still make these mistakes, and I wonder how much conscious effort
+they put into their writing.
+</p>
+
+<p>
+Note that all-lowercase writing, while acceptable on the IRC (albeit I
+do not write this way either) is completely frowned upon in E-mails, and 
+leaves an impression of lack of professionality, no time and care to press the 
+shift key, and general dislect. Don't do it. Putting such improperly-written
+language on the Web is even more harmful. (and often mailing lists 
+are archived on the Web for prosperity).
+</p>
+
+<h2 id="history">Learn History in General and the History of Computing in 
+Particular</h2>
+
+<p>
+Paul Graham <a href="http://www.paulgraham.com/essay.html">recommends that 
+people learn History but not so much political
+history, but cultural, technological and artistic history</a>. He's right in a 
+way. Knowing who conquered who at what time is quite useless. Knowing how 
+things developed and how people thought or behaved at the time, or what 
+happened is actually useful and enlightening.
+</p>
+
+<p>
+Many people graduate from Computer Science degrees, hardly knowing anything
+about Computer history. They are familiar with Knuth, Dijkstra and other great
+names, only througout the algorithms they have formulated, and are not familiar
+with when things came to being, or why they are this way at all. There are many
+good resources for learning about computer history on the Net, and you should
+probably read them. Chatting on the IRC in the appropriate channels can also
+help you learn more about it.
+</p>
+
+<h2 id="thanks">Thanks</h2>
+
+<p>
+Thanks to the Freenode people Darien, crimson_penguin, GXTi and quamaretto
+for commenting on earlier drafts of this essay.
+</p>
+
+<h2 id="links">Links</h2>
+
+<ol>
+<li>
+<a href="http://www.paulgraham.com/hs.html">What You'll Wish You'd Known
+- Paul Graham's Advice for High School Students</a>
+</li>
+<li>
+<a href="http://www.paulgraham.com/college.html">Paul Graham's Advice
+for Undergraduate College Students</a>
+</li>
+<li>
+<a href="http://www.joelonsoftware.com/articles/CollegeAdvice.html">Joel 
+Spolsky's Advice for Computer Science College Students</a>
+</li>
+</ol>
+
+

t2/philosophy/philosophy/index.html.wml

 mind-blowing philosophical system.
 </p>
 
+<h3><a href="./advice-for-youngsters/">Advice for Youngsters</a></h3>
+
+<p>
+Some advice for people. Especially young ones.
+<p>
+