Tools11 May 2017
I rely on a lot of tools to get by. Here are some of the ones I stand by.
I’m biased towards Stan, but for good reason. Here are a few that come to mind:
- It’s currently in active development.
- Stan is its own language with its own grammar and it makes sense, thanks to Bob Carpenter.
- There are models that I am interested that can’t be expressed in other high-level languages (including PyMC3 and TensorFlow).
- Communication of statistical models is unambiguous. You can contrast that with BUGS / JAGS where it’s unclear what are data and what are parameters.
- Debugging is pretty straightforward.
- It’s fast when you need it to be.
Don’t get me wrong: Stan isn’t perfect. There’s still a lot of room for improvement, but it’s the best tool for statistical models that matter at the moment.
PyMC3. If you’re completely pythonic, this is probably the tool for you.
Text / Code editor
I’ve been using Emacs since 1996. I can’t shake it. I’ve tried moving to other text editors and IDEs. I always come back.
- It’s stable. Very, very, very stable.
- It can handle every possible file format. And large files.
- Keyboard macros. I use them all the time. (Bob, thanks for showing me this 5 years ago.)
- There is a Stan mode for syntax highlighting and auto-indent.
- You can find versions that will run on Mac, Linux, and Windows. That’s useful for when you’re working on a project like Stan and you’re hunting down platform-specific issues.
My normal use case is to switch between C++, Stan programs, makefiles, and R scripts. I haven’t found another text editor that handles all of that well. If anyone knows of a decent C++ editor, please let me know. I miss Eclipse from my Java days for its autocomplete and refactoring support.
MacDown is what I use for editing complex Markdown documents like this one. When I don’t need to see the output rendered in real-time, I stick to emacs.
Atom is a text editor that’s put together by the GitHub team. It’s definitely more modern than Emacs and I use it now and again, but there are times when it lags, the indentation rules aren’t very good, and a lot of the plugins don’t work.
Tabs vs Spaces
Indent 2 spaces.
There’s no debate. Unless you’re writing makefiles, in which case you have to use tab.
I’m on Mac and Google Chrome is pretty stable. Since the http://stan.fit email is controlled through Gmail, it’s useful having separate “People.”
I used to use Firefox as my daily browser. One of the reasons I switched was the extraordinary amount of RAM it consumed.
Programming / Scripting
Here’s my order of comfort:
- html / css
- BUGS / JAGS
Here’s my preference:
- html / css
- BUGS / JAGS
- R and Python (tie)
I find both R and Python to be clunky. I’ll probably catch a lot of flak for even saying that, but it’s true. They’re both scripting languages that are interpreted and dynamically typed. Python has a better package manager, but every time I tried picking Python up in earnest, I ran into installation issues and 2 vs 3 problems. R is R and you can’t win. I haven’t tried Julia, but I can get by in R well enough, so I won’t pick it up.
Revision Control System
Git > Subversion > CVS.
Git takes a while to master. Although I’ve pushed on bugs in Git and seen it improve over the years, it’s still the better paradigm for managing source code.
- Keynote for presentations.
- LaTeX for mathematical documents.
- Dropbox for synchronizing files.
- Jenkins and Travis CI for continuous integration.
I’m on an iPhone now. I have no loyalty to Apple. In fact, Apple devices tend to fail on me. The last time I switched from an Android phone was for good reason: you can’t play back albums seamlessly. I listen to a lot of mixtapes and having a few millisecond gap every couple minutes is pretty annoying.
My favorite phone to date has been the 1st generation Moto X. If I switch back to Android, I’ll probably look for a version of it.
I have a Macbook Pro.
I switched to Mac laptops in college. I used to dual boot Linux and Windows. Linux for the development, Windows for being able to have a useable computer. My laptop was stolen and the next one I bought was an Apple iBook G3. Since then, I’ve bought a couple non-Apple laptops and haven’t really enjoyed the experience.
Technics SL-1200M3D is my turntable of choice. For the type of djing I do, it’s useful to have a steady platter, high enough torque, and a pitch control that’s smooth. All the Technics 1200s do that well.
I used to have the Vestax PDX-2000 and never really liked the pitch control. I still have a Vestax QFO LE DX and the pitch control is pretty wild (+/- 60%).
As heavy as these things are, I don’t see a world where I replace my turntables with a controller. There’s a tactile element that’s lost with controllers.
I’ve been using the Shure M44-7 mounted on Technics headshells since 2001. I’ve had the Ortofon Concordes, but they were harder to travel with.
I have the first version of the Rane TTM 56 from 2002 and it’s still going strong. There were just a lot of great features on the mixer:
- The magnetic faders are a thing of beauty. There’s no bleeding after all this time.
- The EQs are great.
- It’s a tank. I used to travel with this mixer all the time.
Digital Vinyl System
Serato. I’m still on Scratch Live. At some point it’ll break and I’ll need to upgrade. Hopefully not too soon. I’ve had it since 2004.
Back in the day, I was on a beta version of Final Scratch, then Native Instruments’ Traktor Final Scratch. I switched to Serato when it was stable and it’s been great. I like vinyl, but it’s heavy.
I’ve been using the Sony MDR7506 for djing since 2003. They’re great. Not the best quality sound for daily listening, although passable. They’re sturdy, folds up nicely, and easy to replace (if it comes to it).
For daily listening, I use the Shure SE215 with the microphone cable.
My gear has been in Road Ready flight cases for 15 years now across both coasts and to England. If you’re mobile, pick up some cases. It’ll save you in the long run.