On being a polyglot

I’m kind of known as a polyglot among coworkers. We would often argue that instead of hiring great Java/Python/C++ developers, we should rather strive to hire great engineers with strong CS fundamentals who can pick up any language easily. I came from scientific computing background, doing mostly C/C++/Python many years ago. Over the course of the last three years at my current job I coded seven languages professionally, some out of interest and some necessity. I enjoyed the experience learning all these different things and want to share my experience here, what I learned from each one of them and how it helps me becoming a better engineer.

C

The first language I used seriously, apart from LOGO & BASIC when I was a kid of course. It’s probably the closest thing one can get to the operating system and bare metal without dropping down to assembly (while you still can in C). It’s a simple language whose syntax served as the basis of many successors like C++ & Java. It doesn’t offer any fancy features like OOP or namespaces, but rather depends on the developer’s skill for organizing large code base (think …

more ...

Light Table

I recently picked up Light Table for Clojure development and liked it. Form evaluation works out of the box and indentation is better than that in La Clojure plugin for IntelliJ IDEA.

I particularly like the idea of command bar, which allows you to search for Light Table commands by name and execute them quickly. I was already used to IDEA’s key map though (Mac OS X 10.5+ which is more natural to Mac users than the default Mac OS X), and wanted something similar. The setting files are in Clojure so it’s easy to customize. This is what I got so far for user.keymap:

{:+ {:app {"alt-space" [:show-commandbar-transient]}

     :editor {"alt-w" [:editor.watch.watch-selection]
              "alt-shift-w" [:editor.watch.unwatch]
              "ctrl-alt-i" [:smart-indent-selection]
              "ctrl-alt-c" [:toggle-console]
              "ctrl-shift-j" [:editor.sublime.joinLines]
              "pmeta-d" [:editor.sublime.duplicateLine]
              "pmeta-shift-up" [:editor.sublime.swapLineUp]
              "pmeta-shift-down" [:editor.sublime.swapLineDown]
              "pmeta-/" [:toggle-comment-selection :editor.line-down]}}}

Apart from these, I found myself using "pmeta-enter" [:eval-editor-form] and "ctrl-d" [:editor.doc.toggle] most when writing Clojure code. After all they are probably the most essential ones no matter what editor you use :)

more ...