Artisan

ar·ti·san [ahr-tuh-zuhn]

  1. a person skilled in an applied art; a craftsperson.
  2. a person or company that makes a high-quality or distinctive product in small quantities, usually by hand or using traditional methods: our favorite local food artisans.

I have recently taken an interest in watching videos where craftsman in various trades ranging from calligraphy to woodwork make stuff.1 These aren’t just videos of people quickly making things to quickly ship to their customers, these are people who have spent years working towards mastering their craft. These people are called Artisans.

These people spend their entire life crafting, taking time and perfecting each product they make. Taking time is something many people don’t do when creating these days. Artisans don’t even believe they have perfected at their job, they are always trying to improve. A good example here is of a 86 year old Sushi Chef called Jiro Ono. He is a master at Sushi with a 3 star Michelin restaurant. Even he is constantly learning, constantly looking for ways to improve, always challenging his own assumptions.

Always look ahead and above yourself. Always try to improve on yourself. Always strive to elevate your craft. That’s what he taught me. – Yoshikazu Ono2

Especially in the app world, there are too many people just putting things out there for no reason, they hurriedly write a piece of code or design something and put it out there as a finished product. This is wrong. Just because we now have tools that can speed up the process of creation doesn’t mean we can’t take the extra time to carefully think about how we can perfect it. The art of craftsmanship doesn’t have to be lost.

From all the people I consider to be a Artisan, they all have the following in common:

  • incredibly patient
  • takes their time
  • prioritise quality rather than quantity
  • always learning to improve
  • picks the best of everything
  • loves their job

Next time you decide to make something, take extra time crafting and re-crafting until it is perfect. You will almost definitely make something that sucks more than a few times. Spend time and think about why it sucks. You shouldn’t be in a hurry to move on to the next iteration of your product. You will be spending your lifetime in this craft. It is time to do it correctly.


  1. I highly recommend /r/ArtisanVideos/.

  2. Son of Jiro Ono who is being trained by Jiro. If you have time you should watch Jiro Dreams of Sushi.

Quick Start Guide to Setting Up Octopress From Tumblr

The title says a “Quick Start Guide” but this more of a full guide to fully migrate your tumblr blog to Octopress.

I’ve used Tumblr for the past 2 years as it was easy to set up and publish any content I wish to. It was easy to customise and best of all I didn’t have to worry about the hosting solution but seeing as most of my posts are about code and development I decided to give Octopress a try. This also gives me a chance to learn a bit of Ruby.

Migrating to Octopress was really easy with the jekyll-import gem. Even though the gem was fully provided, there was still some problems that came up. Here are the steps to make the migration go much more quickly. But before you start you should make sure you have installed Python and pip (this is a tool for easily installing and managing Python packages), here a guide I used for Mountain Lion.

  1. Setup Octopress following the docs from Octopress. This is relatively simple and shouldn’t take too long.

  2. Now this is the main part of the migration. Download the migration gem by running:

     gem install jekyll-import --pre
    
  3. You also need to install json gem and Python’s html2text package by running gem install json and pip install html2text. The html2text package is needed for the Tumblr HTML posts to be converted to Markdown which is the content writing language for Octopress.

    For some reason the html2text installation kept going wrong for me and kept throwing failed with error code 1. It turned out that I didn’t have permission to install it. To fix this problem simply run sudo pip install html2text. Now if you try to run which html2text you should see the a path to the executable. If not, reinstall Python, html2text and check that you have updated your PYTHON_PATH env variable to pick up the html2text.

  4. Download my modified tumblr.rb script. Octopress uses .markdown extensions, the script needs to be modified a bit and also trunicates titles if they are over a 255 characters long. Place this file into:

     /usr/lib/ruby/gems/1.9.1/gems/jekyll0.11.2/lib/jekyll/migrators/
    
  5. Now run1

     ruby -rubygems -e 'require "jekyll/jekyll-import/tumblr"; JekyllImport::Tumblr.process(ruby -rubygems -e 'require "jekyll/jekyll-import/tumblr"; JekyllImport::Tumblr.process("http://yourtumblr.tumblr.com",format="markdown",grab_images=true)
    
    If you are getting the following error Errno::ENOENT, the fix for this a bit hackey but works. It works by creating symlinks:
    1. cd to /usr/lib/ruby/gems/1.9.1/gems/jekyll0.11.2/lib/jekyll/migrators/
    2. cd ..
    3. ln -s %{TUMBLR_EXPORTED_POSTS_DIRECTORY}
    4. Run the migration command again.

    Note: The jekyll gem directory may vary if you are using a different version.

  6. In your the folder you ran the command should now be your Tumblr posts in Markdown. Move these to source/_posts folder of your Octopress directory.

  7. rake generate && rake deploy2

Redirect Tumblr URLs

Another step to fully migrate away from Tumblr is to fix the broken post links due to Tumblr’s URL structure. This was an easy fix with Alias Generator for Posts. With this plugin you can specify and number of aliases for each post, but it has to be added to each posts YAML Front-matter.

