Hacker News new | past | comments | ask | show | jobs | submit login

Grep. Grep is about the single best fucking thing ever written by the hands of man. Shakespeare can suck it, I'm telling you, grep is IT.

Edited to add: Git. Git is also a thing of beauty. Who knew revision control could be made to not suck? Sure, SVN was a welcome relief from the unrelenting stone faced hell that was CVS, but that's damning by faint praise.

Git is too complex to learn. The internal stuff is beautiful (if you take the time to grasp it). But the UI is just horrible, in my opinion.

I love git, and use it for all of my projects. But my love for git might also be because I have spent so much time on learning it.

Grep? Grep is the redheaded bastard sibling of the actual best tool ever written, which is sed.

I love sed too, but you should mention QED (1965!) here, which is actual proto-mother of almost all text-related goodies. Let me quote a nice wikipedia paragraph, which covers it.


ed went on to influence ex, which in turn spawned vi. The non-interactive Unix command grep was inspired by a common special uses of qed and later ed, where the command g/re/p means globally search for the regular expression re and print the lines containing it. The Unix stream editor, sed implemented many of the scripting features of qed that were not supported by ed on Unix; sed, in turn, influenced the design of the programming language AWK, which in turn inspired aspects of Perl.

And I love AWK too.

> Grep. Grep is about the single best fucking thing ever written by the hands of man.

I like and use grep. But, as a programmer, I like ack[1] much better than grep.

[1] http://betterthangrep.com/

I prefer bzr to git.

Git is the quintessential example of requiring the users to get inside the author's head if they want to avoid disaster, and thus falls into the "steaming pile of crap" category. The things "git merge" will do to your tree are not defined by what a user might reasonably want or expect but by what's easy and convenient for the git authors, and there is simply no way to understand "git reset" without thinking about the internals of how git tracks changes. Simple commands do bizarre things that are almost never needed or desired, while simple and common tasks require non-obvious (and poorly explained) options. Git is a powerful and useful tool, but it is also the poster child for what is wrong with modern software development.

Yep, I agree. I've used git for 5 months. I just know for sure what 3 commands do: git commit -a and git push and git add.

Ask me what git merge does, or how to branch, or even how to delete a file in a repository (w/o deleting it from your local), or how to revert back to another version, or how to even check out, and I'll say I dunno. I read the documentation, but am still confused. I sometimes feel like I'm dumb because I feel everyone loves git and everyone gets it. Glad to hear that I'm not alone.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact