+<latemp_subject "Shlomi Fish' Advice for the Young" />
+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:
+<h2 id="live_and_learn">"Live like you were going to die tomorrow; Learn
+like you were going to live forever"</h2>
+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.
+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
+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."
+You must be able to dedicate some time for your top priorities because you are
+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.
+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.
+<h2 id="recommended_writings">Writings to Learn and Integrate</h2>
+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.
+to Become a Hacker</a> and
+<a href="http://www.catb.org/~esr/writings/cathedral-bazaar/">the Cathedral
+and the Bazaar series</a>
+Online Neo-Tech resources</a>.
+Good by David A. Burns</a>
+<a href="http://www.joelonsoftware.com/">Joel on Software</a> - most articles
+<a href="http://www.extremeprogramming.com/">Extreme Programming</a>
+<a href="http://www.paulgraham.com/">Paul Graham's Essays</a>
+<h2 id="windows_is_dead">Windows will be dead; Microsoft may or may not Die with it.</h2>
+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.
+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
+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.
+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.
+<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
+<h2 id="technologies_to_learn">Learn Many Different and Orthogonal
+You should learn the following languages and technologies:
+<a href="http://www.w3.org/MarkUp/">HTML</a> and XHTML.
+<a href="http://en.wikipedia.org/wiki/C_programming_language">The C Programming
+<a href="http://www.gnu.org/software/bash/bash.html">Bash</a> or
+The Assembly of one or more architectures.
+<a href="http://en.wikipedia.org/wiki/Lisp_programming_language">Lisp</a> and
+<a href="http://xml.com/">XML</a> and related technologies (but not all).
+<a href="http://www.haskell.org/">Haskell</a> and
+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.
+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.
+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.
+<h2 id="growth_death">Always reverse your growth death.</h2>
+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.
+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.
+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.
+<h2 id="proper_language">Speak and Write Properly in English and in your Mother Tongue</h2>
+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.
+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).
+<h2 id="history">Learn History in General and the History of Computing in
+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.
+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.
+Thanks to the <a href="http://www.freenode.net/">Freenode</a> people Darien,
+crimson_penguin, GXTi and quamaretto for commenting on earlier drafts of this
+<h2 id="other_sources">Other Good Sources of Advice</h2>
+Eric Raymond's <a href="http://www.catb.org/~esr/faqs/hacker-howto.html">How
+to Become a Hacker</a> - an excellent document about the hacker's way of life,
+<a href="http://www.paulgraham.com/hs.html">What You'll Wish You'd Known
+- Paul Graham's Advice for High School Students</a>
+<a href="http://www.paulgraham.com/college.html">Paul Graham's Advice
+for Undergraduate College Students</a>
+Spolsky's Advice for Computer Science College Students</a>
+<a href="http://www.swarthmore.edu/~apreset1/docs/if.html">"If" by Rudyard
+Free (to Wear Sunscreen)</a>. Just don't take it too seriously...