<?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>biotext.org.uk</title>
	<atom:link href="http://biotext.org.uk/feed/" rel="self" type="application/rss+xml" />
	<link>http://biotext.org.uk</link>
	<description>Not a typewriter</description>
	<lastBuildDate>Sat, 05 Feb 2011 14:18:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Pastures new</title>
		<link>http://biotext.org.uk/pastures-new/</link>
		<comments>http://biotext.org.uk/pastures-new/#comments</comments>
		<pubDate>Sat, 05 Feb 2011 14:18:41 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[last.fm]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=557</guid>
		<description><![CDATA[As of this week (Feb 2011) I&#8217;ve left UCL to start at Last.fm as a data scientist. Big up to the CATH and Gene3D crew who&#8217;ve made it such an excellent few years! This site&#8217;s staying here but I probably won&#8217;t be updating much &#8212; check the journal instead for updates.]]></description>
			<content:encoded><![CDATA[<p>As of this week (Feb 2011) I&#8217;ve left UCL to start at <a href="http://www.last.fm/">Last.fm</a> as a data scientist. Big up to the <a href="http://www.cathdb.info/">CATH</a> and <a href="http://gene3d.biochem.ucl.ac.uk/">Gene3D</a> crew who&#8217;ve made it such an excellent few years!</p>
<p>This site&#8217;s staying here but I probably won&#8217;t be updating much &#8212; check the <a href="http://www.last.fm/user/andrewclegg/journal">journal</a> instead for updates.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/pastures-new/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importing Delicious bookmarks to Google Bookmarks, with tags</title>
		<link>http://biotext.org.uk/importing-delicious-bookmarks-to-google-bookmarks-with-tags/</link>
		<comments>http://biotext.org.uk/importing-delicious-bookmarks-to-google-bookmarks-with-tags/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 18:48:36 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=550</guid>
		<description><![CDATA[Along with a lot of other people, I was a bit perturbed by the impending closure of Delicious. I&#8217;ve been using it for years and have hundreds of bookmarks, and none of the new crop of competitors seem up to the job, either lacking in features, having no bulk-import facility, or just being too new [...]]]></description>
			<content:encoded><![CDATA[<p>Along with a lot of other people, I was a bit perturbed by the <a href="http://www.guardian.co.uk/technology/blog/2010/dec/17/yahoo-closing-problems">impending closure of Delicious</a>. I&#8217;ve been using it for years and have hundreds of bookmarks, and none of the new crop of competitors seem up to the job, either lacking in features, having no bulk-import facility, or just being too new to have the all-important smell of permanence.</p>
<p><a href="https://www.google.com/bookmarks/l">Google Bookmarks</a> is the closest one that feels reliable enough and is perfectly adequate if you don&#8217;t care about the social features or other bells and whistles &#8212; which I don&#8217;t, I just want a portable, centralized bookmarks list with an informal tagging scheme. But getting Delicious bookmarks into it in bulk is a real pain, involving <a href="http://jahboite.co.uk/blog/2008/06/delicious-tags-to-firefox-3.html">merging a couple of files with a Ruby script</a>, importing the results into Firefox, installing the Firefox Google toolbar, and importing into Google Bookmarks through that. And all the tags are given the prefix &#8220;Tag:&#8221; by the toolbar, for <strong>no good reason whatsoever</strong>. And of course this requires Firefox, and bulk actions on hundreds of bookmarks is <em>amazingly</em> slow in Firefox, taking several minutes at near-100% CPU.</p>
<p>Until <a href="http://news.ycombinator.com/item?id=2016592">Hacker News user kevko mentioned their JS bookmarklet</a> which does a bulk-import from a Delicious dump, with no hassle, no requirement for Firefox, and no silly tag mangling. From 2006! Check it out <a href="http://blog.lifeslip.com/articles/2006/10/25/bookmarklet-delicious-google-bookmarks">here</a>.</p>
<p>Much respect to kevko.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/importing-delicious-bookmarks-to-google-bookmarks-with-tags/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Maschinenfest 2010 highlights</title>
		<link>http://biotext.org.uk/maschinenfest-2010-highlights/</link>
		<comments>http://biotext.org.uk/maschinenfest-2010-highlights/#comments</comments>
		<pubDate>Wed, 10 Nov 2010 09:49:32 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[maschinenfest]]></category>
		<category><![CDATA[music]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=543</guid>
		<description><![CDATA[My Maschinenfest roundup, featuring my top five acts of the festival &#8212; Frl. Linientreu, Matta, Niveau Zero, Subheim and Architect &#8212; is online now at Connexion Bizarre.]]></description>
			<content:encoded><![CDATA[<p><a href="http://biotext.org.uk/wp-content/uploads/2010/11/mf2010.jpg"><img class="alignright size-full wp-image-544" title="mf2010" src="http://biotext.org.uk/wp-content/uploads/2010/11/mf2010.jpg" alt="" width="250" height="64" /></a>My <a href="http://maschinenfest.cenobytes.net/">Maschinenfest</a> roundup, featuring my top five acts of the festival &#8212; Frl. Linientreu, Matta, Niveau Zero, Subheim and Architect &#8212; is <a href="http://www.connexionbizarre.net/architect-frl-linientreu-matta-niveau-zero-subheim-andrews-mf-roundup">online now at Connexion Bizarre</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/maschinenfest-2010-highlights/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>RapidMiner tutorial, 25 Nov 2010</title>
		<link>http://biotext.org.uk/rapidminer-tutorial-25-nov-2010/</link>
		<comments>http://biotext.org.uk/rapidminer-tutorial-25-nov-2010/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 19:09:54 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[data mining]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[rapidminer]]></category>
		<category><![CDATA[statistics]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=539</guid>
		<description><![CDATA[For the next BioGeeks Tech Meet, I&#8217;ll be giving a tutorial on RapidMiner, the nifty data analysis package. RapidMiner &#8212; machine learning for the rest of us All are welcome. Although I&#8217;ll be using examples from biology, there&#8217;s nothing bio-specific in RapidMiner, and it might be useful/interesting to geeks of other varieties too.]]></description>
			<content:encoded><![CDATA[<p>For the next <a href="http://biogeeks.wordpress.com/">BioGeeks</a> Tech Meet, I&#8217;ll be giving a tutorial on <a href="http://rapid-i.com/content/view/181/190/lang,en/">RapidMiner</a>, the nifty data analysis package.</p>
<p><a href="http://biogeeks.wordpress.com/2010/11/22/november-tech-meet-rapidminer-tutorial/">RapidMiner &#8212; machine learning for the rest of us</a></p>
<p>All are welcome. Although I&#8217;ll be using examples from biology, there&#8217;s nothing bio-specific in RapidMiner, and it might be useful/interesting to geeks of other varieties too.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/rapidminer-tutorial-25-nov-2010/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>October BioGeeks at Imperial &#8212; next gen sequencing</title>
		<link>http://biotext.org.uk/october-biogeeks-at-imperial-next-gen-sequencing/</link>
		<comments>http://biotext.org.uk/october-biogeeks-at-imperial-next-gen-sequencing/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 11:43:35 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[bioinformatics]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=520</guid>
		<description><![CDATA[This month&#8217;s London BioGeeks will be at Imperial on the 21st of October. This month we&#8217;re bringing you a special selection of talks on next generation sequencing: Experience in variant calling from exome sequencing Francesco Lescai, Elia Stupka Sequencing whole exomes in order to identify high penetrant variants in few individuals is becoming relatively easy, [...]]]></description>
			<content:encoded><![CDATA[<p>This month&#8217;s <a href="http://biogeeks.wordpress.com/">London BioGeeks</a> will be at Imperial on the 21st of October. This month we&#8217;re bringing you a special selection of talks on next generation sequencing:</p>
<p><strong>Experience in variant calling from exome sequencing</strong><br />
<em>Francesco Lescai, Elia Stupka</em></p>
<p>Sequencing whole exomes in order to identify high penetrant variants in few individuals is becoming relatively easy, and calling variants is apparently an easy push-one-button procedure. However, understanding data quality and filtering out potential false positives in SNP calling is far more difficult. We will give a tour among the key QC and filtering issues, and discuss our experiences in calling variants from exome sequencing projects at UCL Genomics.</p>
<p><strong>Analysing sequencing data on the NGS Cloud</strong><br />
<em>Caroline Johnston, Matteo Turilli</em></p>
<p>The generation of large next-generation sequencing datasets is rapidly becoming a standard procedure in biology, but the resulting data requires compute resources beyond those normally available in a lab.  The National Grid Service&#8217;s prototype Cloud is a first step towards a non-commercial, scalable solution for UK researchers. We will give a brief introduction to the NGS and to the Cloud prototype and will run a demo to process some short read data.</p>
<p><strong>AQuA-NGS: A Quality Assessment Tool for Next Generation Sequencing Data</strong><br />
<em>Zabeen Patel</em></p>
<p>The recent advancement of high-throughput sequencing enables the experimentalist to generate huge amounts of data at the genomic, transcriptomic, and epigenetic levels. However, as this is a relatively new technology, the methods for assessing the quality of the data are still limited. The AQuA-NGS system was developed as a platform-independent, desktop application for the viewing of quality assessment metrics generated by the R/Bioconductor package, ShortRead.  These metrics are stored in a MySQL database, together with run and sample metadata. Using the flash-based GUI, the Bioinformatician may submit new data, browse the database, view metrics via interactive tables and charts, and directly compare QA metrics across samples, on the basis of multiple criteria. The system in its present, foundational state can perform the basic functions of generating, viewing, and comparing a limited set of QA metrics generated from Illumina/Solexa export files. It requires additional development to make it ready for public release, such as the ability to process non-Solexa files, and work with remote destinations. Once complete, it will hopefully be incorporated into the pre-processing pipeline of multiple next generation sequencing platforms. </p>
<p>Head for the Flowers Building, room G47A for 18:00 [map ref 31]. There&#8217;ll be drinks in the lovely Eastside Bar afterwards [map ref 19]. <a href="http://www.imperial.ac.uk/workspace/campusinfo/public/sthkencampus.pdf">Campus map</a> (PDF)</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/october-biogeeks-at-imperial-next-gen-sequencing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BioGeeks tech meet, Oct 2010 &#8212; looking for speaker</title>
		<link>http://biotext.org.uk/biogeeks-tech-meet-oct-2010-looking-for-speaker/</link>
		<comments>http://biotext.org.uk/biogeeks-tech-meet-oct-2010-looking-for-speaker/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 10:23:40 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[bioinformatics]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=514</guid>
		<description><![CDATA[The next London BioGeeks tech meet will be on 21st of October at Imperial College &#8212; full details to follow. We&#8217;re looking for another speaker. If you want to do an informal talk on a topic to do with bioinformatics, genomics, or any practical tech subject that might be of interest to biogeeks &#8212; cloud [...]]]></description>
			<content:encoded><![CDATA[<p>The next London BioGeeks tech meet will be on 21st of October at Imperial College &#8212; full details to follow.</p>
<p>We&#8217;re looking for another speaker. If you want to do an informal talk on a topic to do with bioinformatics, genomics, or any practical tech subject that might be of interest to biogeeks &#8212; cloud computing, big data management, machine learning, development tools, algorithm tuning etc. etc. etc. &#8212; then give me a shout.</p>
<p>Talks are normally 20-30mins but that&#8217;s negotiable.</p>
<p>See <a href="http://is.gd/fBPUM">here</a> for examples of previous meets, to get an idea of what we&#8217;re about.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/biogeeks-tech-meet-oct-2010-looking-for-speaker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Posting to Twitter automatically using OAuth</title>
		<link>http://biotext.org.uk/posting-to-twitter-automatically-using-oauth/</link>
		<comments>http://biotext.org.uk/posting-to-twitter-automatically-using-oauth/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 12:44:30 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=502</guid>
		<description><![CDATA[Twitter recently switched off basic HTTP authentication, forcing developers to use the more complex (but hopefully safer) OAuth. There are lots of OAuth examples out there, but they all seem to focus on interactive apps, where the user is sent to Twitter to authenticate, and then the app uses the resulting access token to post [...]]]></description>
			<content:encoded><![CDATA[<p>Twitter <a href="http://blog.twitter.com/2010/06/switching-to-oauth.html">recently switched off basic HTTP authentication</a>, forcing developers to use the more complex (but hopefully safer) OAuth. There are lots of OAuth examples out there, but they all seem to focus on interactive apps, where the user is sent to Twitter to authenticate, and then the app uses the resulting <strong>access token</strong> to post on the user&#8217;s behalf.</p>
<p>However, for <a href="http://funcnet.eu/">FuncNet</a> we have a simple script running in a cron job, which posts a status message to <a href="http://twitter.com/FuncNet">@FuncNet</a> every so often. This runs without any supervision, so I was left scratching my head as to how I could obtain the access token and <strong>access token secret</strong> required to post. The app registration page at http://twitter.com/oauth_clients/details/<em>NNNNNN</em> for each app only shows its <strong>consumer key</strong> and <strong>consumer secret</strong> which are something different.</p>
<p>Eventually, thanks to <a href="http://search.cpan.org/dist/Net-Twitter/">Net::Twitter</a> developer Marc Mims on <a href="http://groups.google.com/group/twitter-development-talk/browse_thread/thread/160cb4d3f20ef61">this thread</a>, I discovered that there&#8217;s a whole separate page for each app at http://dev.twitter.com/apps/<em>NNNNNN</em>/my_token which has the access token and access token secret required for the app to post to its own account.</p>
<p>N.B. In the URLs above, <em>NNNNNN</em> corresponds to the numeric ID for your application. If you don&#8217;t know what this is, just go to http://dev.twitter.com/apps, click on the app name to get the consumer strings, and then click on My Access Token to get the access strings.</p>
<p>Once you have these, you can post like this (thanks again to Marc for example):</p>

<div class="wp_syntax"><div class="code"><pre class="perl" style="font-family:monospace;">    <span style="color: #000000; font-weight: bold;">use</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Twitter</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">my</span> <span style="color: #0000ff;">$nt</span> <span style="color: #339933;">=</span> Net<span style="color: #339933;">::</span><span style="color: #006600;">Twitter</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">new</span><span style="color: #009900;">&#40;</span>
        traits <span style="color: #339933;">=&gt;</span> <span style="color: #009900;">&#91;</span><span style="color: #000066;">qw</span><span style="color: #339933;">/</span>OAuth API<span style="color: #339933;">::</span><span style="color: #006600;">REST</span><span style="color: #339933;">/</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
        consumer_key        <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$YOUR_CONSUMER_KEY</span><span style="color: #339933;">,</span>
        consumer_secret     <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$YOUR_CONSUMER_SECRET</span><span style="color: #339933;">,</span>
        access_token        <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$YOUR_ACCESS_TOKEN</span><span style="color: #339933;">,</span>
        access_token_secret <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">$YOUR_ACCESS_SECRET</span><span style="color: #339933;">,</span>
    <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #0000ff;">$nt</span><span style="color: #339933;">-&gt;</span><span style="color: #006600;">update</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Bob's your uncle!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Why you need 4 distinct incomprehensible strings in order to post a single tweet, I don&#8217;t know, but presumably it&#8217;s justified on security grounds. What <em>isn&#8217;t</em> justified is Twitter hiding two of them somewhere else entirely, and not linking to that place from the main OAuth page for the app.</p>
<p>Not useful, guys.</p>
<p><strong>UPDATE:</strong> It seems there are bigger problems with Twitter&#8217;s new process. This <a href="http://arstechnica.com/security/guides/2010/09/twitter-a-case-study-on-how-to-do-oauth-wrong.ars/">detailed ArsTechnica article</a> describes OAuth 1.0a as &#8220;an inelegant hack&#8221; and Twitter&#8217;s implementation of it as being &#8220;against all reason&#8221;.</p>
<p>If you&#8217;re having trouble with it, you&#8217;re not alone; it seems almost designed to cause problems for app developers, and particularly open-source app developers. The article&#8217;s well worth a read.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/posting-to-twitter-automatically-using-oauth/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing Spotify on Fedora 13</title>
		<link>http://biotext.org.uk/installing-spotify-on-fedora-13/</link>
		<comments>http://biotext.org.uk/installing-spotify-on-fedora-13/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 11:52:55 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[redhat]]></category>
		<category><![CDATA[spotify]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=496</guid>
		<description><![CDATA[I&#8217;ve recently taken possession of a flashy new workstation running Fedora, and with joy in my heart went to install Spotify on it, only to discover&#8230; Noooo&#8230; They only offer .deb packages for Debian and Ubuntu. Thankfully, the solution was easier than I thought. Do all the following as root&#8230; 1. Install dpkg, the Debian [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently taken possession of a flashy new workstation running Fedora, and with joy in my heart went to install <a href="http://www.spotify.com/uk/download/previews/">Spotify</a> on it, only to discover&#8230; Noooo&#8230; They only offer .deb packages for Debian and Ubuntu.</p>
<p>Thankfully, the solution was easier than I thought. Do all the following as root&#8230;</p>
<p>1. Install dpkg, the Debian package management tool:</p>
<p><code>yum install dpkg</code></p>
<p>2. Download the base package for your architecture, and the gnome support package, from here:</p>
<p><a href="http://repository.spotify.com/pool/non-free/s/spotify/">http://repository.spotify.com/pool/non-free/s/spotify/</a></p>
<p>3. Create a temp directory, and unpack them there (we want to check for clashes):</p>
<p><code>mkdir spotify<br />
cd spotify<br />
dpkg -x ../spotify-client-qt_0.4.7.132.g9df34c0-1_amd64.deb .<br />
dpkg -x ../spotify-client-gnome-support_0.4.7.132.g9df34c0-1_all.deb .</code></p>
<p>4. This gives you a directory tree starting at <code>/usr</code>. You can check for clashes like this:</p>
<p><code>find -not -type d -exec ls -l /'{}' \;</code></p>
<p>&#8230; and make sure there&#8217;s no files found.</p>
<p>5. Then re-extract them into your root partition (hence checking for clashes first):</p>
<p><code>dpkg -x ../spotify-client-qt_0.4.7.132.g9df34c0-1_amd64.deb /<br />
dpkg -x ../spotify-client-gnome-support_0.4.7.132.g9df34c0-1_all.deb /</code></p>
<p>6. Finally, we need to manually install qt-x11 as this dependency is needed:</p>
<p><code>yum install qt-x11</code></p>
<p>7. Then just type <code>spotify</code> and log in!</p>
<p>Seems pretty stable so far, apart from a couple of minor glitches.</p>
<p><strong>EDIT:</strong> As suggested by Tyson Key in <a href="http://getsatisfaction.com/spotify/topics/spotify_on_fedora_13_audio_skips">this thread</a>, I got rid of the audio glitches by starting the PulseAudio volume control (<code>/usr/bin/pavucontrol</code>) before Spotify. Maybe this adds some buffering or something.</p>
<p><em>N.B. I take no responsibility if this process damages your computer, your music collection, your hearing or your sanity. Try at your own risk :-)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/installing-spotify-on-fedora-13/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Tunnelling a connection through 2 servers via ssh</title>
		<link>http://biotext.org.uk/tunnelling-a-connection-through-2-servers-via-ssh/</link>
		<comments>http://biotext.org.uk/tunnelling-a-connection-through-2-servers-via-ssh/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 19:19:28 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[OS X]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=490</guid>
		<description><![CDATA[This took a bit of head-scratching, so for future reference, or anyone else looking: Say I am working outside the office firewall, on a machine called home, and I need to get into a MySQL server inside it. (Doesn&#8217;t have to be MySQL, but just for argument&#8217;s sake.) There&#8217;s a machine called gateway I can [...]]]></description>
			<content:encoded><![CDATA[<p>This took a bit of head-scratching, so for future reference, or anyone else looking:</p>
<p>Say I am working outside the office firewall, on a machine called <code>home</code>, and I need to get into a MySQL server inside it. (Doesn&#8217;t have to be MySQL, but just for argument&#8217;s sake.)</p>
<p>There&#8217;s a machine called <code>gateway</code> I can ssh to and tunnel through, but for security reasons, the database server <code>mysql</code> doesn&#8217;t accept connections from <code>gateway</code> directly. But my desktop machine at the office (err&#8230; <code>desktop</code>) can connect to <code>mysql</code>.</p>
<p>One way round it is to ssh from <code>home</code> to <code>gateway</code> and forward a port on <code>gateway</code> to the ssh server on <code>desktop</code>:</p>
<pre>
home $ ssh -L 2222:desktop.example.org:22 -tAY gateway.example.org
</pre>
<p>And then in another terminal, ssh from <code>home</code> to <code>desktop</code> via this tunnel, forwarding another port on <code>home</code> to the incoming connections port on <code>mysql</code> (3306 in MySQL&#8217;s case usually):</p>
<pre>
home $ ssh -p 2222 -L 23306:mysql.example.org:3306 127.0.0.1
</pre>
<p>This time, you&#8217;re connecting to <code>home</code> port 2222, but because of the first command, this forwards you straight to <code>desktop</code> port 22.</p>
<p>Now both tunnels are in place, you can just connect to port 23306 on <code>home</code> and arrive by magic at <code>mysql</code>. In another terminal (or from your MySQL GUI):</p>
<pre>
home $ mysql -uUSER -pPASS -h127.0.0.1 -P23306
</pre>
<p>This example shows a tunnel-within-a-tunnel. There should be a way to make this work using end-to-end tunnelling instead, I tried but didn&#8217;t get anywhere. But that might be due to ssh server restrictions on our equivalent of <code>gateway</code>.</p>
<p>If none of this means anything, there&#8217;s an <a href="http://magazine.redhat.com/2007/11/06/ssh-port-forwarding/">intro to ssh port forwarding here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/tunnelling-a-connection-through-2-servers-via-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best new feature in Eclipse 3.6 Helios</title>
		<link>http://biotext.org.uk/best-new-feature-in-eclipse-3-6-helios/</link>
		<comments>http://biotext.org.uk/best-new-feature-in-eclipse-3-6-helios/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 13:20:44 +0000</pubDate>
		<dc:creator>Andrew</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[LJC]]></category>

		<guid isPermaLink="false">http://biotext.org.uk/?p=487</guid>
		<description><![CDATA[&#8230; is hidden away on the last tab of the Java Formatting Profile editor (Preferences -> Java -> Code Style -> Formatter -> Edit). They&#8217;ve finally (after nearly six years) added the ability to temporarily turn the code formatter off for a tricksy block that needs its own custom formatting. e.g.: // @formatter:off xml .append&#40; [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230; is hidden away on the last tab of the Java Formatting Profile editor (Preferences -> Java -> Code Style -> Formatter -> Edit).</p>
<p>They&#8217;ve finally (after <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76435">nearly six years</a>) added the ability to temporarily turn the code formatter off for a tricksy block that needs its own custom formatting. e.g.:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">			<span style="color: #666666; font-style: italic;">// @formatter:off</span>
			xml
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;&lt;node id='&quot;</span> <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> protein <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;'&gt;&lt;data key='class'&gt;&quot;</span> <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> cls <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;&lt;/data&gt;&lt;data key='label'&gt;&quot;</span> <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> protein <span style="color: #009900;">&#41;</span>
			.<span style="color: #006633;">append</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;&lt;/data&gt;&lt;/node&gt;&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #666666; font-style: italic;">// @formatter:on</span></pre></div></div>

<p>See the Off/On Tags tab for details.</p>
<p>Nice one guys&#8230; Eventually.</p>
]]></content:encoded>
			<wfw:commentRss>http://biotext.org.uk/best-new-feature-in-eclipse-3-6-helios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

