Monthly archives: February, 2015

VIM plugins for web development

Recently I bought a new laptop, and while configuring my tools I noticed I haven’t cared about VIM plugins for years. It was the perfect time to have a look at the most interesting plugins.

Firstly I installed Pathogen to manage VIM plugins. It allows you to install other VIM plugins in separate directories. This way you avoid the mess the .vim directory can become.

vim plugins
Regarding general plugins, I installed NERDtree which is a directory tree explorer, ideal to keep a general view of your project. Also installed Airline, that shows an improved status bar with lots of information about the current file. However I couldn’t see it at first and I had to add the following line in my ~/.vimrc file.
set laststatus=2

If we speak about writing code, the most useful plugin you can install is SuperTab, which improves auto-completion with the tab key. This one works really well in pair with Ultisnips, that (as it name suggests) allows you to save snips of code and recall them later. I also added to my list the transparent Skeletons plugin. If you create a new file, this plugin gives you a template to start with, depending on the type of file you created.

Time to have a look at web development. In order to work with HTML, I installed matchit (a classic) but also HTML5, which adds omnicomplete funtion, indent and syntax for HTML 5 and SVG. As sometimes I use less to write improved CSS, I added Less, a single file with syntax.

The PHP programming section is based in the PIV (PHP integration for VIM), which includes various plugins. Actually I disabled some of them, just to meet my needs. Finally I added Syntastic: every time you save a PHP file, it automatically checks it with PHP’s lint (finds grammar errors), PHP Code Sniffer (alerts style errors) and PHP Mess Detector (suggests improvements), showing the results inline.

Am I missing any other basic plugin? I guess not, as with these tools I feel really backed to develop any project.

Update: I forgot to list xDebug (an interface for PHP’s xDebug).

Adminer, a compact database manager

tl;dr If you use phpMyAdmin, stop right now and give a try to Adminer.

If you have several customers with different hostings, you have experienced problems accessing to their MySQL databases for sure. The situation comes like this: you get a new support ticket and ask for hosting access, but usually you just get FTP access. So now you have to ask again about the phpMyAdmin URL. Or you get access to their hosting panel, but there is just a horrible DB manager.

What can you do? Trying to deploy phpMyAdmin yourself in a customer’s hosting is a nightmare, and can take several minutes. That makes no sense, specially if you just need to check a tiny detail.

adminerAdminer is the solution, as it is just one file. That means uploading it is just a couple of seconds. In a moment you are operating with the database. Magic.

I don’t really know how I discovered about Adminer, but as soon as I started using it, it became an everyday tool. Actually I don’t remember when was the last time I used phpMyAdmin. Adminer as a single file is perfect, but moreover it comes with a lot of features that surprass phpMyAdmin. And it has an active development, so each new version comes with new features, like more databases (PostgreSQL, SQLite, MS SQL, Oracle, SimpleDB, Elasticsearch and MongoDB).

Finally there is a cut-down version, Adminer Editor, that only allows simple CRUD operations. That’s perfect if you need to quickly provide your customer a way to edit the content while you develop a proper back-office.

Keeping on your daily routines

tl;dr Use Routinely (android app) to keep your routines. Or Coach Me if you want to be social.

While living in Korea I used everyday ankidroid (an android app for anki) to learn and retain Korean vocabulary. The key point is use it day after day so your don’t forget what you are learning. But after I came to Barcelona I noticed I didn’t keep that routine.

How can I keep a routine? I guessed there should be some kind of app that can help me. After asking about it on twitter and doing some research I listed 4 candidates: Habit Streak, Routinely and Coach Me.

Actually I got more suggestions, but I tried to find an app that perfectly matches my needs: small, with a list of routines (things I should do everyday) to tick, and some kind of alarm that alerts me when the day is over and I didn’t finish all my routines. I didn’t want just another ToDo app. So here goes the review…

routinelyI tried Habit Streak, but found out the UI is really bad (you need to go to a submenu to tick a routine!). So I discarded it and tried Routinely: surprisingly it matches my needs. It is visually clean, with an easy interface; and comes with alarms for every routine and a widget with the number of remaining routines to do.

As I found what I’m looking for, I didn’t review any other app and started using Routinely as soon as I installed it. It’s really helping me to improve my productivity.

Actually a friend suggested me Coach Me, and it looks quite similar to Routinely, but with a social layer (“share with friends”). I guess one or another will be better for you depending on your self-control skills. If you need to show people your skill as a way to force yourself to improve, choose Coach Me. Otherwise Routinely will be good enough.

Tracking your time while working

Years ago, when I started remote-working, I realized I needed to be extremely serious with my work-time. If you work at home it’s absurdly easy to get distracted with housework around you. Or open facebook again (but thanks to a firefox plugin, Leechblock, that never happens again).

hamsterI thought I needed to track my focused time somehow. Despite there are online tools for this task, like RescueTime, I wanted something in my desktop. So I first gave a chance to Hamster-time-tracker. It comes in all linux distros, so installing it is simple, but for the best results I suggest you to set it to run at startup.

The good thing of Hamster is that it’s simple. Choose the task and start tracking. It can show you summaries with all kind of information (useful to report to your boss), but if you need anything more elaborated you can even get the raw data yourself, as it saves the tracking details in an standard SQlite database (in linux, ~/.local/share/hamster-applet/hamster.db).

I used Hamster for years, in a sick detailed way: a kind of micro-tracking. For instance, if I go to the toilet, I stop the clock; if I go to the kitchen to brew some tea, I stop the clock. This way I started to understand how I really work. In my case, in blocks of 1~1.5 hours. Also I realized that getting more than 4~5 hours of real focused work per day is impossible. Finally I understand some days I’m really productive (5 hours) while others I’m not (30 minutes).

Recently I updated my laptop and wanted to test an even better time tracker. With Hamster I can’t create subtasks easily. When working in a project, all of us start defining tasks, and splitting them into subtasks. But it’s also very common to discover, while working on a subtask, that you need to split it again. Or create an extra one, or…

task coachI started using Task Coach, which allows you to split tasks anytime, while tracks the time. You can even track time for a particular subtask or for a task (sometimes useful when you are doing small stuff). You can set tasks as active, inactive or completed, and easily filter them to see the big picture or the detailed view.

Whatever you do, you may want to improve. And the better way is to track how you work, as a first step to have data (metrics) to analyze and improve. In my experience, tracking the time you are working focused helps you to see how well (or bad) are you doing and rewards yourself (or punish yourself) seeing the data.