As a unashamed geek, I spend a lot of time trying out and choosing my preferred tools. I love free software but I'm not a zealot. What I really care about in software is quality and details.
I present here some of my favorite softwares and the rationale behind my choices. Even if I expose them as multiple-choice answers, don't complain about the lack of options! This is 100% subjective. Most of the time, I am aware of other alternatives but I purposely choose not to display them because either I do not consider them as serious options or I really don't like them.
This is becoming a more and more difficult choice for two reasons: Linux look and feel is improving and OS X freedom is regressing.
I still think Mac are superior in many respects, the look and feel of the OS and of native applications is amazing, the integration of Apple's software is great, the machines themselves are excellent but I'm starting to be really upset about Apple's programmed obsolescence and the new iOS trend that's threatening OS X.
Nobody who knew me a few years ago would have thought I could one day drop the Apple!
Probably the most famous dichotomy in geek world: vim vs emacs. My choice here is mostly due to luck. I learned emacs first. Now I'm used to it. I also think emacs interface is more intuitive at first since you don't have to enter insert mode to be able to write something… I don't want to go into more details since all I like in emacs is probably also available in vim.
If you are a beginner, the first thing you need to know from these two editors is how to quit them!
- Ctrl-XCtrl-C in emacs
- ESC to exit insertion mode (just in case) and :qEnter in vim
These days, my favorite editor is actually TextMate 2. I love it for its power, its speed, its minimalism, and for embracing the Apple touch and feel better than any other App. I even use it on remote machines with its rmate sidekick which is super convenient.
Xcode is pretty good too, but only for big projects. It's overkill for simply editing a file.
I think Git is my favorite piece of software ever. It makes coding more enjoyable.
The main reason why I favor git over mercurial is the staging area. I love having full control over what I commit or not. The other reason is because I don't really like python. Because python is slow, parts of mercurial have to be rewritten in C. That's the kind of stuff that annoys me with python. This and the mess with many coexisting versions and packages that won't install in the right place… Git is written in C from the beginning and it is fast.
Of course, I dismiss completely non-distributed version control software. I don't understand why so many people keep using subversion (and I'm not even talking about CVS).
I have always used bash by default as it is the default shell on OS X and most Linux distributions I have been using. Recently, I gave zsh a try and I love it. There is nothing fundamentally wrong with bash, it's just that zsh provides nice little features. The importance is in the details!
Among the little things I like are the better tab completion, globbing completion,
completion of remote paths using password-less ssh, and git integration:
when you type
git add and press Tab, the suggested completions are dirty files!
I used Macports for a little while before I discovered Homebrew. One day I decided to switch, even if it meant deinstalling everything I had installed with Macports and reinstalling them with Homebrew. I didn't regret it.
What first seduced me in Homebrew was its extensive use of Git. Everything happens on Github. You can contribute formulas, or even host your own tap.
One of the best feature is that you install everything is
which makes absolute sense and makes everything easier.
Software like to be installed in standard locations.
Another amazing feature which I sometimes use is brewing yourself: making your own formula or sometimes just installing something manually and linking it with Homebrew. This is made really easy and can save you a lot of time.
Last little thing: everything is written in Ruby. I didn't care at the beginning but little by little, it made me discover this great language. Formulas are easy to read and to modify, even for quite advanced stuff like patching.
Save yourself some time and trust me, HDF5 is the best free open-source cross-platform well-maintained well-documented and widespread binary file format available.
All major scientific software can read and write at least basic datasets to and from HDF5 files. Or if they don't, they should!