For clojure, I'd actually recommend using light table. From my experience with the latest dev versions, the learning curve isn't hard at all and immediately having your code evaluated is pretty powerful and intuitive. [I started learning clojure recently as well]
True -- any visualization that doesn't get the message across is just about useless.
Luckily we have very tight feedback loops -- and I can push new versions every couple of hours so I can customize it really fast to suit their needs/mental models.
I disagree with this post: there's another use case for visualizations -- consuming data as fast as possible to take action (eg firefighting). I work on tools for engineers, and I've found that a rich, non-standard visualization that people can learn to parse quickly after a tiny bit of initial acclimatization -- but showing them exactly what they need can help a lot.
I just tried the Beethoven intro lesson for guitar -- first off, these are awesome for me as an almost-n00b guitar player!
Two suggestions:
- When you're holding really long notes the interval to see the next note is really small [the tab moves forward only once the long note ends so you don't have as much time to transition your fingers because you don't know/remember the next note; while in practice these should be the easiest transitions]
- Indicate the note lengths as well in terms of fourth or eighth notes, for those of us who like to count along.
My attempt at hammering the xkcd servers -- also colours missing tiles correctly (black/white depending on south/north): http://explog.in/xkcd.html
[edit: basically lays everything out in a single huge page so that you can scroll instead of dragging]
For those who don't tweak their toolchains spending one chunk of time and forgetting about them is obviously better than doing nothing else, but personally I recommend continuously evaluating what you do on the shell (well, obviously this can be generalized, but I won't go there) and tweaking away your pain points and repetitive tasks.
Some specific recommendations --
- Keep a version controlled `dotfiles` folder, link important files to it and share it across dev envs.
- Add shortcuts to modify your vimrc (<leader>v) and apply it (<leader>V) to help you tweak fast and get instant feedback.
- Using an approximation of REPL for any work I do has been the single largest productivity boost I have: minimize keystrokes between (Write Code) <> (Build/Compile/Run/Whatever/Get feedback) <> (Write code). I started using vimux recently (lets you run commands in a split pane without actually leaving the pane with vim installed) and have never been happier.
- While speaking of nice fonts to write code in, http://www.google.com/webfonts/specimen/PT+Mono is a new favourite of mine. Of course, your mileage will vary.
(edit: formatting)
I think that you _can_ join ml-class and db-class right now (the currently on going set of courses). It's only ai-class that has closed enrollment.
I think you're referring to Knuth -- in the introduction to TAOCP he compares the series to a cookbook, comparing recipes and algorithms.
You might want to edit the title and prefix an "Ask HN:" so that more people can respond to your question.
Hmm. 1) Fake name, yes -- I wasn't aware of that practice; not that common in India, at least in my friend circle.
2) That was what I meant -- syncing actual details with your anonymous persona.
I am supposed to _start_ work at FB assuming I get a visa.
I'm a bit curious about why a search for name won't show the alternate persona? I've had friends who made 2 profiles and both used to show up whenever I typed their name in; and his # being listed publicly doesn't affect the argument either way.
Edit: Reply to child comment by jarofgreen: apparently the comments are too deeply nested to reply directly: "using FB wrong therefore deserves to have his privacy violated"
I've never stated that he _deserved_ to get his privacy violated; it's simply that the behaviour of any s/w is based on what settings you choose. Your argument would have to be that it's the S/Ws fault for not being transparent enough/not easily understandable enough leading the user to be misled - but the general response seems to be that the s/w is actively out to get the user.
I'm not sure that's such a huge sin -- technically I think FB says that you cannot have more than 1 account/actual person; I'd imagine when this `feature` was baked in the engineers didn't imagine that anyone would maintain an account that 1) they would keep hidden from friends _and_ 2) add their phone numbers to.
At the very least, the friend could have blocked the set of people he didn't want to know about his preferences from the "gay" account: otherwise what stopped a simple search by name from showing both accounts?
I'm not particularly sure about this, but why would revealing the people who have stored YOUR phone number to YOU be such a big deal?
I'm assuming phone number verification checks that you own the number via SMS; so it just acts as a reverse-stalker (I'd be worried about people I _don't_ know having my phone number saved).
I'm an amateurish PHP dev; so I can't suggest specific projects to get into. BUT I've found the best way to go about getting into any open source project probably would be:
- Choose a project you've used if you can. (I went with WordPress for example)
- Decide whether you want to try helping out with the core project or you would prefer to make an add on
- Make sure you follow the docs, get the build for the project ready -- or at least try to following what the project's docs tell you to. Do your personal best to get a hang of the source--particularly the area where you're aiming at. Try your hand at writing some code.
- _Now_ reach out to the core developers and the community (IRC, mailing lists, forums)-- discuss any problems you faced getting your dev set up ready, writing/testing code or any concepts you didn't understand (don't ask stuff that can be answered with a lmgtfy), your idea. Ask for a simple bug to fix if you haven't managed to find anything.
- Develop it further -- get feedback from devs and end users -- release/submit a patch. Based on feedback, iterate and release the next version/new patch. Repeat!
[edit] Corrected formatting
noprocrast is time based. this extension only lets you submit links, and view the discussions of "Show hn" links that you created. visiting any other discussion on hacker news redirects you to a quote by richard hamming.
Win: Crimson Editor -> Gvim Linux: vim -> Gvim
A small chrome extension I've written by digging through the way facebook loads ticker updates: lets you check the feed without having to visit facebook.
All completed in 24 hours -- started by learning how to write a chrome extension, pretty printing and reading fb javascript, lots of hit and trials to find out what worked and what didn't -- and finally releasing it on the app store.
Slightly better screenshot here: http://explog.in/blog/2011/09/22/Chromicker/
For a concise, very readable book that I've used to get myself up to speed with algorithms in preparation for interviews you can try reading Algorithms by Papadimitrou, Dasgupta, Vazirani. You can grab a pdf at [Papadimitrou's website][1].
While the UI is good with animations and a nice design, I don't see anything that will make me shift completely away from FB: I might use it for hangout as an alternative to calling over google chat/skype. That's about it.
Just judging by the symptoms without looking at the code, I'd say that perhaps you're only animating the secondary rectangle that mimics the first one when the primary rectangle intersects with the wormhole's edge.
When we move the first rectangle too fast towards the top, some of the events might get missed and the corresponding rectangle doesn't _exactly_ mimic the first one. As no more events are fired, it gets stuck.
You might want to introduce some sort of sanity check for when a rectangle exits the wormhole.
Well, two of the three co founders in lal happen to be Indian Engineers too: http://lal.com/about/hiring (link gives founder profiles).
er, "GOT"?
As someone about to join Facebook for his first job in a few months, posts like these make me even more enthusiastic about starting work!
It would have been even more cool to work alongside the creator of firebug, though.
Allow me to clear up one tiny misconception—the professors and the way the syllabus is taught at IITs (at least D) is not that much better either—a large of my part of my syllabus in solid mechanics, etc. (just to name a specific example) was simply glossed over as facts to ingest without even touching the mathematical foundation. I've had to spend a really large part of my final year project revisiting maths, solid mechanics to get that foundation and then build upon it to make a good project.
There have also been particularly memorable incidents where a professor teaching surveying got confused about what sin\theta was.
A bit of background about me before I add my 2 cents: because of my rank in an entrance examination (JEE), I ended up majoring in Civil Engineering and managed to work towards a minor in CS (which was, and is my passion). I'll be graduating in a few months.
I've experienced a bit of both worlds—I picked up books on Data Structures (including Red Black trees), attempted to implement Rjindael in C++ (without understanding any of the underlying math) in high school, learnt PHP/JS/CSS/C++ and started building from there.
What I've observed is—as a self taught programmer the biggest disadvantage is that you don't know what all is available/standard—as someone else mentioned in the thread, I did not know about parsers until I managed to take a course in Programming Languages.
Since I realized that there was so much I did not know, I've tried to make it a point to keep asking my batch-mates in CS what they are reading, picking up textbooks recommended by professors in class; reading other books as recommended on HN, and elsewhere (SICP, Learn you a Haskell..., started reading TAOCP, etc.) and have attempted to at least match my batch-mates who are CS undergrads. At the very least—try to get a fairly broad idea about known solved and unsolved problems.
The biggest advantages an avg CS undergrad has over me is that s/he has the credentials (which, I've tried to match by having my own open source project, doing interns in well-known companies, etc.), and that s/he is exposed to much more theory than I would ever be without actually having to do much beyond attending classes (for which I have to go the extra mile).
The advantage _I_ have over the other, standard CS guys is that I have the freedom to find out more about what I really want to do, and explore/follow certain areas which I find more interesting without being bound by academia (tests, reports, stupid & pointless assignments), and in general, perhaps—have a lot more fun while learning.
I found the theme rather comfortable for using in the terminal; however I set TERM=xterm-256color so that vim would also pick up the light colour scheme—there seemed to be some issues with the background colour on gnome-terminal/Ubuntu.
Thanks!
I'd suggest starting with Mozilla Dev Network/Javascript [1] for learning Javascript. Going through how JQuery/YUI/[library of choice] is written is pretty interesting and a great learning experience.
I've been looking into Haskell for web development—in particular, the snap framework. Did you consider using other functional languages before choosing OCaml, as in does OCaml have any specific advantages for web dev?
I've tried Ubuntu on a C series Vaio (long time back) which pretty much died on me a hardware failure at a time within 2 years and right now am using a 15'' HP Probook (4510s) which runs Ubuntu like a dream. The ATI drivers are picked up directly and the only issues that I've run into involve screen brightness screwing up after suspend/resume -- HP seems to be able to support Ubuntu really well.
This laptop didn't cost that much -- around $1000 but the build quality isn't that good -- though the keyboard is excellent (with a numpad).
As a side note -- the best solution seems to be getting a MBP and then running Ubuntu virtually for development and OSX stuff for everything else.