<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>MartinLanner.com &#187; Web apps</title>
	<atom:link href="http://martinlanner.com/category/web-apps/feed/" rel="self" type="application/rss+xml" />
	<link>http://martinlanner.com</link>
	<description></description>
	<lastBuildDate>Mon, 14 Nov 2011 19:16:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Wunderlist repeating tasks</title>
		<link>http://martinlanner.com/2011/07/02/wunderlist-repeating-tasks/</link>
		<comments>http://martinlanner.com/2011/07/02/wunderlist-repeating-tasks/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 16:17:39 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Email]]></category>
		<category><![CDATA[How-to]]></category>
		<category><![CDATA[Web apps]]></category>
		<category><![CDATA[wunderlist]]></category>

		<guid isPermaLink="false">http://martinlanner.com/2011/07/05/wunderlist-repeating-tasks/</guid>
		<description><![CDATA[Wunderlist is an awesome todo app. It works across mobile and PC platforms &#8212; well, except for on Linux &#8212; and they have a really nice HTML5 web app. It doesn&#8217;t have all the bells and whistles of some other todo apps. But that&#8217;s just fine with me, as I really like the simplicity of [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.wunderlist.com"><img class="alignleft size-thumbnail wp-image-197" title="wunderlist" src="http://martinlanner.com/wp-content/uploads/2011/07/wunderlist-logo-150x150.png" alt="wunderlist" width="150" height="150" /></a><a href="http://www.wunderlist.com/" target="_blank">Wunderlist</a> is an awesome todo app. It works across mobile and PC platforms &#8212; well, except for on Linux &#8212; and they have a really nice HTML5 web app. It doesn&#8217;t have all the bells and whistles of some other todo apps. But that&#8217;s just fine with me, as I really like the simplicity of Wunderlist.</p>
<p>The one function I really would like to see in Wunderlist is todo templates, for things you tend to do relatively often. Grocery shopping is one simple example. Many times when I go shopping for groceries I buy all the staples. You&#8217;d think I could easily remember what those are. But, surprisingly, I don&#8217;t all the time. If I could have a groceries template that I could use to create a todo list, that would be great. Now, that&#8217;s something Wunderlist doesn&#8217;t do. So, I had to find a way to mimic this functionality myself.</p>
<p>Wunderlist does allow you to email yourself tasks from the email account you signed up with. To create a todo list you simply put the name of the todo list in the subject of an email and all the tasks in a simple list with each task on a new line. Well, that&#8217;s convenient. To get things to work the way I wanted it to work, I created a bunch of email templates for my repeating todo lists. When I want to create a new todo list quickly and easily, I simply take one of my email templates and fire it off to me@wunderlist.com. This creates a new todo list in my Wunderlist on the fly. Pretty nice, huh?</p>
]]></content:encoded>
			<wfw:commentRss>http://martinlanner.com/2011/07/02/wunderlist-repeating-tasks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>What TV Content Providers Don&#8217;t Get &#8230;</title>
		<link>http://martinlanner.com/2009/02/19/what-tv-content-providers-dont-get/</link>
		<comments>http://martinlanner.com/2009/02/19/what-tv-content-providers-dont-get/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 03:35:01 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[TV]]></category>
		<category><![CDATA[Web apps]]></category>
		<category><![CDATA[Hulu]]></category>

		<guid isPermaLink="false">http://martinlanner.com/?p=27</guid>
		<description><![CDATA[In their infinite wisdom, &#8220;content providers&#8221; have given Hulu an ultimatum to not allow Boxee to use content from Hulu. Bad move! Only a few years ago, when illegal file sharing of music and the Napsters of the world were still one of the most hotly debated topics, and when Apple and iTunes was truly [...]]]></description>
			<content:encoded><![CDATA[<p>In their infinite wisdom, &#8220;content providers&#8221; have given <a title="Hulu Blog" href="http://blog.hulu.com" target="_blank">Hulu</a> an ultimatum to not allow <a title="Boxee Blog" href="http://blog.boxee.tv/2009/02/18/the-hulu-situation/" target="_blank">Boxee</a> to use content from Hulu. Bad move!</p>
<p>Only a few years ago, when illegal file sharing of music and the Napsters of the world were still one of the most hotly debated topics, and when Apple and iTunes was truly starting to make inroads to the market, I was sitting in a conference room with a bunch of people waiting for a software development meeting to start. The from the start casual discussion centered around the future of music distribution and who would come out on top. One of the developers, let&#8217;s call him John, a self-proclaimed music lover and code poet had just finished up some work for one of the large companies providing a media player, which at the time was building an online music store. During the conversation, which got increasingly heated, John was adamant that the big studios and the traditional distribution channel of physical medium, like CDs, in physical stores would remain the leader in sales of music. Well, we all know how that went. In the U.S. today, the trend is clearly pointing to more music being sold through iTunes than through any other individual retailer or etailer. As much as many people don&#8217;t like Apple, for good and bad reasons, Steve Jobs &amp; Co have a vision and they&#8217;re delivering on it.</p>
<p>Clearly, there&#8217;s something going on in the media distribution landscape. Technology is moving faster than the business models of the incumbent content provider companies. Doh! What else is new? We already knew that. Why don&#8217;t the executives at the large content provider companies get it? OK, it&#8217;s obvious, they&#8217;re just protecting their revenues and the status quo. But, with technology changing, creating new and more efficient sales and distribution channels, and new business models to go with it, if the old ways are stubbornly held on to, these companies will eventually become irrelevant, just like the traditional sales channels of music is becoming less and less relevant by the day. A few examples come to mind, like <a title="Tower Records closing up shop" href="http://www.washingtonpost.com/wp-dyn/content/article/2006/12/10/AR2006121001003.html" target="_blank">Tower Records</a> and declining sales at big box retailers, and so on. Here are some articles on the topic in <a title="LA Times on online music sales" href="http://articles.latimes.com/2008/apr/04/business/fi-itunes4" target="_blank">LA Times</a> in Q2 2008 and in <a title="New York Times on music sales" href="http://www.nytimes.com/2009/01/01/arts/music/01indu.html" target="_blank">New York Times</a> on New Years Eve 2008.</p>
<p>It is often said that the best way of predicting the future is to look into the past. In the case of TV and movie distribution, until fairly recently, peoples&#8217; Internet connections simply were not &#8220;fat&#8221; enough to download or stream high-quality video. Moreover, the video compression codecs weren&#8217;t good enough. That has changed. This makes the video market analogous to the music market 5-10 years ago. Thus, what happened in the music market WILL happen in the video market. At this point, it&#8217;s not a question of if TV and movies will be distributed over the Internet, but rather how soon the majority of it will be consumed through computers connected to the Internet.</p>
<p>If the content providers were smart and realized the potential of companies like Boxee, instead of blocking access to Hulu through Boxee, they should approach Boxee and give them a capital infusion, or simply buy Boxee out.</p>
]]></content:encoded>
			<wfw:commentRss>http://martinlanner.com/2009/02/19/what-tv-content-providers-dont-get/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How-to Install Redmine on Ubuntu 8.04</title>
		<link>http://martinlanner.com/2008/07/04/how-to-install-redmine-on-ubuntu-804/</link>
		<comments>http://martinlanner.com/2008/07/04/how-to-install-redmine-on-ubuntu-804/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 23:19:40 +0000</pubDate>
		<dc:creator>Martin</dc:creator>
				<category><![CDATA[How-to]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web apps]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Redmine]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://martinlanner.com/2008/07/04/how-to-install-redmine-on-ubuntu-804/</guid>
		<description><![CDATA[This tutorial assumes that you have some knowledge of Linux and know how to install Ubuntu. It further assumes you have root access and are logged in as root on the server on which you will install Redmine. If you&#8217;re not logged in as root, all command below needs to be prepended with sudo, like: [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial assumes that you have some knowledge of Linux and know how to install Ubuntu. It further assumes you have root access and are logged in as root on the server on which you will install Redmine. If you&#8217;re not logged in as root, all command below needs to be prepended with sudo, like:<br />
<code><br />
> sudo apt-get install ...<br />
</code></p>
<p>If you follow the tutorial step-by-step, you should have a functioning Redmine installation in less than an hour. I&#8217;ve tried to be as detailed as possible so that even beginners can get a Redmine system up and running. This is tutorial is more or less a cut-and-paste tutorial.</p>
<p>A lot of the instructions for this tutorial were copied verbatim from the excellent Redmine installation instructions here:</p>
<p>http://www.redmine.org/wiki/redmine/RedmineInstall</p>
<p><strong>Requirements for installing Redmine:</strong></p>
<ul>
<li>Ruby on Rails 2.0.2 (Redmine 0.7.x is not compatible with Rails 2.1)</li>
<li>MySQL 4 or higher</li>
</ul>
<p>Optional:</p>
<ul>
<li>SVN binaries (>= 1.3), for repository browsing (must be available in your PATH)</li>
<li>RMagick (Gantt export to a png image)</li>
</ul>
<p>(Note that Rails has some compatibility issues with ruby 1.8.7. The recommended ruby version is 1.8.6.)</p>
<p><strong>Installing Ubuntu</strong></p>
<p>First off, install Ubuntu 8.04 Server. I installed mine on Ubuntu JeOS 8.04. If you will be running Redmine on a virtual server, Ubuntu JeOS is a good choice. JeOS is optimized for virtualization and doesn&#8217;t come with a bunch of packages that you don&#8217;t need. As such, JeOS will typically create a smaller OS footprint. However, the packages you do need, you will probably have to install manually.</p>
<p>Make sure your server installation is up-to-date by issuing:<br />
<code><br />
> apt-get update<br />
> apt-get upgrade<br />
</code></p>
<p><strong>Package installation and setup</strong></p>
<p>Once you&#8217;ve installed the server and updated it, you need to install a bunch of packages that we will prepare the server for the Redmine installation. So, as root, install the following:<br />
<code><br />
> apt-get install build-essential<br />
> apt-get install ssh openssh-server mysql-server phpmyadmin rails rubygems mongrel libmagick9-dev ruby1.8-dev<br />
</code></p>
<p>The packages we&#8217;re installing above are MySQL, phpMyAdmin, Rails, Ruby Gems, Mongrel, LibMagick and Ruby Dev environment.</p>
<p>The last two, LibMagick and Ruby Dev, we install to prepare the system for later installation of RMagick to show some fancy Gantt charts. <img src='http://martinlanner.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>During the installation of the packages, when MySQL is installed, it will prompt you to create a password. Make sure you remember it. You will need it later to log in to the phpMyAdmin.</p>
<p>If you installed Ubuntu JeOS 8.04 like me, then you probably also want to install:<br />
<code><br />
> apt-get install wget nano cron<br />
</code></p>
<p>Create a new directory for Redmine. I put mine in /opt/redmine, so:<br />
<code><br />
> mkdir /opt/redmine<br />
</code></p>
<p>Then:<br />
<code><br />
> cd /opt/redmine<br />
</code></p>
<p>Download the latest archive from Redmine into your newly created /opt/redmine directory:<br />
<code><br />
> wget http://rubyforge.org/frs/download.php/38377/redmine-0.7.2.tar.gz<br />
</code></p>
<p>In my case the latest stable release was: http://rubyforge.org/frs/download.php/38377/redmine-0.7.2.tar.gz. However, that is likely to change, so look here for the latest release: http://rubyforge.org/frs/?group_id=1850.</p>
<p>Now, untar the file you just downloaded:<br />
<code><br />
>tar xvfc redmine-0.7.2.tar.gz<br />
</code></p>
<p><strong>Database setup</strong></p>
<p>Now it&#8217;s time to create an empty database for Redmine. As you may have noticed, we installed phpMyAdmin earlier. phpMyAdmin will come in handy now. Head over to:<br />
<code></p>
<p>http://192.168.1.10/phpmyadmin</p>
<p></code></p>
<p>You should be presented with the phpMyAdmin login screen.</p>
<p>Type in <code>root</code> and the MySQL password you created when installing MySQL.</p>
<p>First, click on &#8220;Databases.&#8221; Then, at the bottom of the screen, in the &#8220;Create new database&#8221; text box create a new database called <code>redmine</code> and set &#8220;Collation&#8221; to <code>utf8_general_ci</code>.</p>
<p>Now, go back to the home screen and click on:</p>
<ul>
<li>&#8220;Privileges&#8221;</li>
<li>&#8220;Add a new User&#8221;</li>
</ul>
<p>Fill out the &#8220;Login Information&#8221; boxes. Call your user <code>redmine</code>. Make sure you remember the password you create here. It will be used when you set up the database connection details in Redmine.</p>
<p>In the &#8220;Database for user&#8221; section, check &#8220;Create database with same name and grant all privileges&#8221; and click on the &#8220;Go&#8221; button.</p>
<p>Log out of phpMyAdmin.</p>
<p><strong>Redmine database connection configuration</strong></p>
<p>It&#8217;s time to configure the database connection. If you installed Redmine as I did above, then copy config/database.yml.example to config/database.yml and edit this file in order to configure your database settings for &#8220;production&#8221; environment. You&#8217;ll find the database.yml.example here:<br />
<code><br />
/opt/redmine/redmine-0.7.2/config<br />
</code></p>
<p>So now, assuming you&#8217;re in the /config directory, do:<br />
<code><br />
> cp database.yml.example database.yml<br />
</code></p>
<p>Then, open the database.yml file, so:<br />
<code><br />
> nano database.yml<br />
</code></p>
<p>&#8230; and edit it as in the example for a MySQL database below:<br />
<code><br />
	production:<br />
	  adapter: mysql<br />
	  socket: /var/run/mysqld/mysqld.sock<br />
	  database: redmine<br />
	  host: localhost<br />
	  username: redmine<br />
	  password: [password]<br />
</code></p>
<p>Then hit Ctrl+X to exit and answer Y to the prompt and hit enter to write to the database.yml file.</p>
<p>On Ubuntu the mysql.sock is located in /var/run/mysqld/mysqld.sock, as noted in the config above. (The standard Redmine installation assumes the socket is located in /tmp/mysqld.sock.)</p>
<p>Create the database structure, by running the following command under the application root directory:<br />
<code><br />
> rake db:migrate RAILS_ENV="production"<br />
</code></p>
<p>It will create the necessary tables in the redmine database you created earlier and an administrator account.</p>
<p>Insert default configuration data in database, by running the following command:<br />
<code><br />
> rake redmine:load_default_data RAILS_ENV="production"<br />
</code></p>
<p>(This step is optional but highly recommended, as you can define your own configuration from scratch. It will load default roles, trackers, statuses, workflows and enumerations.)</p>
<p><strong>Setting up permissions</strong></p>
<p>The user who runs Redmine must have write permission on the following subdirectories: files, log, tmp (create the last one if not present).</p>
<p>You probably already have a /tmp directory in /opt/redmine/redmine-0.7.2, but if you don&#8217;t, create one now:<br />
<code><br />
> mkdir tmp<br />
</code></p>
<p>If you haven&#8217;t created a Redmine user, do it now by issuing:<br />
<code><br />
> useradd redmine<br />
</code></p>
<p>Now, assuming you run Redmine with a redmine user, from your /opt/redmine/redmine-0.7.2 directory issue:<br />
<code><br />
> chown -R redmine:redmine files log tmp<br />
> chmod -R 755 files log tmp<br />
</code></p>
<p><strong>A little fancy graphics</strong></p>
<p>To get those fancy looking Gantt charts, install RMagick too:<br />
<code><br />
> gem install rmagick<br />
</code></p>
<p><strong>Testing the installation</strong></p>
<p>It should all be working now. Test the installation by running the WEBrick web server:<br />
<code><br />
> ruby script/server -e production<br />
</code></p>
<p>Once WEBrick has started, point your browser to http://localhost:3000/. Or, if you are using a browser on another computer than what you installed Redmine on, point your browser to http://192.168.1.10:3000/ (if that&#8217;s the IP address you gave your Redmine server). You should now see the application welcome page.</p>
<p><strong>Log in</strong></p>
<p>Use default administrator account to log in:</p>
<ul>
<li>Login: admin</li>
<li>Password: admin</li>
</ul>
<p>You can go to Admin &#038; Settings to modify application settings.</p>
<p><strong>SMTP server configuration</strong>></p>
<p>In config/environment.rb, you can set parameters for your SMTP server:<br />
<code><br />
config.action_mailer.smtp_settings: SMTP server configuration<br />
config.action_mailer.perform_deliveries: set to false to disable mail delivering<br />
</code></p>
<p>Don&#8217;t forget to restart the application after any change.</p>
<p><strong>Start application boot time</strong></p>
<p>To automatically start the application on booting your server you need to modify your crontab, like so:<br />
<code><br />
export EDITOR=nano<br />
crontab -e<br />
</code></p>
<p>Your crontab file will be presented. This is the list of programs that start at certain times or at boot. Add the following to the crontab (all on one line):<br />
<code><br />
@reboot cd /opt/redmine/redmine-0.7.2 ; rm -f log/mongrel.pid ; mongrel_rails start -e production -p 3000 -d<br />
</code></p>
<p><strong>Backups</strong></p>
<p>Running backups is always a good idea. Right? Redmine backups should include:</p>
<ul>
<li>data (stored in your redmine database)</li>
<li>attachments (stored in the files directory of your Redmine install)</li>
</ul>
<p>Here is a simple shell script that can be used for daily backups (assuming you&#8217;re using a mysql database):<br />
<code><br />
# Database<br />
/usr/bin/mysqldump -u <username> -p
<password> <redmine_database> | gzip > /path/to/backup/db/redmine_`date +%y_%m_%d`.gz</p>
<p># Attachments<br />
rsync -a /path/to/redmine/files /path/to/backup/files<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://martinlanner.com/2008/07/04/how-to-install-redmine-on-ubuntu-804/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

