Article - Workflow changes

2019-03-09

Where I have been?

Phew, finally a new post has arrived. In the previous blog posts I said that I would really try to make a new post every one or two weeks, but this third one already passed the 4th week of silence. So, "Where you have been?" you may ask. Well, one chunk of time got eaten up by a bit of stress accumulated from my full time job since we have to prepare for a hard deadline for a release. But that was nothing compared to the fact that I also decided to invest the majority of my time into refining my workflow switching up a trivial tool for a programmer: the text editor.

Now, if you are thinking "Wow, how can a thing simple such a text editor take away 4 weeks of time?" you probably never used Vim or Emacs.

Sublime

Before talking of those, a little of context first. I used Sublime Text for a very long time, so long that I don't remember when I first installed it. Sublime is a marvelous text editor. It's fast, customizable, lightweight, powerful, and with a big community that creates awesome plugins. So, what's the point of switching to another one? Well, one day I come across some videos on YouTube where a guy explained how Vim works and why he used it as a daily text editor. That's created a huge rabbit hole in which I reached the end (I think) this week.

Vim

I always knew what Vim was about: an extremely complex terminal based text editor that has been around forever basically. The steep learning curve blocked me few times years ago when I first learned about, but this time was different. I committed myself to really try learn it for a week to see if the initial investment was worth or not. I won't explain too much in-depth what Vim is about since there are already millions of guys that created posts and videos about it that can do a much better job than me. But if you are really lazy and you don't want to search on google what Vim is, here is a really "short" description of what it is and why it has such a step learning curve. Vim is a terminal based text editor (so you can forget about the mouse) with various "modes". A normal editor like Sublime or Notepad only have the "Insert" mode in which at each key press it inserts the character of the key you pressed into your file buffer, Vim has a bunch of modes and Insert mode is not its default mode. This means that normally when you press a key you are not injecting characters inside you file but you are instead executing actions. For example: pressing "h,j,k,l" moves the cursor left, up, down, right; "w" moves your cursor an entire word forward; "dw" deletes a word; "yy" copies one line; "q" starts to record a macro; "ysa'(" surrounds a single quoted delimited sentence with a set of parenthesis; and so on… The list of commands is basically endless and you keep learning new things after years of using Vim daily. On top of that it has a huge community and there are plugins for everything making it basically a full IDE for anything. Getting started with Vim is not easy at all. It's really slow at the beginning and you find yourself going back and forth between editing and googling all the times. But once you pass that initial wall, it keeps getting better and better. Now, after 4 weeks of using it I miss so much the Vim commands when I'm forced to use other editors like XCode. I'm much faster editing code inside Vim than inside other normal editors, and now I can easily say that the initial commitment is really worth the pain. As a final bonus point I also suffered from time to time of light wrists pain, but since Vim doesn't want you to use the mouse it keeps you always in the home row of your keyboard, reducing a lot the right hand wrist movement. And this really helped me with the wrists problems!

Emacs

"If Vim is so wonderful for you, why there is another section dedicated to Emacs?" Well, to be completely honest with you I did not used Vim for 4 weeks, I only used it for 3 week while this last week I used both Vim AND Emacs. Right when I was feeling great with my new text editor and I wrote a 300 lines configuration file for it, I came across another video on YouTube. This time another guy explained why he switched from Vim to Emacs after years of experience with Vim. At first I thought "Oh no, not again!". But then I decided to try it anyway since I was still in a pretty experimental phase. The guy didn't talked about pure Emacs, but instead talked about Spacemacs. Spacemacs is an Emacs distribution loaded with hundreds of plugins (also called Layers or Modes) to do all sort of things, one of them is Evil Mode. This mode lets you basically use Vim bindings and commands inside Emacs. So at the end you have a Vim like experience when editing text, plus the flexibility and power of Emacs modes which, as far as I saw until now, are even more powerful than Vim ones, better integrated inside the editor, and in general more usable.

So, to wrap up all this section and making a TL;DR: I'm currently using Spacemacs and learning about all the modes and commands of Emacs while I'm using Vim actions and shortcut editing text.

Other changes

On top of all this editor madness I also invest some time to improve my workflow for generating art putting Manjaro, a Linux distribution based on Arch Linux, on my old (yet most powerful) PC. This let me create the code to make artworks on my Macbook, and when the code is ready to generate a bunch of different images at high resolution I boot up that workstation PC and let it do the heavy work. When the images are ready I select the best ones and repeat the process coding new artworks.

Ok but, what about the actual artworks?

While I was dealing with all this changes I also managed to create a new artwork series. I still have to generate some high resolution pieces, but is for the most part completed. So next week I hope to be ready to make a post about that! In the meanwhile I can give you a sneak peak of some of the artworks I made while jamming before taking the direction for the actual series.