Hacker News new | past | comments | ask | show | jobs | submit login
Beautiful Tools (mahdiyusuf.com)
103 points by mgrouchy on June 10, 2012 | hide | past | favorite | 51 comments



I've been talking about this a lot recently.

It doesn't surprise me at all that so many beautiful iOS apps are created in XCode, which is certainly the most beautiful IDE I've ever used. With Android, on the other hand, it's hardly a surprise when you look at Eclipse that the apps produced are... uninspired.

It's also echoed by Linus Torvalds when he evangelized the MacBook Air a few months ago. That article led directly to me buying an Air (which had been on my mind anyway) in favor of lugging around the bigger Macbook Pro supplied by my employer. The Air is completely silent, has stunningly beautiful lines, and a screaming fast SSD. I could use a couple more gigs of ram but 4GB is workable and the trade-off is one I'm happy with.

Outside my craft, I have a real passion for high quality tools that are made to last a lifetime. Truly good knives in the kitchen, a good set of enameled cast iron and stainless cookware, beautiful and simple appliances like the Vitamix and Moccamaster. In the bathroom a high quality badger hair shaving brush and a classical safety razor. In the garage high-quality tools that feel good in your hand and won't break when you're using them.

I could go on for another 5 paragraphs. Suffice to say, +2 from me.


Apple's great achievement has been the cultivation of this intense variety of brand tribalism.

The purchase is not merely an exchange of money for a product that gives pleasure or does what it's expected to. It certainly isn't the guilty pleasure of someone who recognizes that they are consuming more than they really need to. No, it has a kind of ceremonial importance. It is a badge of social honor and distinction, a proof of discerning taste which sets the buyer apart from the grubby masses and puts them in the company of Personalities even as they enjoy the new-box smell and savor the kinds of product claims that we are jaded to in most advertising.

So it is that a post about configuring free tools for productivity results in a paean to Linus Torvalds, MacBook Air, Vitamix, Moccamaster, and your real passion for beautiful, most beautiful, stunningly beautiful, truly good, beautiful, simple, high quality, high-quality, feel good. The 99 names of Apple.


You're being aggressively unfair and selective in how you interpreted his comment. Why don't you go through the reasons WHY he thought his purchases were beautiful, most beautiful, stunningly beautiful, truly good, beautiful, simple, high quality, high-quality, feel good? His Macbook air is completely silent and has a screaming fast SSD. He likes garage tools that feel good in the hand and that don't break when using them. These are perfectly practical and valid reasons to like one's tools that have nothing to do with brand tribalism or hero worship.


I'm not talking about computers and I have no interest in going through a laundry list of marketing claims for any computer. Many computers are silent and SSDs are fast in general. People are entitled to do what they want with their money and if it gives them joy then that is great.


Wow, what a comment. People use to argue that Apple's products weren't higher quality than competitors, and people just bought them "because of the marketing." Now that the higher quality is unanimously agreed upon, you're arguing that even liking a higher quality product is just marketing. It's a great lesson for us all that some people will never stop digging.


"Wow, what a comment."

No one could even claim unanimity inside the apple user pool regarding that, let alone outside. Better use some relativity rather than portraying oneself as someone wrapped up by the marketing message.


The children here are potentially misinterpreting this. I don't see this comment as being judgmental. The fact that Apple has accomplished this does NOT mean that the poster is saying Apple adherents are mindless drones or fanboys.

What's inherently wrong with "brand tribalism" or "proof of discerning taste"?

I read this is a tribute to Apple, nothing more.


You are right. I am saying Apple's branding is masterful. I'm not saying that Apple products are bad or that the people who buy them are stupid. I'm not saying anything about those because I don't think there is anything interesting to say; I only see computers and people buying computers. Brand tribalism is a great thing if you can get it for your product.


[deleted]


Way to be overly sensitive.


