me, thinking out loud…

Posts tagged ‘lafootgiri’

arbit blab

Well, just another post to make it clear that

  • I’m still alive
  • I haven’t forgotten that I have a blog
  • I haven’t forgotten my blog’s password
  • I haven’t lost the ability to write arbit crap.
  • I’m not busy with anything interesting
  • My Keyboard works fine

Arbit stuff going on around me off-late.

  • We’ve had our official farewell; So we’ve officially bid goodbye to B.I.T.S – Goa. People tried their best to make the occasion appear “senti” but it seemed more like “psenti” for me.
  • I wonder why our VC calls BITS as B.I.T.S; is it something similar to people choosing to call SAP as S.A.P?
  • Most of the advice given was of a copy-book style. But I liked one of them, though it wasn’t expressed well enough for me – Learning from Books still remains an important way of learning, even if work teaches you a LOT.
  • College now has its own Debian Repository hosted on a server running Hardy. Hats off to bad_sector for showing the enthu to get things done. The LUG here’s got a great bunch of people right now and its growing in leaps and bounds. I’m excited.
  • A couple of my friends picked up Debian recently and apparently both of them are loving it thoroughly. Linux, as addictive as ever.
  • It’s been a while since I’ve been on the winning side in carroms. Its so boring to be on the losing side for so long.
  • Word is not a document exchange format[1]; Use html, plain text, pdf or the open document format.(if you are not averse to openness) [I mention this now because I faced a lot of trouble recently trying to handle some .doc files which replaced the html pages that were being used on the PS site.]
  • So often, little things get blown out of proportion, so quickly. Or its just that not everybody sees them as ‘little’ things.
  • On slow connections, the download ‘handler’ of firefox does really poorly. It’s next to impossible to download anything over half an MB.
  • This from the preface of SICP[2],a text book for an introductory course on Computer Programming at MIT

    Our design of this introductory computer-science subject reflects two major concerns. First, we want to establish the idea that a computer language is not just a way of getting a computer to perform operations but rather that it is a novel formal medium for expressing ideas about methodology. Thus, programs must be written for people to read, and only incidentally for machines to execute. Second, we believe that the essential material to be addressed by a subject at this level is not the syntax of particular programming-language constructs, nor clever algorithms for computing particular functions efficiently, nor even the mathematical analysis of algorithms and the foundations of computing, but rather the techniques used to control the intellectual complexity of large software systems.

    I would like to see a few courses developed on similar lines here.

  • Gmail themes are good. I only tried the “Terminal” theme, though. I loved it!
  • For the very first time, I upgraded a distro. I successfully moved to Intrepid from Hardy. (and that too with the campus net!) This was before the repositories had been set-up. Now, it should be a much simpler job to achieve the same
  • Just got the news of more Violence in Mumbai; What the hell do these people want? I end this post here.

Here’s an xkcd strip I liked.


Links:
[1]Word is not a document exchange format — http://www.goldmark.org/netrants/no-word/attach.html

[2]Structure and Interpretation of Computer Programs (Preface) — http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-7.html#%_chap_Temp_4

Advertisements

Lafoot or Lafoobot!

Summer’08! I’m at home, doing nothing practically. :| No Internships, No Projects, No GRE plans (a little pushing for GRE has just started from the junta around.)

Just to kill some time and to learn some Python, I have begun to write an IRC chat bot <lafoobot> [Lafoot + Bot]. The present haven of lafoobot is #fosskelog @ irc.freenode.net. Join in, if you want to have a chat! ;)
Lafoobot can presently do very few things

  • “Yoyo”, a newly joined user
  • “Hello”/ “Yoyo”, a user or pass on a Hello/Yoyo from user to another.
  • Gives Local time / GMT
  • Gives a random word and its meaning [put in for the junta preparing for GRE ;)]
  • Gives out an MOTD or a fortune when it first joins #fosskelog
  • Googles a search term and returns the top 5 results (This is my favourite feature and this is the reason partially for this post. “!google lafoobot” doesn’t return anything. Hopefully not anymore.)

If you have ideas for any other features or if you want to have a look at the source, comment here or join #fosskelog. lafoobot’s code is licensed under GPLv2!

Other than this, the summer has been relatively uneventful but for the two FOSS events I attended. Yes, two events, Sat and Sun, both by Twincling (There are two different Twinclings! Don’t ask me why) Hoping to have some more action this summer!

PS: There’s a Big discussion presently on whether lafoobot is a he or a she. ;) What do you think?

Home Coming!

I’ll be on board the Amaravathi Express in less than three hours from now! Bags packed, I’m waiting for the sun to rise, the World to wake up.

I have set my self an objective of completing 40 problems from Project Euler. I have done 39. [With exams going on I consider it good progress] I will be attempting to push off the last one before leaving. Here I come, Project Euler. Here I come, Hyderabad!

