Nick George
{:topic "index" :title "Programming archive" :date "2018-08-05" :tags ("clojure" "testing" "post")}

Programming

(jump to tools and posts)

I have no formal training in computer science and haven't worked as a professional programmer. But I am very interested in programming languages and using them to build tools for scientific research and pipelines for robust data analysis.

Programming languages are tools, and I am always looking to expand my toolbox so I can reach for the right tool for the task at hand.
I am most familiar with Python, which is my go-to scripting and quick data exploration/processing language. Lately, I've been using a lot of Python for electrophysiology data analysis and to interact with SQLite3 for data storage (see some of my recent posts).
You can't beat R for statistics or scientific graphics, and I use it exclusively for statistical programming, data munging, and visualizations (mostly dplyr and ggplot2).

I started exploring Clojure and ClojureScript, a few years ago after I stumbled across some of Rich Hickey's talks. I use Clojure whenever I can for small personal projects because it is clearly a simple, flexible, and well though out language (I built this website when I was learning to use it). Clojure changed the way I think about programming more than any other language (minimizing dependencies and focusing on data-oriented programming). Unfortunately I haven't had the opportunity to dive in and use it extensively for my research.

Recently, I have started exploring Go, and to a lesser extent (so far) Rust. Over the years, I have built some cool things, but I also felt the pain of distributing software written in scripting languages like Python and R. Try explaining a virtual environment to a scientist who just discovered a terminal and you'll see what I mean. In my opinion, it is nearly impossible to distribute any non-trivial code written in Python to non-programmers (not going to name names, but go check out the several pages of instructions on setting up any open source projects used by sceintists (chances are they require a core facility programmer and a dedicated Ubuntu machine to use).

Go appealed to me due to the type safety (this is my first experience with a strongly typed, compiled language), and the ease of distribution (compile and send the binary). I've been bitten by type errors in my Python analysis a lot, and I'd like to not be anymore. I recently wrote more about some initial experiences with Go.

Some tools I made/worked on

Programming posts