>The purchase is not merely an exchange of money for a product that gives pleasure or does what it's expected to. It certainly isn't the guilty pleasure of someone who recognizes that they are consuming more than they really need to. No, it has a kind of ceremonial importance. It is a badge of social honor and distinction, a proof of discerning taste which sets the buyer apart from the grubby masses and puts them in the company of Personalities even as they enjoy the new-box smell and savor the kinds of product claims that we are jaded to in most advertising.

Mumbo jumbo --are you into "french social theory"?

I, for one, used OS X when it was quite a novelty (10.2 days), and I use it now that everybody and his dog uses it. Neither popularity nor exclusivity has anything to do with it.

I don't care about "badges of social honor", I _do_ care that it's a fucking full blown UNIX with all the commercial programs I need also available, and that doesn't require constant tinkering to get basic things like close-lid/sleep or GPU acceleration or multimedia working. That the hardware is well made also counts for a lot.

Nothing about "blindly buying a brand". Apple can also make flops: pre mighty mouse Apple mice, Apple TV, the Finder, XCode, FCP X 1.0, Safari (ho hum), pricy adapters, and lots of other things.

There are like 100,000,000 million Apple stuff owners in the US.

You seriously believe those are 100 million fanboys???? (not to mention that if your explanation includes "mass hysteria" then you have to know you're talking BS). They are just people that bought a specific fucking brand, because that what they wanted to buy, given the alternatives. The "reality distortion field", "fanboys" etc, mostly BS from people trying to justify being cheapskates, or feeling some envy for others that can afford more expensive gear.


Your post illustrates Apple's success.

Perceiving a criticism of Apple, you jump in with both feet. Clearly Apple isn't just something you bought. You start with a pointedly personal comment, so it seems that you took the comments about Apple personally.

You used OS X before it was cool, proving that your purchases were not about jumping on a bandwagon and that exclusivity has nothing to do with it.

You enumerate virtues of Apple products, in defense of your purchases. You clearly see no reasonable alternatives to them; indeed, you were forced by the total inferiority of other products. Consider what this implies about the people who buy other brands: they lack discernment, or they are poor.

You clarify that you are not buying blindly. I didn't say anything about this, so it is clearly important to you. I understand: your purchase was based on the great virtues of the product which set it apart from the competition. And your purchases set you apart from the people who buy other things.

I don't know what you are talking about when you get into fanboys and mass hysteria. I gather that you are responding to some tribal enemy, because you go on to accuse them of being cheapskates or envious people. Very personal!


People always take OS criticism personally. Some more than others. You could switch out Mac for Windows or any other platform and it wouldn't matter. I think he's just using OS X as a point of reference because it's what he uses. Yeah, I could see a little bit of taking your comment personally in there but he still makes a good point. Furthermore, your attack of Apple seems just as much like a justification for your own choices as anyone's defense of any platform seems like a justification of theirs. It's really hard to not take this stuff personally, especially for developers, because our choice of platform becomes part of our identity. I don't know of any other profession where you get so close and attached to your tools; choosing them, configuring them, getting an efficient workflow down. I always wondered why we get so religious about our choice of technologies but after realizing this it's not hard to understand anymore.


>Your post illustrates Apple's success. Perceiving a criticism of Apple, you jump in with both feet. Clearly Apple isn't just something you bought. You start with a pointedly personal comment, so it seems that you took the comments about Apple personally.

Nice try, Freud, you only forgot that this is a public forum, and jumping "with both feet" into discussions is what we _do_ here. I participate into most of the discussions, and I like to leave "pointedly personal comments" all the time.

>You enumerate virtues of Apple products, in defense of your purchases. You clearly see no reasonable alternatives to them; indeed, you were forced by the total inferiority of other products. Consider what this implies about the people who buy other brands: they lack discernment, or they are poor.

Or they just don't have the same needs as mine, Sherlock. Haven't thought of that, eh?

I studied CS in mid-nineties, so I run Linux at the time, and I wanted a usable UNIX for Python/Java work that could also run MS Office and audio/MIDI sequencing programs (my hobby). So, I need to run: UNIX + Adobe CS + (Reason||Logic||Cubase). If you can take a minute from your psychology for dummies manual to find me a better OS X alternative for those, I would be grateful...

>You clarify that you are not buying blindly. I didn't say anything about this, so it is clearly important to you.

Oh, I see what you did here. Are you still in high school, and just discovered this "pop psychology" thing? You wrote a whole comment implying people are idiots and/or caught on the marketing hype for buying Apple, even calling it "brand tribalism", and now suddenly you "didn't say anything about this". Well, you did.

>I understand: your purchase was based on the great virtues of the product which set it apart from the competition. And your purchases set you apart from the people who buy other things.

Seems like you're trying hard to feel superior to other people because you're ...not feeling superior to them. Like, people are generally misguided to feel superior based on their purchases but your deep insight cuts through all that bullshit. Well, whatever makes you feel good.

>I don't know what you are talking about when you get into fanboys and mass hysteria.

What I was talking about is that the common "fanboy" accusation ("Apple purchasers are fanboys") makes no sense when talking about 100 million people. And neither do incoherent BS notions like the "reality distortion field", like millions of consumers suddenly had some kind of mass hysteria and couldn't see reality anymore.

How about: people evaluate what they need, what they can afford and what they want and buy accordingly?

>I gather that you are responding to some tribal enemy, because you go on to accuse them of being cheapskates or envious people.

You gather wrong. Reading comprehension is a bitch, though, so I sympathize. What I say is that people that talk ill of people buying Apple, with BS notions (from your dime-a-dozen pop-psychology, to the "fanboy" or Reality Distortion Field accusations), are probably either envious or cheapskates. For, if you are not envious, then you don't even care what others buy or not. Oh, and you keep using this word "tribe". I don't think it means what you think it means.


The "reality distortion field", "fanboys", etc, mostly BS from people trying to justify being cheapskates, or feeling some envy for others that can afford more expensive gear"

I agree that it's BS but I don't think the reason is mostly about envy or cheapness. I believe it's about feeling superior for not using the expensive trendy thing. It's a way of saying "I'm good at my job and more skilled than you are which is why a MacBook is beneath me. I prefer the Linux machine because I'm one of the elites who knows how to really use it".

People are just religious about their OS, even the ones who claim not to be and go off on diatribes about whatever gear being too expensive or just trendy. I'm a Mac and Xubuntu user who has recently been forced to develop on Windows while at work and I can say that beauty is important and the Mac exudes beauty. Win7 is decent too. But I bring it up because as a user of all 3 OSes I'll often get asked what I develop on. Instead of explaining in detail how I use all 3 at different times and appreciate each for their specific upsides I'll usually just say "Mac" or "Linux". No matter which I choose to say though the person asking usually always says "oh, how come you don't use Mac, it's all Unixy but pretty and easy" or "Why aren't you using Linux? Are you a fanboy or need your hand held to use a computer?". In all of these cases it's obvious the person has a superiority complex about their choice of platform.

And there's a hierarchy of how people think they're superior for using whichever one with Windows at the bottom:

If you use Windows, well, people just like to hate on Windows (and I personally don't blame them but I can still see why some like it).

The Mac users talk shit about Windows users because they believe they're part of an elite club full of design-minded hipsters. Web dev Mac users will add that Windows sucks for development (which it kind of does unless you're deploying to a full MS stack).

Linux users look down on both Mac and Windows users. They'll say the Mac users prefer form over function, need their hand held, don't like to control their PC (implies lack of skill), and are just following trends. They'll say much of the same about Windows with some added remarks about MS being the devil (as it pertains to FOSS).

No matter what one says about the other I think it's all about superiority. People justify their choice of technology by making themselves believe their choice is the best. They tend to ignore the fact that people have certain personal preferences, different use cases, and different backgrounds when making these criticisms. Developers especially will tend to think every other developer has a similar workflow and is working with the same technologies, therefor their choice of platform is what everyone else should use because "I get shit done more efficiently with this so if others don't that means they're somehow less skilled than me". Envy and money no doubt do play some role but I think it plays a smaller role than you say it does.


>It doesn't surprise me at all that so many beautiful iOS apps are created in XCode

Seems like a spurious correlation to me. Both Xcode and the iOS frameworks were designed by Apple, a company known for their excellent interface design and aesthetically pleasing look and feel. iOS apps aren't beautiful because Xcode is beautiful. iOS apps and Xcode are beautiful because Apple designed their interface elements.


Completely agreed. It's basically the 'buy it for life mentality'. But a very high quality product once, take good care of it, use it for life. No more crappy throw away culture.

If it's any indication of that being a budding trend, there's even a subreddit for it:

http://reddit.com/r/buyitforlife


Did you get the 11" or 13" MBA?


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)