Download the plugin and move alias_generator.rb to the plugins folder. In the posts YAML matter add alias: /post/10976876616/my-post. This will redirect any request to http://octopressblog.com/post/10976876616/my-post to the post which contains this direct request. You can also give more than one alias.


  1. There are more arguments for this command but this one simply fetches the posts in .markdown extension and embeds all the images which are present in the Tumblr post. The image source will still be from Tumblr so you might want to download the images and do a find/replace as there isn’t a script for that yet.

  2. Don’t forget to git commit the source of your blog, otherwise if you lose it you won’t be able to build your blog again and will have to start from scratch.

Open Source Alternative to Google Reader

As you may know Google Reader will be shutting down on 1st July and I’ve spent quite some time looking at alternatives to replace it. I’ve been using Google Reader since 2009, I’ve read over 100,000 (from the web app) items and starred/shared over 2000 of them. I had a nice little setup going.

Google Reader was amazing, it had some amazing third-party apps like Reeder, it had a full array of features (the most important one was speed!) which made it the best RSS Reader out there. I used and abandoned a few alternatives, these ranged from using Twitter as a replacementt, Feedly, The Old Reader and NewsBlur. All these alternatives had pitfalls. Twitter was annoying because it required switching between my accounts and it was very annoying to use. Another thing that I had set up was any starred articles I did on Google Reader, they would automatically get bookmarked into Pinboard using ifttt, it used to be possible but it was removed due to Twitters API changes. The rest of the services I tried were either slow, provided too many features for me to care about or didn’t have an API or apps.

I wanted a reader that was simple, not bloated with features and did everything that Google Reader did. Tiny Tiny RSS did all of that, best of all it was open source and self hosted. It was simple and had plug-ins which you can install or develop your self.

I couldn’t install this on my server due to some constraints so I decided to look at Heroku. I came across a script called ttrss-on-heroku and he was trying to do the exact same thing as me. I used the script and got TTRSS set up with in 5 minutes and have been using it for the past 3 weeks and it has been working perfectly. The feeds get updated every 5 minutes and the cost of this set up on Heroku is 0. I recommend you read up on how exactly this works from the script developers post here.

I’ve installed TTRSS-Reader on my Android, while it isn’t pretty to look at, it does the job. If you have a iOS device, you might want to install Reeder1, you can use that with TTRSS. All you need to do is install the plug-in.

To have that Google Reader elements, I installed the following plug ins:

Another thing, I had to setup was starred articles to Pinboard. I used ifttt for this. In the Special folder there is a subsection called Starred, you can actually view this as a RSS feed, by clicking on the RSS icon on the top right-hand side. With this you should get something like this:

http://myrssreader.herokuapp.com/public.php?op=rss&id=-1&key=2cd209as34df3451eedef139cba4b19d10ee6158

With that feed URL, you can set up a ifttt recipe that takes the RSS feed and adds any new posts to your Pinboard.

This is my full setup to replace Google Reader and has been working well so far. Heroku is awesome for making available the free plan and hope they never remove this, and Andrew Dolgov is awesome for developing TTRSS.


  1. The Fever integration is currently only available to iPhone, but is coming to rest of the devices soon as tweeted by the developer.

Migrating From Tumblr to Octopress

I’ve decided to make a move from Tumblr to static blogging using Octpress, which is hosted on GitHub pages. This gives me the oppurtunity to learn more about Ruby and git. So far I’ve managed to sucessfully install Octopress after coming across a load of errors. It took me about four times to have it deployed correctly.

I will fully document about the process after I sucuessfully import my Tumblr posts to here. The importing is where the headache begins.

EDIT: Check out the full guide for the migration, here.

Hello World

Hello, world! This is a first post from Octopress.

My Journey With iOS and Android

Learning never exhausts the mind. – Leonardo da Vinci

A couple of months ago I my initial plan was to start learning about iOS and Android development, after a couple of weeks trying to learn the basics on Cocoa and Objective-C. I downloaded the Stanford iOS Development videos from iTunes U. But before I decided to watch the videos, I thought it would be best if I read up on the concepts on Objective-C so read this basic overview of it from Cocoa Dev Central. I got up to Lecture 4 and even managed to complete the first assignment.

After a couple of weeks decided to give it a rest as I was finding it difficult to understand and thought it is best I take a break from it to give my mind a rest. So I decided to start on Android. I did have an unfair advantage over Android as I have previous knowledge of Java, so was finding it relatively easier than iOS and was liking it more than iOS and because of this I kept going with it. I am a spatial learner and googled for some good videos which would benefit me, I found a series of YouTube video tutorials from thenewboston, these were brilliant (I finished these videos just a couple of days ago), they were short videos lasting around 4-7 minutes each, it goes through majority of the Android SDK which was a major plus. The only downside to the videos was that they were posted in August 2011 so the videos are taught from Honeycomb, but this downside also enabled me to learn more by researching which methods to use when they are depreciated.

