2016 was a great year

Some of the highlights of the year gone by

Moved to spacemacs

I had started experimenting with spacemacs around late 2015. In 2016, I completely switched to spacemacs. I'm consciously saying spacemacs, because although it is “emacs” I am used to spacemacs keybindings, and may not be able to use “plain” emacs on any other system. (Turns out it is said that unlike vi/vim, no two emacs users can use each others system, because of heavy personal customizations.😉 )

I used spacemacs mainly for python development, but used org-mode as well.

I tried using mu4e partially successfully for a while, but gave up. Time to give it another go in 2017.

Blogged

Wrote 28 posts on my (relatively) new blog Not enough on this blog though. I mean to combined both of them this year. See

Why it worked ? I had clear focus about what to write about. Also, I had decided to “just ship it” rather than keep editing the draft till it is perfect.

Sketched

Did about 25 sketches.

Some of the initial ones are scanned/uploaded almost as a second thought (and it was. They were drawn to amuse my son, hence “any” paper would do.)

Later I because a bit conscious. Now I draw for myself. Hence better “paper”, background etc.

Shipped Product

In 2016, I shipped one more product. This is my third product which I created from the ground up. Earlier two products are in web2py.

This time around, I did several things differently.

  • Used REST API + Javascript for the front end - style architecture. (Just to be clear, I created the REST API, someone else worked on the web app and the android app)
  • Used Python Eve framework (based on flask)
  • Started writing unit test cases (using pytest). Helped a lot with a big refactoring effort.
  • Wrote API documentation using sphinx
  • Used gitlab (Earlier products used privately hosted git repo)

Plans for 2017

  • Start using golang seriously
  • Email within spacemacs
  • Continue blogging
  • Continue drawing

6 things to make (my) blogging frictionless

Friction

Reflection on some issues I faced. If you find some of these useful, great. The post is not intended as an advice

Background

Recently I heard the talk python to me podcast where A. Jesse Davis was interviewed. The topic was a bit different than usual python related topics. It was about how to make blogging easy. Jesse talks about several nice things, including the fact that why we should not feel guilty for not blogging regularly.

You should listen to the podcast here if you have not.

So the idea was at the back of my mind for a while, and this post is sort of brain dump of why I am unable to publish regularly inspite of having content written.

Finalize the source format

I kept moving between org and rst. I liked org when I started using emacs. (In fact that was the reason to start using emacs) So few of my initial posts are in org I had one post in asciidoc as well. But I think I will stick to reStructuredText mainly because most of the static site generators will have support for this format.

Even bigger number probably support markdown but then there is no standardization, you have too many flavors out there. Also, I think rst is bit more richer than markdown

I had one post in asciidoc as well

Create/Use templates

In order to get the thoughts on paper (so to speak) I start typing in an empty file. By the time I am done, I have very unformatted text that requires “formatting”, and this is where the delay in “publishing” comes in. I have so many written-but-unpublished posts.

Having templates with headers and categories/tags pre-populated would be good way to reduce the friction. Jesse talks about how we mostly have about 5 different types of posts. May be create just 5 templates for 5 “types” of blogs, and remove the decision making from choosing the categories and tags. (I never remember the list of categories and tags I have used, and always have to search the older posts to get the list, sorta)

On second thoughts, I think nikola already has a script to create a new posts. May be I ought to use that ?

Write more frequently

This may seem confusing. Let me explain. As I mentioned that I usually start writing as a plain text, and later “format” the contents. One of reasons why this happens is because I can't remember the syntax at the time of writing. (and that happens when one keeps switching between org to rst to md. See the first point.)

If I write more often using only one platform, the “formatting” syntax will be part of my memory. I already write the documentation (using sphinx) in rst -another reason to finalize on rst over org or md

Finalize the blogging platform

I have one blog in pelican. (This one. updated after a long time) and other blog in nikola. Switching between them just takes mental effort. If I were to standardize on it, there won't be “switching trouble”

I also want to consider hugo, but my initial attempts to get a blog rolling with a theme-that-i-like hasn't worked well.