> Using an approximation of REPL for any work

Surprisingly often, this can be accomplished by simply running "watch" in a separate terminal window. (see also http://www.profv.de/vim-watch-wmii)


The font is nice but I'd like one with a sexy `' pair, like they used to be before ASCII went all 8-bit on us. ;-) Also, a dollar that only has the vertical line(s) beyond the S avoids it becoming too heavy compared to glyphs around it.


The fonts he mentions aren't bad; I think though, that Monaco is quite possibly the finest font ever made. I've yet to see a font that beats its cleanliness and legibility.


May I also recommend DejaVu Sans Mono as a great terminal font (I have it at 14pt). Pulled the idea from here: http://jtnimoy.net/workviewer.php?q=178


DejaVu Sans Mono is a must have (or a must try at least). It has 10x more Unicode glyphs than any other monospaced font out there, and is easy on the eyes (close call with Monaco on readability I'd say). Menlo is just an Apple-botched version of DejaVu (saying this as an Apple fan btw), without the extra glyphs.

With DejaVu, you can easily get awesome things like: ▷ λ ⇒ ≤ ⊥ ⧺ ∈ ∆ ⤜ ∅ ∑ ≡ ∘ √ (all in true monospace that plays nicely with Vim!). I have to admit this may not be for everyone :), but fun to hack Haskell with.