That video series coupled with Stack Overflow made learning Android so much easier.

Now, after finishing the series I hit a brick wall, I didn’t know what to build, then I remembered that somewhere on the Internet I read that the best way to keep learning how to hack stuff together is by copying other things. I decided to start copying a text to speech app, and I don’t regret that decision one bit. I’ve managed to build something basic albeit the code isn’t very great but this is the best way to learn, start from something basic and gradually start building on that. My plan is to keep continuing with this app and keep learning on how I can make it better and move on to something else when I come up with an idea on my own.

If anyone is looking into learning Android I highly recommend this combination.

My future plan is to keep on with Android and maybe look back into iOS after a year or two.

Dear Google, Please Force Developers to Follow Android Design Guidelines

There have been lots of blogposts, articles in the news and discussions on why apps look so much better on iOS than they do on Android. The problem with these articles is that they go straight to the software and blame it, they simply say “because iOS is better”, I believe this is not the case. Android is not the problem, Android developers are the cause, they think just because it is easy to publish on the Play Store and make money they don’t have to care about how their apps look. They simply throw on some shitty design they do in about an hour or two and say that’s fine, let’s make my self rich.

There are many apps which look amazing, and the commonality between these apps is that they follow the Android Design Guidelines. Below are screenshots[1] just some of my favourite good designed apps from Android (TED, Foursquare and FlightTrack) :

The above screenshots show just how good looking the apps can be, if the developers just took some timeout and focused on designing it, and as you can see they follow the guidelines set by Google.

I just want Google to start looking at how many ugly apps there are in their Play Store and start enforcing developers to follow their guidelines and design better looks apps.

I am aware that Apple makes it easier to design good looking apps because of their Xcode and that for Android it is more time consuming (due to fragmentation) and is a big harder but in this century it is all about how good looking things are, if it looks crap then chances are you will be missing out on many sales/downloads.

I also want developers to focus their apps for Android OS 2.3+, and also the recent study on fragmentation of Android shows that HTC and Samsung are the winners and “Testing on the most popular Samsung & HTC devices will get you along way”[2].

Just as a side note, I wish developers would stop just porting their iOS designed app to Android, that is not how it is supposed to be done. They are two different OS with many differences. One of the culprits is Instagram, they have 99% copied their iOS design to Android. If they followed the guidelines and designed for Android from ground up this is how good it can look[3]:

So Android developers, go forth and focus on design as much are you are focusing on the code.

  1. The screenshots are taken from Android niceties blog, this blog highlights the best looking Android apps and worth browsing for inspiration.
  2. OpenSignalMaps done a study on the fragmentation of the Android market back in May.
  3. This was designed by snalty and posted on The Verge forums showing how it would have looked like if they followed the Android design principles.

Transport for London Storing Passwords in Plaintext

Yesterday while I was cleaning out my online accounts, deleted accounts and things I came across my Photocard login from Transport for London, I couldn’t remember what this account was for so I decided to login, weirdly it said my password was incorrect, but this would have been impossible for me (unless I got hacked) because I use 1Password to generate random passwords and always store them in the app. Thinking I might have made a mistake when I saved it, I decided to do the good old “Forgot your password” procedure, entered my email and everything, and then I got the email.

When I got the email, I was amazed to see that it wasn’t a link to reset my password but an actually password, I then decided to compare the password in the email and the password I saved in 1Password and then I was shocked to see that they actually emailed me my password.

Now, you might be wondering if they emailed me my password why wasn’t I able to login? Let me explain, 99% of my passwords at 16 characters, when I signed up to TfL photocard I created a 16 character password (it didn’t give me an error saying it has to less than 16 characters). But the password they emailed me was 10 characters, they truncated my 16 characters password to 10. How can this be possible?

I decided to Google around to see how I can find out if passwords are being stored in plaintext, I came across this question on Stackoverflow.

I read through all of the answers and comparing how TfL gave me my password:

  1. They managed to cut down my 16 character password to 10 and this is only possible if they stored it in plaintext I reckon.
  2. They emailed me my password in plaintext.

I am aware that this might not been they are stored in plaintext but these are very bad security practices for a government body.

Also TfL has multiple “minisites” which require a login, and I’m not 100% if this is the care for all of them or just this one. But, even if it is this one it is still a shambles because it contains my personal details.

NOTE: I’m not 100% sure that they are storing it in plaintext but the way the are sending me my password and somehow managed to update my passwords shows hints they might be and their security practices sucks.

Never Use Black

When you put pure black next to a set of meticulously picked colors, the black overpowers everything else. It stands out because it’s not natural.

I guess I have some changes to do on this blog. A very interesting article on why we should not use black when designing.

Everything About App.net

I didn’t really take much notice of this App.net platform that Dalton Cladwell aims to build,  even though there are numerous amount of tweets on my timeline every other day and just yesterday the project got fully funded at $500k.

This article titled “How App.net Can Change Everything” by Orian Marx really explains everything and is well worth a read. It isn’t just his opinions but information from many different sources as well.