<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jonathan's Pancheria: Tag tracks</title>
    <link>http://blog.dotbot.net/articles/tag/tracks?tag=tracks</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>dotcom Thousandaire</description>
    <item>
      <title>Running Rails Apps on a Nokia N810</title>
      <description>&lt;p&gt;Goaded on by &lt;a href="http://tieguy.org/blog/2008/01/29/n810-in-a-nutshell/#comment-26286"&gt;requests for screenshots of Tracks running on my n810&lt;/a&gt;, I decided to instead document to the best of my recollection what I did to get Tracks and Instiki running on my n810.&lt;/p&gt;


	&lt;h3&gt;Table of Contents&lt;/h3&gt;


	&lt;h4&gt;1. &lt;a href="#Preface"&gt;Preface: Why?&lt;/a&gt;&lt;/h4&gt;


	&lt;h4&gt;2. &lt;a href="#Screenshots"&gt;Screenshots&lt;/a&gt;&lt;/h4&gt;


	&lt;h4&gt;3. &lt;a href="#Prerequisites"&gt;Prerequisites&lt;/a&gt;&lt;/h4&gt;


	&lt;h4&gt;4. &lt;a href="#TracksAndInstiki"&gt;Tracks and Instiki&lt;/a&gt;&lt;/h4&gt;


	&lt;h4&gt;5. &lt;a href="#WrappingUp"&gt;Wrapping Up&lt;/a&gt;&lt;/h4&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;DISCLAIMER&lt;/span&gt;&lt;/strong&gt;: I am going to show you how to do some things that can probably badly mess up your device if you get them wrong, and maybe even if you follow these instructions to the letter.  I do not promise that these instructions are even complete or accurate anymore; I am nearly positive the instructions below are incomplete regarding what to install.  You follow these instructions at your &lt;strong&gt;&lt;span class="caps"&gt;OWN RISK&lt;/span&gt;&lt;/strong&gt;.  This worked for me, it may or may not work for you, with or without additional steps.  I did this about 3 months ago and was not taking good notes because I figured over time apt packages would catch up and this would not be necessary to repeat.  If you follow and you get warnings you need to install additional stuff to continue, you should probably assume that is correct.&lt;/p&gt;


	&lt;h3 id="Preface"&gt;Preface: Why?&lt;/h3&gt;


So one of the main reasons I actually got a Nokia n810 internet table (Linux/gnome-based tablet) was because:
	&lt;ul&gt;
	&lt;li&gt;It had a keyboard&lt;/li&gt;
		&lt;li&gt;It ran Linux and was reasonably powerful enough to possibly run some interesting things&lt;/li&gt;
		&lt;li&gt;It might let me replace my horrible system of &amp;#8220;engineering notebook&amp;#8221; plus wiki on my personal laptop plus complete lack of organizational system for keeping track of tasks with a single device that could provide all of that in a small, portable package&lt;/li&gt;
	&lt;/ul&gt;


To get this, however, I was going to have to be able to install 2 Rails apps that I liked:
	&lt;ul&gt;
	&lt;li&gt;Instiki, for wiki&lt;/li&gt;
		&lt;li&gt;Tracks, for &lt;span class="caps"&gt;GTD&lt;/span&gt; (Getting Things Done) task management&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I pre-ordered my n810 directly from Nokia (with a very nice discount) before it was available, and received mine I think within the first week of its being generally available in the United States.  So to preface this description of how I got things working, I did all this in late November, 2007.  Some packages may have moved around, and there may be better ways to do things than what I had to do.  But Chinook (OS2008) ported packages were fairly slim at that time.&lt;/p&gt;


I should also point out that I was not interested in developing Rails apps on this machine, just installing and using them.  Once I got things to an acceptable level of &amp;#8220;done&amp;#8221; for me, I did not investigate some pecularities further.  So some things that you will not have after this are:
	&lt;ul&gt;
	&lt;li&gt;The ruby gem system is not installed.  I did get it installed, but could not get it to actually read the gem catalog, so I see no reason to describe how to install it.  Could it be made to work?  Don&amp;#8217;t know and I don&amp;#8217;t care for my purposes &lt;em&gt;on this box&lt;/em&gt;.  I have gem working lots of other places on different chip architectures, but the n810 was not a target I needed it working on &lt;em&gt;at this time&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;I did absolutely no investigation on how to have Rails apps start when you boot up the n810.  I have a shell script I use to start my apps, and anybody who wants to take that to the next level and get this autostarted, please document it and I will gladly use it.  But my shell script works for me since I reboot the thing maybe once every 3 weeks&lt;/li&gt;
		&lt;li&gt;This does not get you the Rails gem installed anywhere in your site_ruby, nor ActiveRecord, nor anything else.  Most packaged Rails apps seem to freeze their Rails install into &lt;em&gt;railsapp&lt;/em&gt;/vendor anyway these days, so installing a pre-packaged app works just fine.  So my instructions may not work for some Rails apps, and it certainly won&amp;#8217;t work for you to start making your own new Rails app on your n810&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h3 id="Screenshots"&gt;Screenshots&lt;/h3&gt;


	&lt;p&gt;So without further ado, as a tease, here are screenshots of Tracks running on my n810.  As you can see by the lateness of many actions, I have been better about getting Tracks set up than in actually having it improve my personal organization!&lt;/p&gt;


&lt;a href="/files/tracks-n810.png" target="_blank"&gt;&lt;img src="/files/tracks-n810.png" title="&amp;quot;Home&amp;quot; screen in Tracks: Click for full size" alt="&amp;quot;Home&amp;quot; screen in Tracks" height="240" width="400"/&gt;&amp;#8221; 
	&lt;h4&gt;The Tracks &amp;#8220;Home&amp;#8221; view.  David Allen would be appalled!&lt;/a&gt;&lt;/h4&gt;


&lt;a href="/files/tracks_add-n810.png" target="_blank"&gt;&lt;img src="/files/tracks_add-n810.png" title="Adding a next action: Click for full size" alt="Adding a next action" height="240" width="400"/&gt;
	&lt;h4&gt;Adding an action.  Notice that the Ajax calendar works just fine.&lt;/a&gt;&lt;/h4&gt;


	&lt;h3 id="Prerequisites"&gt;Prerequisites&lt;/h3&gt;


	&lt;p&gt;These are the steps to take to get the basics set up on your n810 to even put a Rails app like Tracks or Instiki on it.&lt;/p&gt;


	&lt;h5&gt;Turn on Red Pill Mode&lt;/h5&gt;


	&lt;p&gt;I am not sure this is strictly necessary, but I had it on while I was doing this,and I suspect it&amp;#8217;s necessary.  This is the first but not the last dangerous part of these instructions.  Instructions on doing so, and what it does for you, are &lt;a href="http://maemo.org/community/wiki/ApplicationManagerRedPillMode"&gt;on the Maemo wiki here&lt;/a&gt;&lt;/p&gt;


	&lt;h5&gt;Libsqlite3-0&lt;/h5&gt;


	&lt;p&gt;libsqlite3-0 appears to already be installed, so there is nothing to do.  But you might want to confirm in the Application manager that it is already installed.&lt;/p&gt;


	&lt;h5&gt;Install Ruby and Ruby Sqlite3 Bindings&lt;/h5&gt;


	&lt;p&gt;&lt;del&gt;-I got the packages from &lt;a href="http://maemo.rubyx.co.uk/ruby-maemo/"&gt;http://maemo.rubyx.co.uk/ruby-maemo/&lt;/a&gt; however the site appears to have been down for a while now.&lt;/del&gt;- The ruby packages I installed appear to now live at &lt;a href="http://gplsystems.com/apt/dists/chinook/main/binary-armel/Packages"&gt;http://gplsystems.com/apt/dists/chinook/main/binary-armel/Packages&lt;/a&gt;   (thank you friend and coworker who wishes to remain anonymous).  The packages I installed, which I recall all coming from there, were:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;libruby1.8&lt;/li&gt;
		&lt;li&gt;libruby1.8-dev (not sure it&amp;#8217;s necessary, but I grabbed it)&lt;/li&gt;
		&lt;li&gt;ruby1.8 (1.8.6-p110-1)&lt;/li&gt;
		&lt;li&gt;ruby1.8-libxml (I don&amp;#8217;t think it&amp;#8217;s necessary, but I do a lot of stuff with &lt;span class="caps"&gt;XML&lt;/span&gt;)&lt;/li&gt;
		&lt;li&gt;ruby1.8-maemo (again, not sure it&amp;#8217;s necessary)&lt;/li&gt;
		&lt;li&gt;ruby1.8-sdl (nearly positive I did not need this)&lt;/li&gt;
		&lt;li&gt;ruby1.8-sqlite3 &amp;#8211; definitely required&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I found and installed rubygems from somewhere, but I could never get it to do anything but hang trying to update catalog.  Both Instiki and Tracks releases ship &amp;#8220;complete&amp;#8221; so there&amp;#8217;s no gems needed, so I skipped this.&lt;/p&gt;


	&lt;h5&gt;Add the Maemo Repository to Application Manager&lt;/h5&gt;


	&lt;p&gt;Add the maemo stable repository at &lt;a href="http://repository.maemo.org/"&gt;http://repository.maemo.org/&lt;/a&gt;.  When you are done, the apt.sources line ends up looking like &amp;#8220;deb http://repository.maemo.org/ chinook free non-free&amp;#8221; for those of you that like to look at the raw apt package configuration files.&lt;/p&gt;


	&lt;p&gt;I also added the Maemo extras repository and maemo-hackers.org repository&lt;/p&gt;


	&lt;h5&gt;Install p7Zip, gcc, make and some needed Libs&lt;/h5&gt;


	&lt;p&gt;Since rubygems didn&amp;#8217;t work for me, I decided to install mongrel from source.  You need gcc, and I think make.  You also need something to unpack tar/zip archives, and at the time the only maemo package I could find was p7zip.  These are in the maemo repository/repositories you added earlier.  I have&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;p7zip 4.42.maemo-1&lt;/li&gt;
		&lt;li&gt;make 3.80-9osso&lt;/li&gt;
		&lt;li&gt;gcc 3.4.4&lt;/li&gt;
		&lt;li&gt;libc6-dev if you don&amp;#8217;t already have it&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;There may have been some other pieces needed too.&lt;/p&gt;


	&lt;h5&gt;Download and Install Mongrel&lt;/h5&gt;


	&lt;p&gt;Webrick runs on the n810, for values of run equal to a geriatric snail.  You will not be happy with a Rails app running under webrick.  Mongrel is, while not exactly &lt;em&gt;instantaneous&lt;/em&gt;, at least responsive enough to run an &lt;span class="caps"&gt;AJAX&lt;/span&gt;-y Rails app.&lt;/p&gt;


	&lt;p&gt;Download the mongrel source tarball from http://mongrel.rubyforge.org/.  1.1.1 was the latest at the time but they are on 1.1.3 as of February 5, 2008.  Untar to a directory (using p7zip).  Then do ruby setup.rb which should configure, build, and install mongrel.  You should now have /usr/bin/mongrel_rails.&lt;/p&gt;


	&lt;h3 id="TracksAndInstiki"&gt;Tracks and Instiki&lt;/h3&gt;


	&lt;h5&gt;Where to Install&lt;/h5&gt;


	&lt;p&gt;You will be installing Tracks and Instiki from source tarballs or zipfiles.  After you download them, you will need to unpack them somewhere, using p7zip.  I put them on my removable media card, which is /media/mmc1 because I was concerned about the &lt;span class="caps"&gt;GPS&lt;/span&gt;/mapping software filling up the fixed 2GB memory card /media/mmc2.  If you plan to swap out memory cards often that might be a bad decision for you, but I am happy with it.&lt;/p&gt;


	&lt;h5&gt;Tracks&lt;/h5&gt;


	&lt;ul&gt;
	&lt;li&gt;Download a Tracks tarball/zipfile.  I used Tracks 1.043 which was the latest &amp;#8220;release&amp;#8221; drop on their site, but I am sure you could grab trunk out of the Tracks source repository and turn that into a tarball too&lt;/li&gt;
		&lt;li&gt;Untar/unzip the source archive and cd to the top directory of Tracks.  In my case that was /media/mmc1/tracks-1.043.  You may lay it down differently, but if so remember to alter your paths throughout the rest of these instructions appropriately.&lt;/li&gt;
		&lt;li&gt;cd into the tracks directory you just unpacked&lt;/li&gt;
		&lt;li&gt;Make sure that the database.yml in the config subdir is set up the way you like.  I left mine using db/&lt;em&gt;filename&lt;/em&gt;.db as it shipped&lt;/li&gt;
		&lt;li&gt;Now the moment of truth: start up Tracks.  From the main directory you could do ruby script/server just to test (it might start up webrick instead of mongrel, for values of might equal to probably).  If it starts up without error, point your web browser at your Tracks instance: http://localhost:3000/&lt;/li&gt;
		&lt;li&gt;Once you have it up and running, you can stop Tracks with ctrl-c&lt;/li&gt;
		&lt;li&gt;Now try mongrel.  /usr/bin/ruby /usr/bin/mongrel_rails start -c /media/mmc1/tracks-1.043 -e production -a 127.0.0.1 -p 3000 is what I use in my environment.  You might need to adjust the path after -c to match how you laid down Tracks.  It should start up, and you should be able to point your web browser at it.  If so, go ahead and stop Tracks by typing ctrl-c.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Congratulations, you&amp;#8217;ve installed Tracks on your n810!&lt;/p&gt;


	&lt;h3&gt;Instiki&lt;/h3&gt;


	&lt;ul&gt;
	&lt;li&gt;Download Instiki 0.12.0 (or newer if it exists and you want it).  I would avoid earlier versions of Instiki that use Madeleine for persistence.  0.12.0 uses sqlite3 for persistence, and that seems safer than using Madeleine on the n810&lt;/li&gt;
		&lt;li&gt;Untar the source archive and cd to the top directory of Tracks.  In my case that was /media/mmc1/instiki-0.12.0.  You may lay it down differently, but if so remember to alter your paths throughout the rest of these instructions appropriately.&lt;/li&gt;
		&lt;li&gt;cd into the instiki directory you just unpacked&lt;/li&gt;
		&lt;li&gt;Make sure that the database.yml in the config subdir is set up the way you like.  I left mine using db/&lt;em&gt;filename&lt;/em&gt;.db as it shipped&lt;/li&gt;
		&lt;li&gt;Now the moment of truth: start up Instiki.  From the main directory you could do ruby script/server just to test (it might start up webrick instead of mongrel, for values of might equal to probably).  If it starts up without error, point your web browser at your Instiki instance: http://localhost:2500/&lt;/li&gt;
		&lt;li&gt;Once you have it up and running, you can stop Tracks with ctrl-c&lt;/li&gt;
		&lt;li&gt;Now try mongrel.  /usr/bin/ruby /usr/bin/mongrel_rails start -c /media/mmc1/instiki-0.12.0 -e production -a 127.0.0.1 -p 2500 is what I use in my environment.  You might need to adjust the path after -c to match how you laid down Instiki.  It should start up, and you should be able to point your web browser at it.  If so, go ahead and stop Instiki by typing ctrl-c.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Congratulations, you have installed Instiki on your n810.&lt;/p&gt;


	&lt;h3 id="WrappingUp"&gt;Wrapping Up&lt;/h3&gt;


	&lt;p&gt;Now that you have Tracks and/or Instiki up and running, what next?  I left my apps running on their default ports of 3000 and 2500, but you could run them on different ports if you chose.  I saw no reason to do that, nor to find a webserver to proxy them to so they are off the &amp;#8220;main&amp;#8221; webserver.  That&amp;#8217;s just overhead the n810 really does not need.&lt;/p&gt;


	&lt;h5&gt; Starting up Rails Apps&lt;/h5&gt;


	&lt;p&gt;Once I was happy with my install, I made myself a little shell script to fire them both off.  When I boot up, I start up an XTerm and fire off the script.  Here are its contents (sorry for the iframe, it was easier):&lt;/p&gt;


&lt;iframe src="/files/startweb.html" width="400" height="500" scrolling="auto" frameborder="1"&gt;&lt;/iframe&gt;

	&lt;h5&gt; Stopping Rails Apps&lt;/h5&gt;


	&lt;p&gt;The easiest way I stop both my apps if I need to, like if I want to hook up the &lt;span class="caps"&gt;USB&lt;/span&gt; cable or otherwise want to make sure the Rails apps shut down cleanly, I just issue a &lt;em&gt;killall ruby&lt;/em&gt; and that kills the mongrel processes given how I start them.  Before you just do that, make sure you know what ruby processes are running on your n810 and that you&amp;#8217;re ok to kill them all.&lt;/p&gt;


	&lt;p&gt;Note that it can take a good few seconds, from 15-20 up to maybe 30, for all the Rails apps to respond to the kill signal.  Just be patient.  I also highly recommend aliasing ps -ef | grep in the shell to pgrep because inputting the pipe symbol on an n810 is fairly cumbersome.&lt;/p&gt;</description>
      <pubDate>Wed, 13 Feb 2008 05:28:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:05edbe97-e42d-4f6a-94e0-65db3ff8a164</guid>
      <author>Jonathan Altman</author>
      <link>http://blog.dotbot.net/articles/2008/02/13/running-rails-apps-on-a-nokia-n810</link>
      <category>technical</category>
      <category>rails</category>
      <category>ruby</category>
      <category>n810</category>
      <category>maemo</category>
      <category>instiki</category>
      <category>tracks</category>
      <category>install</category>
      <enclosure type="image/png" url="http://blog.dotbot.net/files/tracks_add-n810.png" length="80669"/>
    </item>
  </channel>
</rss>
