Installing KVM on Ubuntu

Over the years, I’ve tried a number of virtualization engines but I’ve recently settled for KVM for the home. Virtualbox is great for a desktop but KVM is extremely light and has all the features I look for when it comes to a server version for the home. Here are my install steps to install KVM on Ubuntu

Continue reading Installing KVM on Ubuntu

2014: A Retrospective

As per tradition, I wanted to take some time to reflect on the year that passed and share publicly about my year. I’ve found that it’s an easy way to keep myself accountable to myself.

Year in Summary

2014 was a year of some pretty big changes both personally and professionally. From a professional perspective, I left WordJack for another adventure namely Kinetic Cafe. WordJack was an awesome experience  and a company that’s run by some pretty fantastic people. I’m proud of the time that I was able to spend at WordJack and also the things the company was able to accomplish during my stint there. I’m honoured to be a contributor to their success. Kinetic Cafe is a very different adventure altogether that deserves a focused entry by itself.
One of the oddities of 2014 was that traffic on my blog jumped massively. I typically got at best 1500 views a year on any pages. Traffic would typically be sourced from posts to my various social media profiles. This year, I average about 1500 views per month. I think most of the traffic stems from a handful of blogs about installing Plex, resolving some Rails issues on OS X and setting up Sublime for OS X. While the traffic numbers are flattering, the thing I’m probably most proud about is that my blogs are providing some value to the community that I draw a lot from. Numbers wise, I did write more in 2014 then in 2013 but still not quite a blog every 2 weeks. I also primarily focused on thekunit.com from a blog perspective. I’m still mixed about the various web properties that I have.
As part of the change of work, I’m now travelling to work by subway. My commute has increased about 2.5 hours a day. On the plus side, as my commute starts and ends at terminal stations, I’m usually able to get a seat so that commute time has given me some additional personal time which I never got while working from home. In that time, I get to read, write, code and sometimes sleep if I’m especially exhausted. I write some code every week now and check in to my personal repositories. I’ve spun up a few pet projects but none of them are ever at the point where they generate direct business value. I’ve even created a base Rails template of features that are common in most of the ideas I have.

Keep Doing

  • Keep coding – I enjoy coding and I’d like to continue to do that. It’s a good break from my day-to-day job and it allows me to invoke my creative side
  • Keep writing – writing is a good way for me to reflect on the things that I’m doing and observing. It also continues to force me to think through some of my ideas and opinions

Stop Doing

  • Stop working on too many ideas – I’ve started on a number of projects by myself as well as with others. None of them are far enough for it to actually be useful. While they’ve been gratifying personally as they’ve allowed me to spend some time writing code but they haven’t been useful beyond that
  • Stop allowing work to be consuming – work will always be crazy; I know that. While I’ve actively capped the amount of hours I work, I haven’t done as good a job of not let it consume my mind as well. I find myself being mentally exhausted and towards the end of the year, there was this dull fog floating over me where I was working lots but not necessarily focused or productive

Start Doing

  • Start reading more – I read a lot of blog entries to keep up with my work but I haven’t taken the time to do any leisure reading. My goal is to read 2 books for pleasure this year and 4 books for work.
  • Start focusing on 2 projects at any given time – I want to work only on two projects at any given point in time; one as a personal pet project and the other will be with whichever friends who want to work through an idea together
  • Start being more healthy – I need to work out more often. My goal is to work out at least 3 times a week
Happy 2015!

My thoughts on Android Wear after some months of use

I thought it’d be appropriate to write about my Smart Wear experience after the release of the Apple Watch news. To re-cap, I bought my LG G watch when it was first released and I still love my LG G watch. In fact, I feel naked without it on my wrist unlike the Pebble which I would remove for days and not worry too much about it. Here are some highlights of my experiences

It’s an extension of my phone

