There are several schools of thought when it comes to digital note taking and productivity. One school advocates powerful tools such as Evernote, which allows you to take notes, clip articles and images, and save documents into a note. Evernote also has some pretty powerful search functionality that lets you find that data again. The other school advocates simple text. Using the file system, and a plain text editor like Vim or TextMate, or what have you. There are powerful arguments both ways, and I find myself coming down somewhere in the middle. On the one hand, I like Evernote’s ubiquity. It’s on my phone, my laptop and my tablet, and I can save everything from quick shopping lists to clipped articles from the web, to pdf documents. In the case of those pdf’s Evernote will even scan them and make the text searchable. That’s extrememly cool. However, it’s too heavy for actual “notes” and Evernote’s interface is notorious for not being “note friendly”. Things are complicated by the fact that I run Linux on my laptop, and there’s not a good Linux client for Evernote.
So, I’ve come up with a workflow that works for me. It might not work for you, but hey, it’s another tool in the battle for ultimate productivity, right? First of all, I use Evernote as my basic “Archiving” tool. It’s where I clip articles to read later, my wishlist, images, receipts, etc… I’ve even started using Evernote as my main bookmark manager. Evernote works well for me as a digital filing cabinet, since that’s really what it’s designed to do. However, there are two things that I do NOT do in Evernote. To-do lists, and my notes. Continue reading
Of course, referring to Vim as an IDE isn’t specifically correct. It’s a text editor, but man, it can do so much more. I think most programmers are always on the lookout for the text editor/IDE that really fits them. It’s not that we’re looking for a magic bullet that will write the code for us. For me, at least, I want my IDE to get out of my way. I don’t want to have to wrestle with it just to get some code written. I’ve tried them all, and there are a lot of really good IDE’s and text editors out there. Gedit, kate, IntelliJ Ideas, KDevelop, SublimeText, Komodo Edit… I’m sure the list goes on forever. I thought I had reached the top of the mountain with either SublimeText or KomodoEdit. For my money, they’re the best GUI based IDE’s out there right now. But I still wanted something more. A colleague talked to me seriously about Vim. Of course I had tried it in the past. You can’t do anything on the command line without running into it at some point, and banging your head against the wall trying to figure out how to get the hell out of it! But until you start seriously trying to learn the Vim way, you’ll never understand how amazing it is. Of course, there’s a huge learning curve to using Vim effectively. But once you get even a little way down that curve, you’ll be able to do things that just blow you away.
So, what are some specific things about Vim that I love.
- First, no mouse. When you use a GUI based IDE, you find things with the mouse. You have to take your hands off the keyboard, find the mouse, drag the mouse to locate the menu item you were looking for, click something, wait, what was I doing???? With vim, the only option is keyboard shortcuts, and your fingers really start to fly when you only use them to type. It’s such a small thing, but it has an amazing impact on my productivity.
- Macros. Holy smokes, but macros are just amazing in Vim. Macros are simple, really. It’s just a recording of a series of keystrokes that can be played back. But when coupled with Vim’s raw keyboard power, macros can do amazing things. For instance, recently I had a csv file that had a list of settings. I had to get only some of these settings into a .yaml configuration file. With a mouse, I would have been there all day, since there were a couple hundred settings. With Vim, I opened a split window with the .yaml file in one split, and the .csv file in the other. I figured out a series of keystrokes that would switch splits, search for the next setting, copy it, switch back to the other split, go the next line and paste. Once I had that, I simply recorded it as a macro, and ran that a couple hundred times. Took all of 5 seconds.
- I may have heard this from somewhere else, but Vim is a programming language in and of itself. I’m not talking about Vim script. I’m talking about the way that Vim makes you think about what you want to do with the text. Vim has a syntax that expresses what I’m doing in a manner that really makes me think about what I’m doing. It’s hard to explain, but “yiw 5j f’ viwp” is satisfying on a spiritual level, where double clicking things just isn’t.
- It’s everywhere. I know that any server I log onto is probably going to have Vim. If I get used to doing things in Komodo Edit, then I have to work on a remote server, then I’m still going to wind up having to use Vim. So why not get to know and love Vim with all it’s power.
- Plugins. Vim has one of the largest ecosystems that I’ve ever seen. People have been writing plugins for Vim, almost as long as Vim has been around. And brother, that’s been a while. Granted, you can go overboard with the plugins, but Vim follows the UNIX principle of small tools that do limited things very well, so occasionally, there are things that are difficult to do in Vim. That’s where plugins come in. Chances are, if you find yourself wishing that Vim could do “x”, someone has written a plugin for it.
Of course, text editors have been the cause of many a holy war. Programmers seem to either love Vim or hate it. You don’t see a lot of middle ground with regard to feelings about Vim. And it does have a pretty tremendous learning curve. It takes a while to get to the point where you can be really productive in Vim, but once you get there, you’ll wonder how you ever got anything done without it.
I’ve been messing around with my terminal display, trying to church it up a little. I tried Powerline, but didn’t have great luck with it. So, I’m going old school and just adjusting conf files for the applications that I use all the time, mainly tmux and vim. I’ve been banging my head against tmux all day. I added some flashy stuff to the tmux statusline, but I just could NOT get the colors right. I know that there are lots of settings and tweaks for getting 256 color support right, but no matter what I did, I couldn’t get tmux to display properly.
I finally ran across a random forum post from a couple of years ago. Basically, my terminal (XFCE terminal) is set up for 256 colors, but tmux always starts with the default of 80 colors. The answer? Instead of starting tmux with
I just start it with
which forces tmux to run with 256 color support. Problem solved, and my badass statusline is working perfectly.
Tmux started normally, displaying a limited color pallette.
Tmux started with the “-2″ parameter, forcing 256 color support.
I spend almost all of my time on the command line and I use Tmux and Vim obsessively. Like a lot of people, I want my environment to be pleasing, so I was excited when I found out about Powerline, a status line / prompt utility that works with bash prompts, Vim, Tmux and a whole slew of other tools.
My first impression is that Powerline is just really cool looking. It’s nice to have something that lets you simply customize your tools in a simple way without having to dig deep into each individual tool. Unfortunately, it has some big shoes to fill and it doesn’t quite make it all the way. Continue reading
The web has opened us up to collaborative work on a global scale. On any given project, we may work with contractors around the globe. But managing that collaboration requires a tool, or set of tools, that allows asynchronous communication and information sharing. Picking the right Project Management software is an important decision, and the final choice of tool is going to be highly dependent on both your management style and business needs. Quite some time ago, I posted my list of the 5 best web based project management / collaboration tools. That list has proven to be one of the more popular posts on this blog, but the landscape has changed a lot, even in the last year. So, after taking another look at my own workflow, and checking to see if there are any new tools out there that more closely fit my needs, here’s an updated list of some of my favorite Project Management software for 2013.
I do a lot of work with Apache Solr, which is a front end wrapper for Apache Lucene. Lucene is a text analysis search engine. Basically, you give Lucene a “document”, and it analyzes the text of that document, and stores an index of which words and phrases occur in which documents. What Solr does, is provide an http based front-end and a “ready to go” installation for the entire system. Lucene is an amazing piece of software, and Solr is just awesome, as far as I’m concerned.
With that being said, Solr’s admin interface leaves a lot to be desired. Solr has the concept of “cores”, which are independent, unrelated indexes. Reminiscent of Drupal’s multi-site installation, Solr’s multi-core, allows you to set up multiple search engines for multiple sites, all on a single installation of Solr. Unfortunately, you can’t work across multiple cores in the admin interface. For instance, in one installation that I work on, I have multiple cores, one for each site. These sites are all similar, and they all use the same Solr schema. There’s also the potential for the same content to be created across multiple sites, and to end up in multiple Solr cores. Now, if I want to see if a document occurs in multiple cores, then I have to go each core’s admin interface separately, and run a query. That’s sort of my base gripe with Solr, and I’ve been working on a tool to alleviate the problem, for a while now. I call it The WEASL!