Professionally, I code mostly in Ruby, Rails, and a bit of Ember.js. In my spare time (and very non-professionally), I try to play around with all sorts of other stuff: Image processing, gamedev with Unity, opengl and webgl, Android, electronics, and any fun programming-related thing that crosses my path.
I’m a dedicated Vim user and I’ve created a bunch of Vim plugins. I maintain the VimLinks twitter account, I’m one of the maintainers of the official ruby bindings for vim (but I’m pretty bad at keeping up with the work there), and I own the runtime files for Vim’s eco support.
Occasionally, I speak at conferences, and I’ve put most of the videos in one youtube playlist. Most of them are in Bulgarian, but I’ve noted the language of each one in the playlist. I’ve also got a playlist of Vim-related screencasts, though it’s annoyingly short. I should get back to that, one of these days.
In this blog, I write about my programming-related experiences. Most of the articles seem to be about Vim, but I do write about other stuff as well, I promise.
Here are a few of my projects that I find interesting:
- vimrunner is a ruby library that lets you spawn a vim instance and control it. This could be useful for integration tests for vim plugins and it’s actually being used for CI in some of my own plugins and Paul Mucur’s runspec.vim.
- daily_sites is a small website I use to manage my everyday reading list.
- ctags_reader is a little library to read ctags “tags” files and give you an interface to query them in a similar way that a text editor would. It’s useful for some super-simple static analysis of code. I’ve used it to generate documentation links in non-API docs.
- image-processing is an implementation of a bunch of simple image processing algorithms in ruby, using the chunky_png library. It’s mostly an exercise, though I’d love to improve them and actually figure out a good use for them. And possibly rewrite them in, say, Rust.
- waiting-on-rails runs the
railscommand, while also playing some relaxing elevator music until the server boots. Convenient for that legacy monolith you need to start up every morning.
- digits is a university project in C that attempts to recognize a digit from a given image. It’s very limited, but it was an interesting exercise in image recognition.
- green-cubes is just a tiny webgl experiment for my talk at BurgasConf 2014.
And some Vim plugins, if you’re into that:
- splitjoin lets you switch between multiline and single-line versions of the same code.
- linediff lets you diff blocks of code instead of files.
- inline_edit makes it easier to edit code that’s embedded in other code, like script tags within HTML.
- switch changes code in predetermined ways depending on what is currently under the cursor.
- sideways moves items in lists (argument lists, arrays) to the left and to the right. It also provides a text object for “item in argument list”, which is arguably the more useful part of the plugin.
- whitespaste attempts to adjust blank lines automatically when pasting.
- multichange provides an easy way to replace words in a buffer or a particular area. Think variable renaming.
- writable_search lets you grep for something, edit the results directly and have the changes update the original buffers.
- undoquit is like a “Restore Tab” button for Vim, except it also works for splits. A window that was closed with
:quitcan be reopened with a keymap.
- ember_tools provides some useful tools to work with an ember.js project.
- gnugo is a UI around a GnuGo process – it lets you play Go right in your Vim.
If you’re a Vim user, you might also like to look around my Vimfiles.