-
Abandoning WordPress for Octopress
I finally did it! Iāve left the dark corners of WordPress in favor of Octopress, which seem to be the best system for my blogging needs.
Why the migration?
WordPress was a great host for me at one point - the community is fun and no work is required for setup (I would rather not waste time fiddling with my blog too much). But a number of things are off-putting:
- I donāt like WYSIWYG editors and I donāt like web editors. I try to use my favorite editor for everything, including mail, documentation, note taking. Even though WordPress allowed me to write my posts using Markdown, I still didnāt like not being able to use my favorite editor or environment.
- Storing all the entries in a MySQL database is not favorable. I am writing text, why would I pick any other format to store what I wrote?
- Over the years my blog became increasingly slow, and in order to have a reasonably fast site I needed to pay quite a sum of money. I am not ready for such a commitment, since I only occasionally update this blog.
On the other hand, Octopress (which is based on Jekyll, a static site generator) has all of these concerns covered:
- I can write by creating simple Markdown documents. It doesnāt matter where I write, or how I write. This enables me to use an editor of my choice.
- Plain text is universal. It can be viewed by a human, edited in any piece of software, printed out, emailed, piped to a Linux program - just about anything really.
- Static sites are ridiculously fast. Thereās no preprocessing and no rendering. The only real speed limit is network latency. In addition, GitHub lets you host static sites for free. What else could you ask for?
The process is painless
Switching from WordPress to Octopress was very easy, and it took me only a few hours (spread out throughout one weekend). Some highlights:
- Comments in Octopress are handled by Disqus, and I had to set that up on my WordPress blog before transitioning in order to transfer all the comments.
- I used the WordPress to Jekyll Exporter tool to export all my posts from WordPress to Markdown (with meta-data which Octopress understands). I only had a bit over 50 posts to worry about, so the process was complete in an instant.
- I ran some custom Vim macros to remove and change some excess meta data, as well as clean up Markdown formatting. I am a perfectionist, and the exporter tool left me with a poorly formatted document. I couldnāt let that happen.
Results are breathtaking
After only a few hours of work, I had a lightning fast, simple, and pragmatic blog. There is no excess configuration, comments are handled externally, and the source code for the site and articles is available on GitHub. I am able to write my posts using Markdown, in my favorite editor, and use git to publish the resulting articles.
-
"The Pragmatic Programmer"
I just finished reading āThe Pragmatic Programmerā by Andrew Hunt and David Thomas - two consultants behind Pragmatic Programmers, LLC. This book might as well be a fantastic marketing trick for their consulting agency, but the value it brings to the reader is hard to underestimate.
Hunt and Thomas cover a wide variety of topics, briefly glancing over every major aspect of developing software: be it the choice of a text editor, calculating time complexity, or working effectively on a team.
If you read thematic books and actively follow programming blogs and podcasts - you may find yourself cheerfully nodding while reading sections of this book. You may have read about some of the tips online, heard from colleagues, or simply discovered them yourself. You will finish this book with a wide smile of approval, and a sense of validation in regards to your daily work flow or actions.
If you are less lucky (say, you donāt read as much), you will find 70 tips you can utilize right away, right now, at your workplace. This is what āThe Pragmatic Programmerā essentially is: a collection of practical things regarding getting things done.
Itās an essential read, and Iāve seen this book in every single recommended reading list out there. And for a solid reason. This is the kind of book you want to re-read every couple of years to absorb every piece of knowledge presented within it. The latest edition of the book even contains a printout with all the tips listed in the book.
You should read it after being in the field for a few years. After making mistakes, and figuring some things out on your own. Beginners might not understand some pieces, but will still be able to comprehend a major portion of knowledge contained within this book.
I enthusiastically recommend this book to every software engineer I get to work with. Itās easy to read (as opposed to monstrosities like āCode Completeā or āArt of Computer Programmingā) and it teaches you how to get things done, the pragmatic way.
-
Personal wiki with vimwiki
I recently found an interesting way to organize random bits of information: a personal Wiki. Itās a great idea to have data repository shared between your machines: important notes about people, conversations, events, tasks youāve accomplished, thoughts, and a hundred of little pieces of knowledge which donāt belong anywhere else. There is plenty of software out there which lets you set up a personal Wiki, and some of it is very lightweight and well polished. However, I prefer to do most of my editing and writing in Vim. As tip #22 from āThe Pragmatic Programmerā states:
Use a single editor well
We think it is better to know one editor very well, and use it for all editing tasks: code, documentation, memos, system administration, and so on. Without a single editor, you face a potential modern day Babel of confusion.
I fully agree with the above statement and I try to use one editor for the majority of tasks which require typing, without having to remember which editor contains certain features, and which doesnāt. Thatās one of the main reasons I went with
vimwiki
- a lightweight and clean personal Wiki with itās own Wiki-style markdown. Oh,vimwiki
also subscribes to another tip from āThe Pragmatic Programmerā:Keep knowledge in plain text
The
vimwiki
plugin has a number of interesting and useful features:- Memorable mappings for moving in and out of Wikis. Hit
<leader>ww
and you are on the home page of your Wiki. The<leader>wt
will open the Wiki in a new tab: the rest of the mappings are as intuitive. - Multiple Wikis support: really handy if you have a number of separate projects for which you want to keep separate entries.
- Diary-like quick notes. You can create an instant page for today by hitting
<leader>w<leader>w
. Combination<leader>wi
brings you to a diary home page, and<leader>w<leader>i
re-indexes the diary entries. - Easy link creation: hit enter on a word and it will turn into a link to
another page. Hitting enter on a link will transport you to the destination
page. Simply surrounding text with double square brackets (
[[]]
) works as well. - Navigation: enter to follow a link, backspace to go back.
- You can convert all your records into html by executing
:VimwikiAll2HTML
. - Extensive and well written help file. Just run
:help vimwiki
and start reading.
The list can go on forever, but these are the features I found to be the most useful.
In order to enjoy synchronization between all my machines, I hosted my Wiki in a Dropbox folder -
vimwiki
lets you specify locations from each one of your Wikis.let g:vimwiki_list = [{'path': '$HOME/Dropbox/wiki'}]
Download it from the GitHub: https://github.com/vimwiki/vimwiki.
- Memorable mappings for moving in and out of Wikis. Hit
-
Easy commenting with tcomment.vim
This plugin has been in my
.vim
directory for a few years, and I sometimes forget that itās not a built-in Vim feature.Link to a GitHub repository: https://github.com/tomtom/tcomment_vim.
-
Zero mail inbox
I use email a lot. Maybe not as much as some, but I receive and send a fair share of mail each day. You might find it odd, but I love using email. Itās a pleasant and calm experience, and sorting through a pile of messages every morning rewards me with a sense of achievement. There are, however, few tricks I have up my sleeve, and I would like to share them today. These tips will not necessarily make you more productive, but they will provide you a with a more pleasant and peaceful experience of managing your inbox.
But first, I would like to set the sceneā¦
The wonderful Mailbox app
I started using iOS email client called Mailbox a little over a year ago, shortly after a release. Back then, before it was acquired by Dropbox, you had to wait in order for the company to grow their servers. I patiently waited āin lineā for almost a month and I finally was able to transfer all my accounts to this wonderful mail client.
It was worth waiting for. Right after starting, Mailbox archived all the conversations in my inbox, and presented me with a list of unread emails which looked an awful lot like a To-Do list. You can read and reply, archive the important letters, delete junk, or resend a conversation to yourself after a certain time span as a reminder. This is an extremely simple idea, but it is essentially what anyoneās inbox is: a list of things which need to be done. Some emails have to be replied to, some have to be acted upon in some other way. The ones that donāt get archived are deleted right away.
Mailbox turned my trash-filled inbox into a clean list of items I need to do. Since then, there never was an email I forgot to reply to, nor an important thing I forgot to do. Inbox can be referred to as āTo Doā, and an archive as āDoneā. This scheme makes it nearly impossible to miss anything of importance.
Unfortunately, Mailbox is an iOS-only application, and I started noticing the shortcomings of the desktop experience. And I do use desktop mail far more often than mobile. I decided to have a set of rules for managing my inbox; and this is the workflow I have been successfully using for over a year.
Workflow outside of the Mailbox app
I only use Gmail, and there probably are ways to have the same experience on other platforms. However, the Mailbox app works only with Gmail.
The first thing which needs to be done in order to start using the zero mail inbox workflow - is to empty it from all the read mail. Thankfully, the Mailbox app archives all your previous conversations the moment you install it.
Next, there has to be a way to implement a āsnoozeā button. There are always times when you canāt reply to an email, but donāt exactly want to keep it in your inbox (what an eyesore). Gmail does not provide a native way to resend your emails at later times, but I found a Chrome extension called āSnooze Your Email for Gmailā, which adds a simple āSnoozeā button to the Gmail UI.
Now that these two things are taken care of, there is a simple set of rules to be used when a new email comes in:
- Delete. Is it a notification? Does it require saving for future reference? A lot of things should be deleted. Bills, notifications, messages from robots: these donāt have to be saved. Items in Gmail trash live for 30 days, which is enough time to find something in case of an emergency. In addition, most of this information is available from some another source anyway.
- Snooze. Do you have time right now to read/reply/act upon this email? Remind yourself about it in a few hours or days instead.
- Archive. Conversation with a real person you might want to reference to later? I save all the email chains from humans, just in case I have to search through them at a later date.
- Reply and archive. Self-explanatory. Act upon and save for future reference.
- Let it be. This is an eyesore version of using the āSnoozeā button. You usually want to do this only if there are more important emails to read and act upon before getting to this one.
Ideally, when you keep items in your inbox - this means they have to be acted upon in some way. There is no reason not to archive or delete conversations which donāt require actions.
Bonus point: labels
This is a recent addition to my repertoire. I found myself often searching through certain sets of email, and hence Gmail does not support regular expressions itās quite a big pain in the neck for me when I canāt remember certain details. I created a set of thematic labels, which group emails by projects, products, and teams. And I started religiously assigning them to all the emails I archive. First it takes a bit of work, but after a while it becomes easy to identify a pattern and create filters to assist yourself with categorization.
As a result, I can narrow down a search to a thematic subset of emails, saving myself a lot of time and frustration.