There’s much debate in the community about how the early Android Wear devices were not similar to a watch and how that was a detriment to the experience. I haven’t worn a watch since 1996 which is almost 2 decades ago. The key attraction for me was that it did more than my watch. If I need the time, pulling my phone from my pants is typically pretty quick and I don’t have to check for the time all too often during the day. However, not needing to pull my phone from my pants for every beep or buzz is a really nice thing. I can quickly flick my wrist to check the notification and dismiss it from my watch and carry on what I’m doing.

Google Now integration is REALLY useful

I used to think that Google Now voice recognition feature on my phone and tablet was useful in particular for task list integration. It’s significantly more useful when it’s part of the watch because my watch is always attached to my wrist and my watch is connected to my phone. I find that I’m using this feature significantly more now that it’s attached to my wrist.

One day’s worth of battery is enough if you can rapidly charge the battery

I actually get more then a day’s worth of battery on my LG G watch. I typically charge my watch just before I get to bed and then pick it up again in the morning. I don’t have the need to wear my watch overnight. However, there was a day when I forgot to charge my watch and when I woke up, there was 16% left of battery on it. I put the watch on the cradle, did my usual morning routine and picked it up again as I was leaving the house. The battery charge was up to 76% and lasted me until I went to bed the next night.

You can install apps on the watch

While the watch is primarily an extension of the phone, you still can install apps on it. The early apps such as Flappy Bird seemed ridiculous. However, something like WearBucks is a very practical use case of an app that works well without being tethered to a phone. In general, apps that act as a remote control for the phone work really well. Here are some apps I installed on my watch:

  • Wear Mini Launcher – gives you easy access to your apps and settings by swiping from the top left of the screen
  • Phone Finder – Allows me to find my phone when I can’t find it and locks my phone when the phone is out of range
  • WearBucks – Starbucks on my watch
  • Wear Hotspot – Turns on my phone hotspot without me having to take it out of my pocket

There is still some quirks and lots of room for innovation

The LG G watch is really a simple device. It’s a device connected over Bluetooth LE leveraging Google Play and Google Now services using a touch  and voice interface. Google really didn’t add much more capability then that. It’s still very much a minimum viable product which in many ways is a good thing. It’s shockingly simple to use and understand. A lot have been left to the development community to innovate on it. In general, I find apps that act as a remote control for the phone or provide quick and easy access to information seem to work really well as a general use case. One idea in particular surrounds the integration to the Internet of Things; there are more and more connected devices out there. The watch seems like a practical interface for things that can be done quickly such as opening a door remotely for a friend – Thanks, Roberto for the idea 🙂

After about 3 months of use, I still really LOVE my LG G watch. I love the simplicity and pragmatism of the watch.

Upgrading the OnePlus One to Android Lollipop

I was privileged enough to purchase my OnePlus One a while ago as it was the first Android phone that launched with CyanogenMod as its official ROM. Traditionally, ROMs like CM would be the first to market with upgrades but Google has been changing their policies by releasing their code to large manufacturers earlier to encourage them to upgrade their marquee models to the latest version of Android as soon as possible. While the ROM is not an official one, I decided to upgrade my OnePlus One to the Android Lollipop. After surfing around the web, I decided to come up with a summarized version of setting up my version of how I ended up installing Lollipop.

These steps are OSX specific

Preparation

You typically would need to unlock the bootloader, install a custom recovery and then root your phone in order to replace it with a new ROM. This steps that I’m outlining here would be the basic prep to do that and you can always replace your ROM with other OnePlus One ROMs that you choose to in the future. OnePlus actually has a pretty good write up on the site as well as this is a summarized version of those steps

  1. Installadb/fastboot,
    • Download Android SDK
    • Unzip it into a folder. I typically create temp in my user folder. To access it:
      mkdir ~/temp
      cd ~/temp
  2. Install Android SDKto access ADB andfastboot
    • Go to the folder you’ve unzipped (i.e. /Temp/Android-SDK)
    • Run the Android UI
       ./android sdk
    • Select and install Android Platform Tools
    • Once this is installed, you should see the platform-tools directory in the folder as well as the adb and fastboot files
  3. Unlocking theBootloader
    • Reboot the machine into Fastboot mode
      Shutdown the phone
      Press the Volume Up button followed by the power button. Ensure that the USB cable is not plugged in.
      If the phone is booted into Fastboot mode, you’ll see the “Fastboot Mode” text
    • Type “fastboot device” and you should see your device there
    • Type “fastboot oem unlock”
      This will also wipe your phone. You should see the Android robot being fixed and then it will automatically reboot your phone when you’re done
    • Once the phone is re-booted, turn on developer options
      • Go to settings → About Phone → Tap on Build Number 7 times
      • Tap back and you should see Developer Options
    • Turn on USB debugging and disable CM Recovery Protection
      • Go to Developer Options and select “ADB debugging”
      • Go back out to settings and re-enter Developer Options. You should see the “Update CM recovery” option
      • Uncheck the “Update CM recovery” option
  4. Download the latest version of TWRP for OnePlus One
    • Download the latest TWRP recovery
    • Copy the file to the platform-tools directory
    • Reboot the machine intoFastboot Mode by typing the following in theOSX terminal
      adb reboot bootloader

      or shutting down the device and rebooting it to the bootloader by pressing the volume up button and power

    • Install the custom recovery by typing
      fastboot flash recovery .img
    Once the recovery and bootloader is installed, you’re now ready to install any ROM of your choice. In this particular case, we’ll be installing CyanogenMod.
  1. Download the latest version of CyanogenMod 12 (Lollipop)
  2. Download the latest version of Google Apps
  3. Copy the files to the Download folder on your OnePlus One
  4. Shutdown the device
  5. Reboot the device in recovery mode by  pressing volume down and the power button
  6. Wipe your current data
    • Click on the Wipe Button
    • Click on Advance Wipe
    • Select Davlik Cache, System, Data and Cache
    • Swipe to Wipe the existing data
  7. Install the new ROM
    • Click on the Install button
    • Select the ROM installation file you had downloaded earlier
    • Swipe to Confirm Flash
  8. Install Google Apps
    • Click on the Install button
    • Select the Google Apps file you had downloaded earlier
    • Swipe to Confirm Flash

You’ll note that I didn’t go through the root process. Overall, I have to say that I’ve been pretty happy with the CM Lollipop ROM.

Updated: One thing to note is that CM12 is currently not an official build so I modified the link to point to the CM12 build. Also, special thanks to Jesse Anger for creating the original install instructions and doing the original testing

Re-installing ruby after upgrading to OS X Yosemite

I recently upgraded to OS X Yosemite and ran brew install. As a result, my rails setup failed. In the past, re-install ruby worked. However, in this case, when I re-installed it I ran into this issue

BUILD FAILED (OS X 10.10 using ruby-build 20141016)

Inspect or clean up the working tree at /var/folders/93/p8zdbgn14j99_l5x7js97zkm0000gn/T/ruby-build.20141020234934.40511
Results logged to /var/folders/93/p8zdbgn14j99_l5x7js97zkm0000gn/T/ruby-build.20141020234934.40511.log

Last 10 log lines:
checking for stdint.h... yes
checking for unistd.h... yes
checking minix/config.h usability... no
checking minix/config.h presence... no
checking for minix/config.h... no
checking whether it is safe to define __EXTENSIONS__... yes
checking for cd using physical directory... cd -P
checking whether CFLAGS is valid... no
configure: error: something wrong with CFLAGS=" -O3 -Wno-error=shorten-64-to-32 "
make: *** No targets specified and no makefile found. Stop.

To fix the issue, I had to reinstall ruby with the following flags:

RUBY_CONFIGURE_OPTS="--without-gcc --disable-install-rdoc" rbenv install 2.1.3

 

Setting up WordPress on Ubuntu

Lately I’ve been finding myself installing WordPress sites for numerous reasons. WordPress is a shocking versatile web site framework built on PHP if you just want to publish content extremely quickly. There’s typically a plug-in for any function that you’re looking for. In order to run WordPress on Ubuntu, you’ll need to do the following things:

Setup PHP

  1. Install PHP

Setup the database server

For instructions of how to manage MySQL, check out my MySQL cheatsheet

  1. Install MySQL
  2. Install the MySQL module for PHP on the web server
    sudo apt-get install libapache2-mod-php5
  3. Create a new user
  4. Create a new database
  5. Give the user access to the database

Set up the Web Server component

  1. Install Apache
  2. Download the latest version of WordPress anduncompress it
    sudo wget http://wordpress.org/latest.tar.gz
    tar -xvf latest.tar.gz
    
  3. Move your site to a new directory and give your Apache user access to that directory
    sudo mkdir /
    sudo cp -r wordpress //
    sudo chown -R www-data:www-data //
    
  4. Create an Apache configuration file for your site
    sudo nano /etc/apache2/sites-available/.conf
  5. Paste the following into yourconfig file and save it
    <VirtualHost *>
        DocumentRoot "//wordpress"
        ServerName 
        <directory "="" <directory="" name="" wordpress"="">
            Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Require all granted
        
    
  6. Enable the configuration
    sudo a2ensite .conf
  7. Enable the appropriate Apache mods
    Enable rewrite for pretty permalinks

    sudo a2enmod rewrite
  8. Reload Apache
    sudo service apache2 reload

Assuming you’ve already set up your DNS settings to point to the right server, you should be able to get started with setting up the site. When you go to http://, you should be able to start setting up the site.

These instructions work on the following configurations:

  • Ubuntu 14.04 and Apache 2.4

 

LG G Watch – an initial review

I have to admit that I entered into this foray with very low expectations. Reviews at the time when I ordered the watch, which was the first day it was made available for public release, was very thin to say the least. The devices that most reviewers were using had limited functionality as they were only set to demo mode during Google I/O 2014. I remember telling a friend that I ordered the watch which I thought I would hate the least with the mindset that I would likely replace it with a Motorola 360. For some context, I already own a Pebble watch which I acquired during their Kickstarter campaign which I liked a lot. My test for the LG G Watch to use it for my summer vacation in Europe. I wore the watch everyday. I was on the go a lot and I was in a mixed environment of having internet access and was rarely in a position where I could charge the watch.

Here are some of my photos on Google+

Continue reading LG G Watch – an initial review

Smart Launcher Pro Review

The ability to use the non-standard launcher is one of the huge differentiating features when comparing Android to the iOS platform. Lately I find myself using the Smart Launcher Pro 2 as my default launcher. I happened to stumble over it while surfing through the Google Play Store. As switching launchers is rather easy, it’s easy to try something different every so often and yet go back to an old one if it doesn’t pan out.

Continue reading Smart Launcher Pro Review

Acer C720P – Initial Review

I had been spending time with two different Chromebooks in the past month or so which led to my last blog about Chrome OS. The first device that I tried was the HP Chromebook 11 device. My trial on that device was about a week. The hardware was very nice – it was light but felt quite solid. However, I found the device slow as the specs were very similar to the Samsung Series 3 which I got last year. However, what was interesting was that it didn’t crash like the Samsung device does. I returned it briefly after I got it. When the C720P was made available, I decided to some really simple tests such as put web site addresses that was content heavy and press enter at the same time – in all cases, the Acer C720P rendered quicker then the HP. This led to my decision to get the Acer C720P. The purpose of this blog will be to compare my experience with both the Acer C720P with both the HP Chromebook 11 and Samsung Chromebook Series 3.

Continue reading Acer C720P – Initial Review

Browser OS – the future of personal computing

I was quite impressed with the idea and implementation of Chrome OS last year although I ended up giving up the Chromebook for a new Macbook Air. For me, the reason why I gave up the Chromebook was less about the failure of the OS but rather the shortcoming of the physical hardware. I still believe that Chrome OS is the future of computing. So when Google announced new Chromebooks this year, I was eager to try out the new hardware to see how they would fair with new hardware.

Opinions about People, Process and Technology

Optimization WordPress Plugins & Solutions by W3 EDGE