Not so Floppix…

***Disambiguation: The original Floppix [Linux on 2 Floppies] is here.

I, post this from a remastered version of Knoppix that we named Floppix!

It all actually began, with me deciding to do a bit of Emacs-ing at home during the winter hols but I don’t have a Linux box at home. Live-CD is the way to go! But then Emacs doesn’t *usually* go with Live-CDs. So I decided to get around making my own. :) [Dunnet, an Adventure game in Emacs, played a crucial role in motivating me to go ahead!] The rest as they say is history….

Actually, I tried a debootstrap from my Debian etch but I couldn’t manage to get the initrd working. [I ain’t this geekish, its only that I am incapable of putting these terms in a simpler language.] After numerous futile attempt, I gave up for the time being and that’s when the genius of Voodoo came in, he took a different route. Remastering Knoppix.[Modifying an existing Live-CD of Knoppix]

I won’t get into the exact details of how we got about it. There’s a lot of online help available for that.

A few highlights, for the curious reader…

  • got rid of the default KDE and replaced it with Fluxbox. [actually Floppix = Fluxbox + Knoppix :P]
  • added emacs, cmucl, slime, octave, linuxdcpp, vlc and others.
  • got rid of other packages which we weren’t going to use.
  • changed the boot message
  • changed the default background image.
  • removed the default boot image [ couldn’t change it as the image we chose wasn’t being properly converted to lss16 format ]
  • tested the CD with Qemu [size of the iso got more than 700MB]
  • removed a few other not so regularly used packages [including wine!]
  • burnt the CD
  • Logged in!

Now, that I’ve logged in, I realize we managed to quite a decent job. Obviously we weren’t perfect. It was the first time and done in quite a hurry. [btw, we have our end-sems going on; I’ve no exam tomorrow though] I was able to listen to music, connect to the DC, play a game of dunnet and make a blogpost! We also missed a few packages, for instance a screen shot capture program! But it ain’t too bad, still a long way to go though!

Just hoping we manage to make it better, as we get better at it! ;)

Here comes FloppixV0.1!


Update [3/1/08]: I never knew that GIMP could capture screenshots! ImageMagick can do that too. I had two programs at hand and thought I had none! Here’s a Screenshot of the Floppix Desktop.
Floppix Desktop
Picture Source [for the Background Image] : 9


Update 2 [4/1/08]: There is already a floppy distro of Linux called Floppix. I knew about this only when some one searching for it reached my blog. Guess I should do something about this. [I’ll be able to do it only after getting back to campus,though]

Life “In-gen”

Another post, with nothing concrete to say…

  • These are just a few random musings, for those curious about my life and for the good health of my Blog which is so close to its death..
  • College (+ Hostel) is amongst few places, that everyone on Earth(& elsewhere) *must* get the chance to be in. There’s a whole new world out here, with hell a lotuva things you can do, Here and Only Here… [I am not, by any means, talking of acads!]
  • Projects. Yes they are a part of almost all my random stuff… cos I just Love them, when they are self-assigned and off-hand. They get even more exciting, when the learning curve is Steep!
  • Deadlines can be wonderful things, if only I learn to respect them.
  • Lab-Tests, i guess, are amongst the most hyped tests in the World! They aren’t worth all that fuss.
  • Grades ain’t everything in Life. Not even if you are doing Engineering!
  • I live amidst wonderful singers, marvelous music composers, facile lyric writers, cool Hackers, amazing photographers, inspiring poets and what not. [Why the hell do people then, look just for the “industrious” grade scorers?]
  • Music and Sleep are Great Healers. Laughter, too, is a close competitor.
  • GNU/Linux is addictive. More n more people getting addicted, everyday!
  • RHCE’s got a pretty interesting test. Its rare to be interested in undergoing the torture of a test, ain’t it?
  • Rules seem to be total crap, until you get the chance to look at them from above.
  • Quark’08 coming up! Gottu gear up for it!
  • Comprees?? They don’t bother me so much any more.
  • Finally, for those who found all the above stuff boring and dumb… here’s some food for thought

    The Best things in Life aren’t Things…

Best Things in Life

Lost Control??

Caution: This post is just some arbit crap, that arose from some internal probing. Its utterly worthless for any reader other than myself. This could possibly even be classified narcissistic or whatever that’s called.

Presently, I’ve got tests going on and they are half way through. Considering this and the fact that its been over a month since I last posted, writing a post now doesn’t make much sense, does it?[If my blog’s been dormant so long, can’t it be so for a couple of days more?] But things I’ve been up to off-late, don’t make much sense. [in the past, at least they made sense to me if not to others.] This post is just about that, going from being senseless to at least being less sense [and hopefully, to being sensible]

