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.
Recently, I’ve been building most of my side-projects in Rust. I’ve grown fond enough of the language to start teaching it in Sofia University. I don’t have quite that many interesting rust repos in my github profile, but I’ll very likely open-source a few toy projects as I go.
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 happen to be in Bulgarian. 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 a few others (like runspec.vim, vim-elixir).
- 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.