
Beautiful Tools - mgrouchy
http://www.mahdiyusuf.com/post/24784023641/beautiful-tools
======
encoderer
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.

~~~
slurgfest
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.

~~~
brownegg
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.

~~~
slurgfest
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.

------
kunalb
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)

~~~
vog
_> 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>)

------
kapilkaisare
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.

------
rmckayfleming
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>

~~~
bluekeybox
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.

------
SkyMarshal
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).

~~~
Ogre
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 `.

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

------
ericclemmons
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)

~~~
gose
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)] '

------
zokier
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?

~~~
lobo_tuerto
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.

------
kabdib
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.

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

~~~
cgag
You might be interested in vim janus. <https://github.com/carlhuda/janus>

~~~
cheatercheater
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.

------
LauriL
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?

~~~
phogster
You can give <http://eclim.org/> a try.

------
hackNightly
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.

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

------
pirateking
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/>

------
uhhyeahdude
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.

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

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

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

~~~
hebejebelus
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/>

------
Produce
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.

~~~
Produce
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.

------
googletron
my dotfiles <https://github.com/myusuf3/dotfiles>

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

------
drivebyacct2
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.