I’ve screwed up the tests so far, and don’t think will be doing much better in the others too. Even otherwise, I haven’t done anything good, anything that feels great, anything that feels right, in the past couple of months (years?? decades??) [except for one video with ‘the gang’, i didn’t contribute much though]. Let alone accomplishing something nice, I haven’t even been attempting anything decent enough. My priorities have gone haywire, or may be not, may be I’m just doing things that are very low on the scale or may be I’m not doing anything, things are just hapenning.

  • I’ve slept through ‘n’ classes both inside and outside the classroom
  • I’ve stayed awake all night downloading some crap for my comp.
  • I had been worrying about keeping my blog alive. Made numerous attempts to post something, even if its no big deal not posting regularly.
  • Changed 4 different OSes in a couple of days!
  • been ages since I last visited the Library.
  • Slept through the morning lotsa times, even if I enjoy EBER-ing
  • Bunked bathing just because i’ll have more clothes to wash!
  • ….
  • The list is pretty long. It ain’t sensible to be putting down the whole thing here.

I guess I’ve just been trying to escape things. Running from doing important stuff. I’ve had enough. Its high time I do something about it. I’ve decided to get in control of my life, rather than being controlled by arbit stuff like sleep, a blog, a grade, an addiction, a song, a cricket match, a rain, a meal, a game of carrom, a prof’s accent, a course, a test or other such trivialities.

I wish to get back on track!!
..to get back into the habit of doing things I love, at the time and place I like.
..to doing things that give me joy, in the true sense. Not momentary, passing pleasures.

Hopefully, with some effort, I will. (A nudge is all it takes.)

btw, if this post was a total bouncer, this is for you….

Time is the wisest Counselor. Exams come in a close second! — punchagan

Teach Yourself Programming in Ten Years!!

Here’s an interesting article by Peter Norvig, Director of Research Google
I have just copied the whole essay here… also here’s a link to the Original one


Why is everyone in such a rush?

Walk into any bookstore, and you’ll see how to Teach Yourself Java in 7 Days alongside endless variations offering to teach Visual Basic, Windows, the Internet, and so on in a few days or hours. I did the following power search at Amazon.com:

     pubdate: after 1992 and title: days and   (title: learn or title: teach yourself)

and got back 248 hits. The first 78 were computer books (number 79 was Learn Bengali in 30 days). I replaced “days” with “hours” and got remarkably similar results: 253 more books, with 77 computer books followed by Teach Yourself Grammar and Style in 24 Hours at number 78. Out of the top 200 total, 96% were computer books.

The conclusion is that either people are in a big rush to learn about computers, or that computers are somehow fabulously easier to learn than anything else. There are no books on how to learn Beethoven, or Quantum Physics, or even Dog Grooming in a few days.

Let’s analyze what a title like Learn Pascal in Three Days could mean:

  • Learn: In 3 days you won’t have time to write several significant programs, and learn from your successes and failures with them. You won’t have time to work with an experienced programmer and understand what it is like to live in that environment. In short, you won’t have time to learn much. So they can only be talking about a superficial familiarity, not a deep understanding. As Alexander Pope said, a little learning is a dangerous thing.
  • Pascal: In 3 days you might be able to learn the syntax of Pascal (if you already knew a similar language), but you couldn’t learn much about how to use the syntax. In short, if you were, say, a Basic programmer, you could learn to write programs in the style of Basic using Pascal syntax, but you couldn’t learn what Pascal is actually good (and bad) for. So what’s the point? Alan Perlis once said: “A language that doesn’t affect the way you think about programming, is not worth knowing”. One possible point is that you have to learn a tiny bit of Pascal (or more likely, something like Visual Basic or JavaScript) because you need to interface with an existing tool to accomplish a specific task. But then you’re not learning how to program; you’re learning to accomplish that task.
  • in Three Days: Unfortunately, this is not enough, as the next section shows.

Teach Yourself Programming in Ten Years

Researchers (Hayes, Bloom) have shown it takes about ten years to develop expertise in any of a wide variety of areas, including chess playing, music composition, painting, piano playing, swimming, tennis, and research in neuropsychology and topology. There appear to be no real shortcuts: even Mozart, who was a musical prodigy at age 4, took 13 more years before he began to produce world-class music. In another genre, the Beatles seemed to burst onto the scene with a string of #1 hits and an appearance on the Ed Sullivan show in 1964. But they had been playing small clubs in Liverpool and Hamburg since 1957, and while they had mass appeal early on, their first great critical success, Sgt. Peppers, was released in 1967. Samuel Johnson thought it took longer than ten years: “Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.” And Chaucer complained “the lyf so short, the craft so long to lerne.”

Here’s my recipe for programming success:

  • Get interested in programming, and do some because it is fun. Make sure that it keeps being enough fun so that you will be willing to put in ten years.
  • Talk to other programmers; read other programs. This is more important than any book or training course.
  • Program. The best kind of learning is learning by doing. To put it more technically, “the maximal level of performance for individuals in a given domain is not attained automatically as a function of extended experience, but the level of performance can be increased even by highly experienced individuals as a result of deliberate efforts to improve.” (p. 366) and “the most effective learning requires a well-defined task with an appropriate difficulty level for the particular individual, informative feedback, and opportunities for repetition and corrections of errors.” (p. 20-21) The book Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life is an interesting reference for this viewpoint.
  • If you want, put in four years at a college (or more at a graduate school). This will give you access to some jobs that require credentials, and it will give you a deeper understanding of the field, but if you don’t enjoy school, you can (with some dedication) get similar experience on the job. In any case, book learning alone won’t be enough. “Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter” says Eric Raymond, author of The New Hacker’s Dictionary. One of the best programmers I ever hired had only a High School degree; he’s produced a lot of great software, has his own news group, and made enough in stock options to buy his own nightclub.
  • Work on projects with other programmers. Be the best programmer on some projects; be the worst on some others. When you’re the best, you get to test your abilities to lead a project, and to inspire others with your vision. When you’re the worst, you learn what the masters do, and you learn what they don’t like to do (because they make you do it for them).
  • Work on projects after other programmers. Be involved in understanding a program written by someone else. See what it takes to understand and fix it when the original programmers are not around. Think about how to design your programs to make it easier for those who will maintain it after you.
  • Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).
  • Remember that there is a “computer” in “computer science”. Know how long it takes your computer to execute an instruction, fetch a word from memory (with and without a cache miss), read consecutive words from disk, and seek to a new location on disk. (Answers here.)
  • Get involved in a language standardization effort. It could be the ANSI C++ committee, or it could be deciding if your local coding style will have 2 or 4 space indentation levels. Either way, you learn about what other people like in a language, how deeply they feel so, and perhaps even a little about why they feel so.
  • Have the good sense to get off the language standardization effort as quickly as possible.

With all that in mind, its questionable how far you can get just by book learning. Before my first child was born, I read all the How To books, and still felt like a clueless novice. 30 Months later, when my second child was due, did I go back to the books for a refresher? No. Instead, I relied on my personal experience, which turned out to be far more useful and reassuring to me than the thousands of pages written by experts.

Fred Brooks, in his essay No Silver Bullets identified a three-part plan for finding great software designers:

  1. Systematically identify top designers as early as possible.
  2. Assign a career mentor to be responsible for the development of the prospect and carefully keep a career file.
  3. Provide opportunities for growing designers to interact and stimulate each other.

This assumes that some people already have the qualities necessary for being a great designer; the job is to properly coax them along. Alan Perlis put it more succinctly: “Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers”.

So go ahead and buy that Java book; you’ll probably get some use out of it. But you won’t change your life, or your real overall expertise as a programmer in 24 hours, days, or even months.


References

Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985.

Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19.

Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989.

Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.


Answers

Approximate timing for various operations on a typical 1GHz PC in summer 2001:

execute single instruction 1 nsec = (1/1,000,000,000) sec
fetch word from L1 cache memory 2 nsec
fetch word from main memory 10 nsec
fetch word from consecutive disk location 200 nsec
fetch word from new disk location (seek) 8,000,000nsec = 8msec

Appendix: Language Choice

Several people have asked what programming language they should learn first. There is no one answer, but consider these points:

  • Use your friends. When asked “what operating system should I use, Windows, Unix, or Mac?”, my answer is usually: “use whatever your friends use.” The advantage you get from learning from your friends will offset any intrinsic difference between OS, or between programming languages. Also consider your future friends: the community of programmers that you will be a part of if you continue. Does your chosen language have a large growing community or a small dying one? Are there books, web sites, and online forums to get answers from? Do you like the people in those forums?
  • Keep it simple. Programming languages such as C++ and Java are designed for professional development by large teams of experienced programmers who are concerned about the run-time efficiency of their code. As a result, these languages have complicated parts designed for these circumstances. You’re concerned with learning to program. You don’t need that complication. You want a language that was designed to be easy to learn and remember by a single new programmer.
  • Play. Which way would you rather lern to play the piano: the normal, interactive way, in which you hear each note as soon as you hit a key, or “batch” mode, in which you only hear the notes after you finish a whole song? Clearly, interactive mode makes learning easier for the piano, and also for programming. Insist on a language with an interactive mode and use it.

Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important thing is that you choose and get started.


Appendix: Books and Other Resources

Several people have asked what books and web pages they should learn from. I repeat that “book learning alone won’t be enough” but I can recommend the following:


Tag Cloud

%d bloggers like this: