<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  
  
  <channel>
    <title>chrisjrob: web</title>
    <link>https://chrisjrob.com</link>
    <atom:link href="https://chrisjrob.com/tag/web/feed/index.xml" rel="self" type="application/rss+xml" />
    <description>GNU Linux, Perl and FLOSS</description>
    <language>en-gb</language>
    <pubDate>Fri, 13 Feb 2026 17:22:31 +0000</pubDate>
    <lastBuildDate>Fri, 13 Feb 2026 17:22:31 +0000</lastBuildDate>
    
    <item>
      <title>Dillinger - The HTML5 Markdown Editor</title>
      <link>https://chrisjrob.com/2014/08/09/dillinger/</link>
      <pubDate>Sat, 09 Aug 2014 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2014/08/09/dillinger</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/dillinger.png" align="right" alt="Featured Image">
         
         <p>I thought I loved
<a href="http://en.wikipedia.org/wiki/Markdown" title="Read about markdown on Wikipedia">markdown</a>.
I thought <a href="http://dillinger.io">Dillinger</a> (an HTML5 Markdown editor)
looked remarkable. So I downloaded and installed it on an Ubuntu 14.04.1
LTS server:</p>

<!--more-->

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ git clone https://github.com/joemccann/dillinger.git dillinger
$ cd dillinger
$ npm i -d
$ mkdir -p public/files/{md,html,pdf}
$ sudo apt-get install nodejs
$ sudo ln -s /usr/bin/nodejs /usr/bin/node
$ npm install express
$ npm install phantomjs
$ cd dillinger
$ node app
</code></pre></div></div>

<p>It looks beautiful and works perfectly and even includes the ability to
export to PDF. But it seems that, for me at least, markdown without
<a href="http://www.vim.org/">Vim</a> just isn’t the same.</p>

<p>Shame that.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Charging For The Interwebs</title>
      <link>https://chrisjrob.com/2011/06/20/charging-for-the-interwebs/</link>
      <pubDate>Mon, 20 Jun 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2011/06/20/charging-for-the-interwebs</guid>
      <description>
       <![CDATA[
         
         <p>One of the most wonderful things about the web and open source are that
all you need is a computer, an Internet connection, a domain name and a
text editor and you can host your own website. The Internet is a great
equaliser - a teenager in his/her bedroom truly can reach out to the
world with a service that is every bit as good as those created by
billion-dollar companies and maybe better.</p>

<p>Until now.</p>

<!--more-->

<p>In their infinite wisdom 
<a href="http://www.theregister.co.uk/2011/06/20/icann_expands_gtlds/" title="ICANN opens the domain floodgates">ICANN has enabled custom TLDs</a>
from $185,000 plus $25,000 per annum.</p>

<p>Needless to say, this limits their availability only to large companies.
No longer is there a level playing field - large companies can pay for a
TLD that is simply not available to smaller companies, organisations or
individuals.</p>

<p>Does this matter? Well I don’t know for certain, but this is the first
time that part of the Internet has been closed off to the rest of us,
and it just doesn’t feel right to me.</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Moving to Wordpress</title>
      <link>https://chrisjrob.com/2011/02/23/moving-to-wordpress/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2011/02/23/moving-to-wordpress</guid>
      <description>
       <![CDATA[
         
         <p>I’ve decided to move to a proper blogging platform, rather than continue to use my home grown solution.  Please update your feed reader to:</p>

<ul>
  <li><a href="http://chrisjrob.wordpress.com/feed/">http://chrisjrob.wordpress.com/feed/</a></li>
</ul>

<p>I did consider setting up my own Wordpress server, but rightly or wrongly I decided to save myself the effort, time will tell whether that was the right decision or not!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Drupal 7</title>
      <link>https://chrisjrob.com/2011/02/23/drupal-7/</link>
      <pubDate>Wed, 23 Feb 2011 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2011/02/23/drupal-7</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/drupal.png" align="right" alt="Featured Image">
         
         <p>I have decided to set up a web for my wider family, as a place to chat
and share information. I’ve had some experience with
<a href="http://drupal.org/" title="Drupal">Drupal</a> 6, but knowing how tough it can be
to upgrade between versions of Drupal, I decided to opt for Drupal 7.</p>

<p>Drupal is great for one main reason - it is extendible to the n’th
degree - a Drupal site can be a blog, a forum, a static site, a database
application. In fact there is very little you can’t do with a Drupal
site. There is a price to be paid for all the functionality, I do see
Drupal as being something of a jack of all trades and yet a master of
none, but, if you want flexibility without the need to host multiple
services, then Drupal is it.</p>

<!--more-->

<p>Installing Drupal was very simple, providing you know how to configure
mysql (or another database). The instructions are clearly laid out in
the tar.gz; although newer users would probably be best advised to find
a howto.</p>

<p>Having googled for a decent link for you, I have found nothing, so here
goes a brief howto - from memory (you have been warned):</p>

<p>Install prerequisites (hopefully I haven’t missed any that won’t be
brought in anyway):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install apache2 php5-common php5-mysql \
libapache2-mod-php5 php5-gd
</code></pre></div></div>

<p><a href="http://drupal.org/project/drupal" title="Drupal">Visit Drupal 7</a> page and
copy the link to the  tar.gz file for Drupal 7 and download to a
suitable directory on the server:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ wget http://ftp.drupal.org/files/projects/drupal-7.0.tar.gz
</code></pre></div></div>

<p>Extract contents and change into the Drupal directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ tar -xvvzf drupal-7.0.tar.gz
$ cd drupal-7.0
</code></pre></div></div>

<p>Read the INSTALL.txt file and follow the steps to move the
installation to its proper home (under debian /var/www):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd ..
$ sudo mkdir /var/www/drupal
$ sudo mv drupal-7.0/* drupal-7.0/.htaccess /var/www/drupal/
</code></pre></div></div>

<p>Set the ownership and group on the new directory:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo a2enmod rewrite
$ sudo /etc/init.d/apache restart
</code></pre></div></div>

<p>Once installed Drupal 7 looks very attractive and feels a very slick
product. I was particularly impressed by the ability to paste a link to
a Drupal module tar.gz file and click Install. Doubtless this is not the
recommended way to install modules, but it worked fine.</p>

<p>One thing that most users will wish to install is a WYSIWYG editor, and
after much trial and error I found that the <a href="http://drupal.org/project/ckeditor" title="CKEditor">CKEditor
module</a> (and <strong>not</strong> the
<a href="http://drupal.org/project/wysiwyg" title="WYSIWYG Module">WYSIWYG module</a> +
<a href="http://ckeditor.com/download" title="CKEditor">CKEditor</a>) worked best.</p>

<p>On the downside, I am struggling to find all the modules that I need. As
in previous versions of Drupal, there are a great many that have still
not updated for Drupal 7. In particular, I would like an instant
messaging module, but cannot find such a thing.  I would imagine this
issue will get easier over time, and I would rather be on the current
version now and be able to add features later, than be on the old
version now with all features and have the worry about how I am ever
going to upgrade!</p>


       ]]>
      </description>
    </item>
    
    <item>
      <title>Installing Ruby on Rails</title>
      <link>https://chrisjrob.com/2010/10/18/install-ruby-on-rails/</link>
      <pubDate>Mon, 18 Oct 2010 00:00:00 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2010/10/18/install-ruby-on-rails</guid>
      <description>
       <![CDATA[
         
         <p>I need a way of creating some quick and dirty web apps for internal use.  To this end, I decided to give Ruby on Rails a try.  Unfortunately it is in heavy development and the Debian packages have not kept up.  I decided to try and install from source, and, after several blind alleys, I ended up with quite a simple installation…</p>

<!--more-->

<h2 id="install-ruby-on-rails3-on-debian-lenny">Install Ruby on Rails3 on Debian Lenny</h2>

<h3 id="warning">Warning</h3>

<p>I know nothing about Ruby on Rails, but this is how I ended up successfully (I think!) installing it.  There may be better ways.</p>

<h3 id="download-and-compile-ruby">Download and Compile Ruby</h3>

<p>At the time of writing, the current version is 1.9.2</p>

<ul>
  <li><a href="http://www.ruby-lang.org/en/downloads/">http://www.ruby-lang.org/en/downloads/</a></li>
</ul>

<p>I tend to use checkinstall wherever possible, so that I can manage the package via apt-get and dpkg.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo apt-get install checkinstall

$ wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p0.tar.gz
$ tar -xvvzf ruby-1.9.2-p0.tar.gz
$ cd ruby-1.9.2-p0

$ ./configure
$ make
$ sudo checkinstall
</code></pre></div></div>

<p>Set the version number to 1.9.2</p>

<h3 id="install-rails">Install Rails</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install rails
</code></pre></div></div>

<h3 id="install-passenger">Install Passenger</h3>

<p>N.B. This assumes you are using apache2.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo gem install passenger
$ sudo passenger-install-apache2-module
</code></pre></div></div>

<p>Please read thoroughly the output from this the last command, as it will give you the information you require for the next section.</p>

<h3 id="enable-passenger">Enable Passenger</h3>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ cd /etc/apache2/mods-available
</code></pre></div></div>

<p>Create or edit the following files, using the output from passenger-install-apache2-module above.</p>

<h4 id="passengerconf">passenger.conf</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;IfModule mod_passenger.c&gt;
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15
PassengerRuby /usr/local/bin/ruby
&lt;/IfModule&gt;
</code></pre></div></div>

<h4 id="passengerload">passenger.load</h4>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-2.2.15/ext/apache2/mod_passenger.so
</code></pre></div></div>

<h4 id="enable-in-apache">Enable in Apache</h4>

<p>You should now be able to enable the apache module with:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo a2enmod passenger
</code></pre></div></div>

<h3 id="update-vhosts">Update Vhosts</h3>

<p>This will vary depending on your system, but you are aiming to have a vhost configuration similar to the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;VirtualHost *:80&gt;
    ServerName www.yourhost.com
    DocumentRoot /somewhere/public    # &lt;-- be sure to point to 'public'!
    RailsEnv development              # &lt;-- change to testing/production as appropriate (see note below)
    RackEnv development               # &lt;-- change to testing/production as appropriate (see note below)
    &lt;Directory /somewhere/public&gt;
        AllowOverride all             # &lt;-- relax Apache security settings
        Options -MultiViews           # &lt;-- MultiViews must be turned off
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre></div></div>

<p>By default, passenger uses the Ruby on Rails production database, which may or may not be appropriate, depending on where you are in the development process.  If you are still developing your rails app, then you may want to set in the above:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>RailsEnv development
RackEnv development
</code></pre></div></div>

<p>In theory you only need the former, but the presence of the file <code class="language-plaintext highlighter-rouge">config.ru</code> in your application directory makes passenger require RackEnv instead.</p>

<p>Otherwise, when making changes to your database, do remember to:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># db:migrate RAILS_ENV=production
# touch tmp/restart.txt
</code></pre></div></div>

<p>Otherwise your application will not work.</p>

<h3 id="ispconfig">ISPConfig</h3>

<p>If you are using ISPConfig, then I currently have this working by adding the following to the sites Apache Directives in the admin control panel:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>DocumentRoot /var/www/web11/web/blog/public
&lt;Directory /var/www/web11/web/blog/public&gt;
    AllowOverride all
    Options -MultiViews
&lt;/Directory&gt;
</code></pre></div></div>

<p>And then edit <code class="language-plaintext highlighter-rouge">/etc/apache2/vhosts/Vhosts_ispconfig.conf</code> and remove the old DocumentRoot line from the relevant vhost section.  Unfortunately you will have to do this everytime you change your site configuration.  This is very poor, there has to be a better way.</p>

<h3 id="installing-jquery">Installing JQuery</h3>

<p>These are rather poor notes, you are probably better looking elsewhere, but the key thing is that the long and complex instructions for installing jquery that abound on the Internet should be avoided.  The installation should be a mere couple of commands.</p>

<p>Either type:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ gem install jquery-rails
</code></pre></div></div>

<p>Or as I preferred, edit your Gemfile (in the root of your rails project) and add:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem 'jquery-rails'
</code></pre></div></div>

<p>My handwritten notes don’t say this, but I believe you would then need to run:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ bundle install
</code></pre></div></div>

<p>And then (add <code class="language-plaintext highlighter-rouge">--ui</code> on the end of the following command to include the jquery UI):</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ rails generate jquery:install
</code></pre></div></div>


       ]]>
      </description>
    </item>
    
    <item>
      <title>LTSP | LTSP Iceweasel Hacks</title>
      <link>https://chrisjrob.com/2010/07/06/ltsp-iceweasel-hacks/</link>
      <pubDate>Tue, 06 Jul 2010 15:06:17 +0000</pubDate>
      <author>chrisjrob@gmail.com (Chris Roberts)</author>
      <guid>https://chrisjrob.com/2010/07/06/ltsp-iceweasel-hacks</guid>
      <description>
       <![CDATA[
         
           <img src="https://chrisjrob.com/assets/ltsp_logo.png" align="right" alt="Featured Image">
         
         <p>This is just a list of the hacks or fixes that I currently have in place on Iceweasel.  These were not my invention, and surely I owe a debt of thanks to various sites; unfortunately I have no way of knowing which sites.</p>

<p>Some of these hacks are too facilitate system wide control, others help to maximise performance on a thin client system.</p>

<!--more-->

<h2 id="iceweasel-global-preferences">Iceweasel Global Preferences</h2>

<p><code class="language-plaintext highlighter-rouge">/etc/iceweasel/pref/iceweasel.js</code></p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// This is the Debian specific preferences file for Iceweasel</span>
<span class="c1">// You can make any change in here, it is the purpose of this file.</span>
<span class="c1">// You can, with this file and all files present in the</span>
<span class="c1">// /etc/iceweasel/pref directory, override any preference that is</span>
<span class="c1">// present in /usr/lib/iceweasel/defaults/preferences directory.</span>
<span class="c1">// While your changes will be kept on upgrade if you modify files in</span>
<span class="c1">// /etc/iceweasel/pref, please note that they won't be kept if you</span>
<span class="c1">// do make your changes in /usr/lib/iceweasel/defaults/preferences.</span>
<span class="c1">//</span>
<span class="c1">// Note that lockPref is allowed in these preferences files if you</span>
<span class="c1">// don't want users to be able to override some preferences.</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">extensions.update.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>

<span class="c1">// Use LANG environment variable to choose locale</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">intl.locale.matchOS</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>

<span class="c1">// Disable default browser checking.</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.shell.checkDefaultBrowser</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// ========= LTSP SPECIFIC HACKS ========</span>

<span class="c1">// Disable "safe browsing" feature that hogs CPU, HDD, etc. etc. in LTSP</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.safebrowsing.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.safebrowsing.malware.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// Disable annoying location-bar suggestion "feature" that is sludgy with thin-clients</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.urlbar.maxRichResults</span><span class="dl">"</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>

<span class="c1">// Disable offline/disk caching of web pages</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.offline.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.disk.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.cache.memory.enable</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>

<span class="c1">// ========= PROXY HACKS =========</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.type</span><span class="dl">"</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.share_proxy_settings</span><span class="dl">"</span><span class="p">,</span> <span class="kc">true</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.http</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">192.168.1.254</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.http_port</span><span class="dl">"</span><span class="p">,</span> <span class="mi">800</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">network.proxy.no_proxies_on</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">localhost, 127.0.0.1, 192.168.1.0/24</span><span class="dl">"</span><span class="p">);</span>

<span class="c1">// ========= MISC HACKS ==========</span>

<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">browser.startup.homepage</span><span class="dl">"</span><span class="p">,</span> <span class="dl">"</span><span class="s2">http://www.example.co.uk/</span><span class="dl">"</span><span class="p">);</span>
<span class="nx">lockPref</span><span class="p">(</span><span class="dl">"</span><span class="s2">app.update.enabled</span><span class="dl">"</span><span class="p">,</span> <span class="kc">false</span><span class="p">);</span>
</code></pre></div></div>

<h2 id="iceweasel-image-caching">Iceweasel Image Caching</h2>

<p>I understand that, on websites with certain size of image, that the thin client xorg starts to take a ridiculous amount of memory, resulting xorg dieing and the thin client returning to the login page.  The following may help:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo echo "MOZ_DISABLE_IMAGE_OPTIMIZE=1" &gt;&gt; /etc/profile
</code></pre></div></div>

<h2 id="references">References</h2>

<p>I must apologise for the lack of references, if you recognise some of your work in the above, please do accept my apologies.</p>

       ]]>
      </description>
    </item>
    
  </channel> 
</rss>