But irrespective of the blog generator, if I standardize on reStructuredText, I don't have to worry about switching the blog generators (I think)

Finalize the blog home

On a related note, having single home for my blogs also might be good idea. It is always an effort to decide where should a specific post go. While with my second blog, the idea is very clear - it is about “what I learnt”, so things like “thoughts” should not go there. Yet, sometimes it is not easy. May be just have one blog with category as “wiltw” (short for “What I learnt this week”)

Focus on the content

I am never happy with the themes. I was almost happy with Material Design theme for nikola, but it could not render bullets (can you imagine?) So I switched to a simpler theme. But I am not happy.

But I should just pick one up, stick with it, and not worry about the “look”

I have read several great blogs that look down right ugly, but the contents are worth in gold.

Publish now, refine later

Perfectionist in me wants to read-edit-read a LOT after my initial writing is done. I spend a lot of time in this. May be I should just publish it first, and then refine it.


Photo by Kaitlyn Baker

Why I moved to Static Blog ?

Pelican

Little bit of a histoy of my blog at various platforms.

This is my third attempt at blogging.

Wordpress.com

First one is still on hosted wordpress site. In a way, that is nice. Pretty much no administration needed. One can install the plugins that are tested by wordpress.com They also upgrade the platform for you. Great for testing the waters for the first time blogger. I think it is better than blogspot (I can't remember if I had one of those, and moved to wordpress)

Self-hosted Wordpress

But after a while one (at least, I) becomes ambitious. I had my own wordpress blog hosted on my own domain. It was a great experience. I got to try my hands at setting my blog just the way I want. But after initial excitement was over, it started to become burden. One had to spend a lot more time administering the blog (upgrade to latest version of wordpress, and the plugins) and less focus on writing. I never upgrade the blog to wordpress 3 (which by now is very mature) I always kept postponing it because upgrade might break things, so I would do it when I have enough time.

Unfortunately, after a while I wasn't writing much, and stopped paying attention to the blog. I had also used my non-standard email ID with the hosting provider.

The cascading effect was recently I lost access to my blog and the domain. It was completely my fault. My hosting provider did send multiple reminders for renewal, but I wasn't checking that account often enough, and when I finally did, they had probably given up. (I did contact them later, but they ignored my emails)

But I definitely learnt a lot.

Posterous

Then while I still had my self-hosted wordpress blog, along came posterous. What I liked about them was I could post via email. I really liked the concept. They didn't great themes like wordpress, but if the focus was writing, then it shouldn't matter.

…. and then they were acquired by twitter. As everyone had predicted, twitter shut them down.

This was kinda the last straw. I had two blows back to back (One was my own fault, other not so much) But the result was in both cases, I had lost access to my blog.

Finally, Static website …

This was the time, static website generators were picking up. Over at HN I came across several options like Octopress, Jekyll, Pelican . (I chose Pelican because it is written in Python, language which I am comfortable with, as opposed to Jekyll and Octopress.)

It is easy to host the static website anywhere, include the Free Heroku plan (Which I might do in future) But hosting it on github seemed like an easy and popular choice.

BTW, I did get a backup of all my posterous posts, but they were in XML format. Format which was not useful to me as-it-is. There is a ruby script that “downloads” all your posterous posts and converts them to markdown. It was not without problems, but it worked. But it is a topic for another post.

Securing the source

Based on my recent experience, I am aware that github might one fine day decide to stop supporting this feature. But if they did, that is OK too, because I will still have access to my contents in the git repo in the form of “source code” With Pelican I can re-generate the pages, and host it someplace else (like Heroku)

What if github shuts down (or makes all accounts paid, or bought over my big company, and the parent company shuts it down, whatever..) I have already thought of contingency plan for that as well. I push the same “code” to bitbucket repo as well.

While I think chances of both github and bitbucket going away at the same time are slim to none, One can always have the copy of local git repo in the dropbox folder, for additional security, Can you not ? :)


Photo by Gareth Davis