β-release

version x.1 - always β always released

SiriMingle - Siri Assistance for Mingle

siri, iphone, osx, ios, siriproxy, mingle, sirimingle, api, crack, httparty, plugin, robot, sudo

Announcing SiriMingle - a tool to interact with Mingle using SiriProxy. Bringing the power of Siri voice control to modify cards, get status and ask questions about the project.

It can be downloaded from sirimingle and used with SiriProxy.

SiriProxy is a proxy written in ruby 1.9 to allow people to use the power of Siri to perform useful tasks. Setting up SiriProxy was not trivial before. Over time and on 12.04 it can be more easily done.

Here is how:

  • Install Ubuntu 12.04 on your virtualbox(virtual box link), or natively on your desktop/macpro.(For dualbooting on macpro follow the instructions : ) On virtualbox the following setting needs to be configured to ensure that the VM running Ubuntu gets a native IP address on the host network.

  • Install git, ruby et al.. (Assuming that you already know this)

  • Download the install_deps.sh script to get you started. It is recommended that you download the whole project. Run the script. This script should install all dependencies required for dnsmasq. dnsmasq is a tool that allows you to perform dns masquerading on any network. After running this script you should have the following : dnsmasq, rvm and ruby 1.9.3 installed.

Guide: Setup Working SiriProxy is a great guide to setting SiriProxy correctly. You can choose to ignore setting up the Three Little Pigs server. Follow the instructions closely to setup Ubuntu 12.04 with dnsmasq and Siriproxy.

If everything has gone well so far you should see

    "Starting server on port 443"
  

This verifies that the dnsmasq is setup correctly and that Siriproxy can be run on your machine.

Now generate a certificate

    siriproxy gencerts # generates certificates in .siriproxy folder
  

Email this certificate and install it on your phone by opening the email and opening the attachment.

Once the cert is installed change the dns settings for the network and add the IP address of your Ubuntu machine before the other DNS server entry.

Now your phone is ready to talk to your Siriproxy server.

Restart your SiriProxy server by

    rvmsudo siriproxy server
  

Invoke Siri on your phone: You should see the interaction logs in your terminal indicating that infact Siri is connecting to your SiriProxy via your dnsmasq.

Once you have SiriProxy setup change the ~/.siriproxy/config.yml to add your mingle hostname and credentials. This will allow SiriProxy to interact with the Mingle API.

Restart SiriProxy by doing the following:

    rake install

siriproxy bundle #this should install the dependencies including the siriproxy-sirimingle plugin.

rvmsudo siriproxy server
  

Once the server is started you should be able to talk to SiriMingle.

Let the Siri be with you.

Comments

Installing Ubuntu on MacPro With OSX Lion - Dualboot

osx, linux, dualboot, boot, REFIt, EFI, grub, partition, bootcamp

Installing Ubuntu on Macpro turned out to be little trickier than I would have liked it to be. For starters OSX Lion does not detect the Ubuntu ISO disc as bootable or something that bootcamp can load an OS from. There are tricks on the web that allow you to get around that.

I am listing a few quirks that I came across while getting all this to work.

The Challenge: Install Ubuntu on a MacPro that is running OSX Lion and make it so that it can dualboot to ubuntu.

  • Install REFit

Download and install REFit. This will allow your BIOS to work with bootloaders other than that of Apple. Once you have installed it restart you machine. If you are lucky you will see the REFIt menu on restart. Do not be disappointed if you do not see it at first. Restart again and you will surely see the REFIt menu this time. Once you have REFIt installed it is time to partition the HardDisk to make room for Ubuntu.

  • Partitioning the disk

OSX comes with two utilities that allow you to partition your hard disk. Word of caution: Do not use another partitioning tool as it has been knows to cause problems - especially when booting back into the Mac. You will put your data on the Mac OSX partition at risk. Given that you have to use OSX to atleast initially partitioning disks - you can choose between Disk Utility or Boot camp assistant. In both scenarios the partitioning is pretty clearly documented and easy. In the case of bootcamp with the new UI select “Install or remove Windows 7” and uncheck “Download the latest Windows support from Apple”.

When prompted choose the partition size for Windows by dragging the partitioner. Once you have a desirable size configured clicking ‘Continue’ will look for a Windows 7 disk for installing Windows on the new partition. You can trick the boot camp assistant by actually inserting a bootable Windows 7 disk. Once it detects the disk and starts partitioning you can remove the Windows 7 disk and replace it with Ubuntu bootable disk. Once the partitioning is complete close Bootcamp Assistant.

  • Installing Ubuntu

Now restart the machine and hold the ‘C’ key while restarting. This will allow you to boot from the bootable CD Drive. Once booting starts you should see the Ubuntu installation UI. Follow the instructions till the time, when it asks you for a partition to install Ubuntu. Choose manual partition editing. At this moment it will show you a list of existing partitions. In this list find the partition you created for Windows(should be labelled as fat32 or msdos or something that indicates its a windows partition). Delete this partition. You should have a partition called “FREE SPACE”. Now select this partition called “FREE SPACE”(about the size of your original partition for Windows) and create a partition on it of type EXT4 and “/” being mounted from here.(Make note of this partition information eg: /dev/sda3)

Write this partition information to the disk and let Ubuntu do its thing. Follow the instructions on-screen to configure Ubuntu to your liking. Ubuntu will ask you where it should write the grub bootloader. At this prompt enter the above partition information /dev/sda3. This will ensure that REFIt will be able to find Ubuntu on your harddisk and allow you to boot into it. This step is the key to the process of being able to use the Ubuntu partition at all.

Once the installation of Ubuntu is completed shutdown your machine and restart. On restart you will see a REFIt menu with an option to select ‘Penguin operating system’. You may see multiple penguins. Pick the penguin that points to your harddisk partition above(/dev/sda3 => ‘Boot from Hard disk partition 3’) option and you can boot into Ubuntu.

With this both Ubuntu and Mac OSX can be booted into without much trouble. Infact on booting into linux Grub now detects Mac OSX as well.

Happy Dual booting…

Comments

Moved Blog to Octopress

I am in the process of moving the blog from my jekyll based site to octopress. You will see that some of things work like: You may notice :

  • Posts show up clearer and nicer - because of octopress font selection
  • you will see my addition of tag cloud to octopress - so tags will show
  • archives - a list of archives arranged as an index page

What does not yet work :

  • Tags are not aligned on the page
  • Disqus comments are missing - thanks to discuss your comments are safe. They just need to be linked correctly
  • RSS feed is missing
  • My color scheme is missing - so does not reflect the author’s personality ;)

Hope you will bear with me while I make things easier for me to post and bring a more pleasant reading experience for you.

Thank you !!!

Comments

Why Blog?

blog, reasons, blogger, octopress, github, creative, creativecommons

I have come across too many people who are either not willing to blog, or do not see the point. This blog post is for them.

(Recently, Elena Yatzeck posted on this subject as well.)

I recently read a one-liner “I see I scorn, I do I regret, I blog to not forget”. (Usually I am turned off by one liners intending to pack everything including the reason for life in minimum words, but this one I like because it is funny enough.)

This above quote is enough motivation to keep me going on my blogging. In the day and age of #fb and #RT it is difficult to get people excited about the value of details and being able to express in elaboration. Blogs come to the rescue.

I experience this loss of details quite a bit. Recently on my M$ platform based assignment I forgot to blog what we did to make our .NET application development painless. Now when I try to recollect some lessons I learnt I have to depend on my memory which is sloppy about details. I blog to ensure that I have less of these situations and that I can use my experience to my advantage – also maybe readers of my blog will benefit as well.

I would like to encourage more blogging so that I can benefit from your knowledge and learnings.

Here are a few reasons you should consider blogging:

  1. Twitter is too short to explain anything in detail.
  2. Facebook will not understand when you say a lot without being emotional about it.
  3. Your long term memory is not that good – also it is not google searchable.
  4. All the short messages are easily lost in your tweetdeck. Google search will yield the desired message but will not provide you the context it appeared in.
  5. Blogs are on the web and searchable via google.
  6. Blogs can be as elaborate as you like – can be tagged, followed, copied and pasted from, tweeted about, and can turn into articles for publication.
  7. Blogs can also be collected and turned into books – for free.
  8. Self promotion – A good post by Jay Fields
  9. Blogs are permanent records(mostly) and they can be used to jog your own memory – or reminisce.

How and where to blog?

  1. Wordpress
  2. Tumblr
  3. blogger – beware of their weird copyright requirements.
  4. githuboctopress
  5. build your own blog engine and push it to heroku

What are you waiting for? Go write something.

Comments

Ubuntu Power Management

ubuntu, oneiric oncelot, unix, linux, lubuntu, unity, power, powernapd, 11.10

(Intended date of release 2012/02/13. Procrastination…. Finally released today.)

After upgrading to Ubuntu 11.10(Oneiric Oncelot) I had a unique problem with my machine that was not googleable. All I could see is a symptom where my CPU fans would start full speed and keep blowing for a while. While they were up all my CPUs would be at 100% utilization. On various occasions that this would happen I had to restart the machine as it became unresponsive. Often times this would happen at nights when the machine is not being used.

Recently when I was researching how to manage power settings with LUbuntu(which is harder than it sounds) I found that powernapd was something that Ubuntu running in background to manage power usage of the machine components. This sounds like a reasonable thing to run since Ubuntu now supports Netbooks, Notebooks and Desktops all at the same time. In my case since I am running Ubuntu on a desktop it did not need such strict power management.
I decided to try and turn this daemon off. Now my CPU utilizations reflect the amount of processor power my currently running applications use and there is no fan whirring anymore.

ProTip: Tweak your Ubuntu – Lubuntu is minimalistic so use Ubuntu Gnome to tweak LUbuntu settings.

Comments

Mac Remote With Presentations

conference, speaking, presentations, remote, mac, osx, iredlite

When preparing for a presentation recently I was looking at various presentation tools at my disposal.

Purchasing one of those mouse like remotes was an option. I already had a magic mouse that could do the job. I also had a mac remote with keys that indicated forward/reverse. But by default it cannot be used as a mouse like remote for forward/reverse.

I stumbled upon iRedlite . Just the tool I was looking for to use the slick mac remote for my presentation.

As an added bonus iRedlite is programmable to achieve different functionality based on the context of the application. Also that application context can be changed using the remote.

Thank you tin:b for such applications. They have many more – check them out.

Comments

Agile and Beyond 2012

conference, speaking, agile, lean, kanban, detroit, michigan, ford, builds, CI, feedback

I had the opportunity to speak at the Agile and Beyond conference recently. I loved the crowd, excellent turnout of 650+ people mostly from the Detroit MI area. Everyone was enthusiastic about learning how Agile can change the way they do their daily jobs.

I had a chance to present my ideas on improving how you refactor builds to get better feedback and change the way you work. I was also excited because this time I did a complete powerpoint/keynote free presentation. I used deck.js and the good markdown tweak called keydown. Need to make a few feature additions to keydown soon.(I said it first : A fun project would be make impress.js markdown friendly, like keydown.)

Lots of great presentations – varying form lean, kanban to plain old agile. Excellent facility at the Ford Convention Center, also had some time to see Detroit and also The Henry Ford Museum.

Overall a great experience. Thank you agile and beyond team.


(Ford Convention Center image from agileandbeyond.org )

Comments

Bundler With Vendorized Gems

bundler, ruby, rails, gems, rubygems, vendor, dependencies, ack, cut, rake, gemset, rvm

Bundler is a tool for managing installed libraries on a ruby project. It comes bundled with rails 3 but can be used standalone without rails.
Bundler tries to fix issues with having to manage your gems(and their related dependencies and versions) in a clean way. In doing so it allows you to work on your application and not have to worry about dependencies sucking the life out of your releases.

Off late I have been working on an application that vendorizes its gems and packages them while shipping the application. Since this application is also been built in the traditional way(rails 2) I was looking to use bundler with it to do the vendorization. Turns out bundler supports such a use case.

For a packaged application bundler allows you to freeze the gems and unpack them in the
location of your choosing. This path can then be added to your application to load all the
frozen gems. The following command with the path set to the location you would like to unpack your gems allows you to use bundler to vendorize gems.

bundle install --path vendor/bundle

You can then add these gems to your application as you would for vendorized gems.

Bundler with rvm and gemsets

One of the popular opinions is to just use bundler and ditch gemsets. I tend to use both gemsets and bundler to my advantage. This helps especially when I am working on multiple applications and when I am not online all the time. I ensure that my bundle is upto date before I go offline and then can work on my apps when I am offline by switching gemsets. Sometimes I tend to have multiple gemsets built when I am working on changing or experimenting with gems.

That way I do not have conflicts when I am using one version of rake for a ruby 1.8.7 application while my other ruby 1.9.3 application uses the latest and greatest rake gem.

Cleaning your gems before using bundler

Bundler allows you to install and update a set of gems based on the Gemfile. But it is not obvious how you would set up an application that has local gems installed to start using bundler. To start you need to delete all gems from the current gems. Having a clean workspace allows bundler to install gems from Gemfile without conflicts and can prevent a lot of confusion when multiple versions of a gem being installed side by side.

Here is a snippet that will allow you to clean your gemset.

Delete all gems from gemset
gem list | cut -d ’ ’ -f1 | xargs gem uninstall -aIx

In most cases this will work. But rake seems to be installed as part of the global gemset. So the above command will delete all gems till rake and then abort. To skip deleting rake change the above script as follows

gem list | cut -d ' ' -f1 | ack -v 'rake' | xargs gem uninstall -aIx

(ack is further reading if you don’t already know what it does.)

Comments

Grok Grack

ruby, rack, git, unix, github, chacon

Recently I was trying to host git repository from an already existing (non-bare) repository. I was looking for a solution that does not force me to create a bare repository and does not require me to install apache or some such webserver on my machine.

I found a wonderful tool written by Scott Chacon called grack. grack is a git server on top of rack. Its elegance is in its design. It consists of few hundred lines of a rack middleware (awesome!) and a 6–8 line config file that allows you to host any repository over http. Setting it up on a local machine was really easy. Even hosting multiple repositories is trivial.

I discovered one quirk when my server was not accessible, was due to binding it specifically to 127.0.0.1. Avoid this and bind to the hostname instead.

Many thanks to Scott Chacon, Github, Rack and Ruby for keeping it so simple.

Comments

Simple Dashboard With Tab Slideshow

dashboard, firefox, chrome, agile, big visible, feedback

I had almost forgotten about Tab Slideshow for Firefox but an appropriate application of it jogged my memory. We wanted to show a few build reports on the dashboard and also wanted them to be big and visible. Also the reports do not change as rapidly as the build and can afford to be little delayed (since mostly we are showing long running build results). So we just opened up those reports in a tab each and started ‘Tab Slideshow’. Worked like a charm. We now have the simplest dashboard.

Note: Tab Slideshow for Chrome does not seem to refresh the tabs where as the Firefox version does what is expected.

Comments