Hello, there

Hi, my name’s Andrew and I’m a programmer. You can find me as “AndrewRadev” on github and on twitter.

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 rails command, 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 :quit can 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.