Anyone know any good references for transitioning from bash to zsh? Particularly thinking about converting .bash_aliases, .bash_profile, and .bashrc. What are the ZSH equivalents?

Also I get the impression the poster uses ZSH, Tmux, and Vim. I use Vim and Tmux too, but unfortunately not at the same time if I can help it. There are one or two Vim commands that don't work in Tmux because of a key mapping conflict. Been so long since I've tried that I can't remember exactly what the conflict is, but does anyone know what I'm talking about and know of a solution?

Edit: Thanks everyone, very helpful. Also, in case anyone else wondering, after a little research, it appears the syntax for aliases are the same for .bashrc/.bash_aliases, .profile, and .zshrc.

So I moved all my aliases to .aliases and sourced that file .bash_aliases, .zshrc, (and .profile but I don't think it's needed here. also didn't seem to work when I sourced it in .profile only and not the other two).


I'm an emacs user, not vim, but I have some idea. My tmux.conf reads like this:

  unbind C-b
  set -g prefix `
  bind-key ` send-prefix
This removes Ctrl-b as the tmux prefix, sets it to ` (backquote) instead, and makes pressing ` twice insert an actual `.

It really doesn't take very long to get used to typing `` when you mean `.


Good call, been using it tonight, dig it, thanks!


All the zsh man pages are in `man zshall`. See the section STARTUP/SHUTDOWN FILES to see what is used instead of the files you mentioned.

instead of .bash_profile you want .zprofile and instead of .bashrc you want .zshrc. Put your zsh aliases wherever you want (.zshrc will work fine).

Tmux uses Ctrl-B as its prefix by default, which is a commonly used key in vim. You can choose whatever prefix you want in .tmux.conf, maybe something which doesn't conflict with anything you use in vim, or you can rebind the one key with the conflict in vim's very flexible system. Also, Tmux will let you send through a prefix key literally (like Ctrl-B Ctrl-B).


I recommend a book called "From Bash to Z Shell" (http://www.bash2zsh.com/). It favors zsh, but teaches tons of bash tricks, too.

The files you're describing are just startup files, read by bash as it starts up in various modes. I put my configuration into .zshrc. It will take some effort to understand your new shell's default behaviors and how to customize them.


I've had a git-customized bash prompt for a while and never had he urge to try zsh until the embedded video showed the following: arrow keys and tab moves a selection between tab-completed results.

That alone is worth me trying it out, particularly when browsing DB dumps and Apache logs which are all time stamped. (It's easier to identify the correct one than retype a timestamp)


Same here. Here's the script for a git-aware bash prompt if anyone else is interested.

function parse_git_dirty {

  [[ $(git status 2> /dev/null | tail -n1) != "nothing to commit (working directory clean)" ]] && echo "*"
}

function parse_git_branch {

  git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e "s/* \(.*\)/ \1$(parse_git_dirty)/"
}

PS1='[\w$(parse_git_branch)] '


I was agreeing with the article until the conclusion. I don't see how any of the stuff he had in the article even refers, much less supports, the conclusion of 'Colors are extremely important'. How do you conclude that from "customizability is good", which seemed like the main thesis of tfa?


Well, maybe because they are outstanding visual cues, and they can easily be used to discriminate information that otherwise you would have to _manually_ detect, look for and/or parse to extract some piece of information.


Life is too short to use bad tools. His point about "love your tools" is very close to what the relationship should be.

I /love/ my editor, I've been using it for 20 years. There's a great visual merge tool I've been using every day for over a decade. And a handful of others. Some of these I purchased (and keep up to date) with my own money. I don't mind, it's worthwhile investment.

Then I see people who regularly write code in Notepad or the moral equivalent, and I want to cry. They have no idea what they are missing.

I happen to disagree on colors; I'm red-green colorblind. Colors may be great for providing hints, but conveying /meaning/ with colors is fraught with peril.


I would have liked to go into vim stuff too; but blog post would have become a book.


You might be interested in vim janus. https://github.com/carlhuda/janus


Or in my vimrc: https://bitbucket.org/cheater/vimrc

It's just a single file, so the checkout is easier, and it downloads all the plugins on its own.

Read the vimrc before you use it, otherwise you might find yourself a bit surprised.


Using VIM delights me everyday. However, I also work with Java codebases, and there Java IDEs are still relevant.

I've tried a VIM plugin on IntelliJ IDEA, but it doesn't work well. I'd like to use the VIM keybindings with IDEA for the sake of speed and enjoyment, but it seems that I should first contribute quite a lot of code for the IDEA VIM plugin to get it working properly.

How do you VIM lovers work with Java code bases?


You can give http://eclim.org/ a try.


I just wanted to say thank you a million times. As a web developer, I totally agree that the tools we use day in and day out should be a delight to interact with. With that said, I'm almost ashamed to say that I had no idea Zsh existed. After reading your post and downloading it, I am forever grateful.


my pleasure. :) let me know if you have any questions.


ProFontX is the monospace font I have been using for the past few years. It has served me well, although I also do love the default Monaco.

http://faisal.com/software/profontx/


I use some of these tools, thanks for the post. I think that there are a lot of people who are unaware that they can have an attractive and (sometimes profoundly useful, depending on what you do) shell experience.


A relevant site for anyone trying to improve their *nix command line skills:

http://www.commandlinefu.com/commands/browse


Does anyone knows if and how I can install zsh on windows with git bash?


Try installing Cygwin with the zsh and git packages. From there, you can install oh-my-zsh etc very easily.

Cygwin is effectively a UNIX environment on your Windows machine, with support for many programs. A big draw is that it uses a UNIX folder structure /usr/, /etc/ and so on.

Git Bash, as I understand it, is just a bash prompt and basic tools (cd, ls and the like). You will probably have a hard time installing other programs. Don't take my word for it though!

http://www.cygwin.com/


Yawn.

Here's a better list in 5 minutes.

Vim + pathogen + NERDTree + CtrlP + CTags + surround.vim + whatever shortcuts you're comfortable with mapped to <leader>

Git + "git config --global --add color.ui true" + Tig

XMonad

Microsoft Ergonomic keyboard

Trackball mouse

Arch Linux

Grep + find

Ditz to track bugs for small projects

Sphinx for documentation

Jenkins for CI

Konsole

Ofcourse, Oh-My-Zsh + Zsh's vi mode + a good font too.


Thanks for sharing! this is an incredibly useful list for me. I'd already using some of the tools of the list, so very keen to try the others.


Good job, Reddit-moonlighters, downvote the one comment full of useful information in this thread because you're butt-hurt over the tone of 8 words.

To add to my argument for when you downvote this, Fish is nicer to use and easier to setup than Zsh.

Seriously, someone blogs about three well known "tools", which has been done to death by now - one of which is about fucking fonts (seriously?) and that's considered a useful contribution?

I mean, with gems like these, how can you possibly go wrong?

>So the prompt here is a current directory surrounded with square braces.

Wow, thank you for explaining that. To contribute back, did you know that the sky looks blue in the day time?

>No one loves a slow terminal. No one.

Aha! But I love me a slow terminal!

>What makes a good programming font? > > mono-spaced > readable > you can tell the difference between O and 0.

Someone give this man a publishing contract, this is blowing my mind!

The level of brain damage here is mind bending. Even more so given that so many of you are sufficiently brain damaged that you are professional developers who can't dig up the 500 articles which have already covered this.

To add insult to injury, the highest rated comment is praising XCode. Because it's pretty. Jesus H Christ. From my experience with using Mac OS X, which I have no comprehension of how anyone can stand from up close - I mean come on, you JUST got the ability to full screen an app? You can't change the window manager to something usable? Want to customize something? Fuck you, customize that! Oh wait, you can't! - it's clear that Apple products are shiny on the outside and polished turds on the inside. The only good thing about OS X is what Apple didn't write - that is to say, the Mach 3 microkernel and BSD userland apps. Apple wrote iTunes in whole and it's an insult software applications.

http://devcodehack.com/xcode-sucks-and-heres-why/ http://amplicate.com/hate/xcode

So really? We have a group of developers for who having pretty buttons is more important than, you know, solving the fucking problem? I sincerely hope that I never have to work with anyone who fits into that category. You'll probably spend half the day plucking your eyebrows while the rest of us get shit done. Oh wait, I have, and they were just as idiotic as some of the people here. They were idiotic because style won over substance. If you care about style, go paint, design UI's or make music and get out of my industry.

Frankly, I'm sick of you hipster "developers". Bring back the four inch thick specs, uncombed hair and social anxiety ridden social rejects as I'd rather deal with them than this crap any day of the week. Someone here even hinted that them using Mac OS X when it was version 10.2 was a badge of honor. Yes, mentioning that you were there "at the start" then saying that you don't care about badges is implying that you see it as a badge. Moronic. Using Linux when it was in it's 0.x evolutions is a badge of honor. Writing kernel drivers is a badge of honor. Working on exotic systems like Solaris or QNX is a badge of honor. Get some perspective and show some respect for the roots of this culture.



Have you considered using vundle? That removes some of the submodule requirements. https://github.com/gmarik/vundle


This goes hand-in-hand with the article a while back about having a codebase that is easy to ramp up and use. I don't mean the actual code itself, I mean the project and the build tools. For example, it's absurd that I have to build in 4 different places, in different black-box terminals to get my code to run. Or that the unit tests for the project I was placed on only run in environments that are perfect replicas of production. Or that I'm using source control that was cludgy 8 years ago.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: