<?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>ze blog of simon &#187; Open Source</title>
	<atom:link href="http://www.mccartney.ie/wordpress/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mccartney.ie/wordpress</link>
	<description>too boring to have a real blog</description>
	<lastBuildDate>Tue, 20 Dec 2011 12:52:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Faking Production &#8211; database access</title>
		<link>http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=faking-production-database-access</link>
		<comments>http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 12:52:44 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Bright Ideas]]></category>
		<category><![CDATA[Linux & Laptops]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Random Toad]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=256</guid>
		<description><![CDATA[One of our services has been around for a while, a realy long time.  It used to get developed in production, there is an awful lot of work involved in making the app self-contained, to where it could be brought up in a VM and run without access to production or some kinds of fake [...]]]></description>
			<content:encoded><![CDATA[<p>One of our services has been around for a while, a realy long time.  It used to get developed in production, there is an awful lot of work involved in making the app self-contained, to where it could be brought up in a VM and run without access to production or some kinds of fake supporting environment.  There&#8217;s lots of stuff hard coded in the app (like database server names/ip etc), and indeed, and there&#8217;s a lot of code designed to handle inaccessible database servers in some kind of graceful manor.</p>
<p>We&#8217;ve been taking bite sized chunks of all of this over the last few years, we&#8217;re on the home straight.</p>
<p>One of the handy tricks we used to get this application to be better self-contained was avoid changing all of the database access layer (hint, there isn&#8217;t one) and just use iptables to redirect requests to production database servers to either local empty database schema on the VM, or shared database servers with realistic amounts of data.</p>
<p>We manage our database pools (master-dbs.example.com, slave-dbs.example.com, other-dataset.example.com etc) using DNS (PowerDNS with MySQL back end), in production, if you make a DNS request for master-dbs.example.com, you will get 3+ IPs back, one of which will be in your datacentre, the others will be other datacentres, the app has logic for selecting the local DB first, and using an offsite DB if there is some kind of connection issue.  We also mark databases as offline by prepending the relevant record in MySQL with OUTOF, so that a request for master-dbs.example.com will return only 2 IPs, and a DNS request for OUTOFmaster-dbs.example.com will return any DB servers marked out of service.</p>
<p>Why am I telling you all of this?  Well, it&#8217;s just not very straight forward for us to update a single config file and have the entire app start using a different database server. <em>Fear not, our production databases aren&#8217;t actually accessible from the dev environments.</em></p>
<p>But what we can do is easily identify the IP:PORT combinations that an application server will try and connect to.  And once we know that it&#8217;s pretty trivial to generate a set of iptables statements that will quietly divert that traffic elsewhere.</p>
<p>Here&#8217;s a little ruby that generates some iptables statements to divert access to remote, production, databases to local ports, where you can either use ssh port-forwarding to forward on to a shared set of development databases, or to several local empty-schema MySQL instances:</p>
<blockquote><p>require &#8220;rubygems&#8221;<br />
require &#8216;socket&#8217;</p>
<p># map FQDNs to local ports<br />
fqdn_port  = Hash.new<br />
fqdn_port["master-dbs.example.com"] = 3311<br />
fqdn_port["slave-dbs.example.com"] = 3312<br />
fqdn_port["other-dataset.example.com"] = 3314</p>
<p>fqdn_port.each do |fqdn, port|<br />
  puts &#8220;#&#8221;<br />
  puts &#8220;# #{fqdn}&#8221;<br />
  # addressess for this FQDN<br />
  fqdn_addr = Array.new</p>
<p>  # get the addresses for the FQDN<br />
  addr = TCPSocket.gethostbyname(fqdn)<br />
  addr[3, addr.length].each { |ip| fqdn_addr &lt;&lt; ip }</p>
<p>  addr = TCPSocket.gethostbyname(&#8216;OUTOF&#8217; + fqdn)<br />
  addr[3, addr.length].each { |ip| fqdn_addr &lt;&lt; ip }</p>
<p>  fqdn_addr.each do |ip|<br />
    puts &#8220;iptables -t nat -A OUTPUT -p tcp -d #{ip} &#8211;dport 3306 -j DNAT &#8211;to 127.0.0.1:#{fqdn_port[fqdn]}&#8221;<br />
  end<br />
end</p></blockquote>
<p>And yes, this only generates the statements, just pipe the output into bash if you want the commands actually run.  Want to see what it&#8217;s going to do?  Just run it.  Simples.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2011/12/faking-production-database-access/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The New Toolbox</title>
		<link>http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-new-toolbox</link>
		<comments>http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 15:05:42 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Bright Ideas]]></category>
		<category><![CDATA[Linux & Laptops]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=217</guid>
		<description><![CDATA[In days gone by, any computer guy worth his salt had a collection of boot floppies, 5.25&#8243; &#38; 3.5&#8243;, containing a mix of MS-DOS, DR-DOS, Toms Root Boot &#38; Norton tools. These days passed and the next set of essentials was boot cd-r, containing BartPE, RIPLinux, Knoppix etc. People quickly switched to carrying these tools [...]]]></description>
			<content:encoded><![CDATA[<p>In days gone by, any computer guy worth his salt had a collection of boot floppies, 5.25&#8243; &amp; 3.5&#8243;, containing a mix of MS-DOS, DR-DOS, Toms Root Boot &amp; Norton tools.  These days passed and the next set of essentials was boot cd-r, containing BartPE, RIPLinux, Knoppix etc.  People quickly switched to carrying these tools USB sticks, smaller, easier to change, great when the dodgy PC you were trying to breathe life into supported USB booting.</p>
<p>I think there&#8217;s a better way, based on the last 3 days of hell spent setting up what should have been identical touchscreen machines (no cd, slow USB interfaces)</p>
<p>Your new toolkit is a cheap laptop, with a big hard disk, running the following:</p>
<ol>
<li>Your favourite Linux distro (I&#8217;ve used <a href="http://www.ubuntu.com/">Ubuntu</a> for this laptop)</li>
<li>tftpd, <a href="http://www.isc.org/software/dhcp">dhcpd</a> &amp; <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">dnsmasq</a> setup for PXE booting other machines from this laptop (FOG uses dhcpd for all it&#8217;s automatic DHCP magic, use dnsmasq for simple local DNS, required for Unattended)</li>
<li><a href="http://www.fogproject.org/">FOG Cloning System</a></li>
<li><a href="http://unattended.sourceforge.net/">Unattended</a> Windows 2000/XP/2003 Network Install System</li>
<li><a href="http://clonezilla.org/">CloneZilla</a> PXE Image (for good measure)</li>
<li><a href="http://en.wikipedia.org/wiki/Recovery_Is_Possible">RIPLinux</a> PXE Image</li>
</ol>
<p>Why?  USB booting stills seems troublesome, installing Windows from flash seems very slow.  Nearly everything supports PXE these days, if it has a built in ethernet port, it&#8217;s pretty much guaranteed to support PXE booting.  There is nothing like the feeling of being able to image a machine into FOG over a 1Gb crossover cable in a matter of minutes.  Got everything working? image it and walk away, safe in the knowledge that if somebody comes along and breaks things, you can image it back in minutes, instead of having to do another clean install and build all your updates &amp; software back on top.</p>
<p>There&#8217;s a little bit of plain in getting all of separate packages to run from the one /tftpboot/pxelinux.cfg/default, but it&#8217;s just a matter of careful copy &amp; paste from the canned configs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2010/06/the-new-toolbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL Replication slides from BarCamp Belfast 2010</title>
		<link>http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mysql-replication-slides-from-barcamp-belfast-2010</link>
		<comments>http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 21:04:04 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[barcampbelfast]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[replication]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=214</guid>
		<description><![CDATA[just incase anybody was interested, the slides from my BarCamp Belfast talk are here: Google Docs SlideShare (you can download the PPT from there as well)]]></description>
			<content:encoded><![CDATA[<p>just incase anybody was interested, the slides from my BarCamp Belfast talk are here:</p>
<ul>
<li><a href="http://docs.google.com/present/edit?id=0AYkljUJw32jSZGQ4Z2tyYl82MGcyaGh4cWR4&amp;hl=en_GB">Google Docs</a></li>
<li><a href="http://www.slideshare.net/simonmccartney/scaling-your-app-with-mysql-replication">SlideShare</a> (you can download the PPT from there as well)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2010/06/mysql-replication-slides-from-barcamp-belfast-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Portadown &#8211; Open Source Hotspot</title>
		<link>http://www.mccartney.ie/wordpress/2009/03/portadown-open-source-hotspot/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=portadown-open-source-hotspot</link>
		<comments>http://www.mccartney.ie/wordpress/2009/03/portadown-open-source-hotspot/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 22:36:55 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=181</guid>
		<description><![CDATA[I&#8217;m just back from the Open Source Solution Centre&#8217;s Information Evening at the Seagoe Hotel, Daniel Bled has obviously worked hard at sharing his passion for open source software, he and the rest of the team from Southern Regional College &#38; InvestNI put on an evening they should be proud of.  Daniel did a sterling [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just back from the Open Source Solution Centre&#8217;s <a href="http://iq360.eu/events/details/11">Information Evening</a> at the Seagoe Hotel, Daniel Bled has obviously worked hard at sharing his passion for open source software, he and the rest of the team from <a href="http://www.src.ac.uk/">Southern Regional College</a> &amp; <a href="http://www.investni.com/">InvestNI</a> put on an evening they should be proud of.  Daniel did a sterling job of trying to convey the Open Source philosophy to the gathered non-technical, business oriented audience.  He focused on:</p>
<ol>
<li>Open Source &#8211; the source code is available for all to view.</li>
<li>Open Licensing &#8211; zero licensing costs for using the software, although support costs.</li>
<li>Open Access &#8211; your data isn&#8217;t locked away.</li>
<li>Open To Change &#8211; you have the source code, you can make it fit your needs.</li>
</ol>
<p>I&#8217;m paraphrasing all of this as I didn&#8217;t take notes and this is all from memory &#8211; Daniel please feel free to correct me.  I&#8217;m sure <a href="http://en.wikipedia.org/wiki/Richard_Stallman">Stallman</a> &amp; Co would be spitting blood by now, but Daniel&#8217;s pitch seemed to strike home with the audience, I think The <a href="http://www.sigg3.net/entry/1338">Four</a> <a href="http://www.youtube.com/watch?v=XRVInjt8MVk">Fundamental</a> Freedoms would have been lost on them in the 10min Daniel had.</p>
<p>After a substantial meal, we had a talk from an InvestNI representative who attempted to convince us that the current economic environment is tough, but we have some come through tougher aspects in the last few decades, and he did a fairly good job &#8211; the outlook is gloomy, but a lack of confidence will only make things worse.  He repeated a comment I have heard before, &#8220;the project was good last month, it&#8217;ll be good next month, if it makes sense, do it.  Don&#8217;t let the bad outlook on the news put you off&#8221;.  Here here.</p>
<p>The next stage was a little more depressing, the idea was for local businesses who have worked with the OSSC to talk about there experiences &amp; benefits, unfortunately Bowman Group&#8217;s Marketing &amp; Sales Director couldn&#8217;t resist a captive audience and squandared the bulk of the time to tell us all about the group and what great windows they make.  Luckily their HR &amp; IS manager was more direct &amp; to the point, explaining that data lock-in, a lack of flexibility &amp; rocketing costs helped them select <a href="http://www.sugarcrm.org/">SugarCRM</a> as their CRM platform, helping them track there sales process and possibly even drive part of their manufacturing processes.</p>
<p>Next up was one of the owners of a local HR outsourcing firm, it was a similar story of meeting with Daniel and Daniel &amp; his team helping them use SugarCRM to manage there growing list of prospects, customers, projects and related tasks.  The speaker put across her point well, explaining that even her as a non-technical user could see the benefits and use the software easily.</p>
<p>A brief wrap up from Daniel was followed by the usual attempt at a panel Q&amp;A session, which failed miserable as they usually do in this part of the world.</p>
<p>What I&#8217;m looking forward to next is discovering what the next step is for the Open Source Solution Centre is, how do we in the Open Source community enagage with the OSSC and how do local businesses do the same.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2009/03/portadown-open-source-hotspot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WRR DNS with PowerDNS</title>
		<link>http://www.mccartney.ie/wordpress/2008/08/wrr-dns-with-powerdns/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=wrr-dns-with-powerdns</link>
		<comments>http://www.mccartney.ie/wordpress/2008/08/wrr-dns-with-powerdns/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 09:03:59 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Bright Ideas]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Random Toad]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[powerdns]]></category>
		<category><![CDATA[weighted round robin]]></category>
		<category><![CDATA[wrr]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=140</guid>
		<description><![CDATA[I had an interesting challenge in work recently, we have 3 data centres running our applications, currently the RR DNS system does what it&#8217;s supposed to, spreads the data round each of the 3 DCs evenly.  This works fine when all of your data centres have a similar capacity.  But ours don&#8217;t.  This causes problem [...]]]></description>
			<content:encoded><![CDATA[<p>I had an interesting challenge in work recently, we have 3 data centres running our applications, currently the RR DNS system does what it&#8217;s supposed to, spreads the data round each of the 3 DCs evenly.  This works fine when all of your data centres have a similar capacity.  But ours don&#8217;t.  This causes problem when your load/traffic gets to the point where one of the DCs can&#8217;t cope.  Now, there are many expensive and complicated solutions to this, this how ever isn&#8217;t one of them, it&#8217;s quite simple, has it&#8217;s weaknesses, but as you&#8217;ll see it&#8217;s also quite elegant.</p>
<h2>Background</h2>
<p>Our infrastructure already relies heavily on MySQL replication &amp; PowerDNS, both of those are installed on all our public machines, indeed, we have a large MySQL replication loop with many spokes off the loop, ensuring that all of the MySQL data is available everywhere.  PowerDNS is used for both internal &amp; external DNS services, all backed off the MySQL backend on the aforementioned MySQL replication loop.  This is important to us, as this solution required no new software, just some configuration file tweaks &amp; same database table alterations.</p>
<h2>Overview</h2>
<p>Each record is assigned a weight.  This weight will influence the likelihood of that record being returned in a DNS request with multiple A records.  A weight of 0 will mean that the record will always be in the set of A records returned.  A weight of 100 will mean that the record will never be returned (well, almost never).</p>
<h2>Method</h2>
<ol>
<li>Add an extra column to the PowerDNS records table, called weight, this is an integer.</li>
<li>Create a view on the records table that adds random values to each record every time it is retrieved.</li>
<li>Alter the query used to retrieve data from the records table to use the view and filter on the weight and random data to decide if the record should be returned.</li>
</ol>
<p>This is achieved by using the view to create a random number between 0 and 100 (via rand()*100).</p>
<blockquote><p>
create view recordsr AS select content,ttl,prio,type,domain_id,name, rand()*100 as rv, weight from records;
</p></blockquote>
<p>We use this SQL to add the column:</p>
<blockquote><p>alter table records add column `weight` int(11) default 0 after change_date;
</p></blockquote>
<p>The random data is then compared against the record weight to decide if the record should be returned in the request. This is done using the following line in the pdns.conf file:</p>
<blockquote><p>gmysql-any-query=select content,ttl,prio,type,domain_id,name from recordsr where name=&#8217;%s&#8217; and weight &lt; rv order by rv
</p></blockquote>
<p>For small sample sets (100), the results are quite poor &amp; the method proves to be inaccurate, but for larger sets, 10,000 and above, the accuracy improved greatly.  I&#8217;ve written some scripts to perform some analysis against the database server &amp; against the DNS server itself.  To test the DNS server, I set cache-ttl=1 and no-shuffle=on in pdns.conf.  With the cache-ttl=1, I waited 1.1 seconds between DNS queries.</p>
<p>Here&#8217;s some results, <a href="http://www.mccartney.ie/~simonm/sample-pdns.pl-txt">sample-pdns.pl</a> was used to gather this data:</p>
<blockquote><p>Sample Size = 1,000</p>
<p>#### WRR DNS Results<br />
dc1: 462, 46.2% (sample size), 23.38% (total RR)<br />
dc2: 514, 51.4% (sample size), 26.01% (total RR)<br />
dc3: 1000, 100% (sample size), 50.60% (total RR)<br />
total_hits: 1976, 197.6% (sample size), 100% (total RR)</p>
<p>Desired priorities were:<br />
dc1 2/100, 80%<br />
dc2 5/100, 50%<br />
dc3 0/100, 100%
</p></blockquote>
<p>Sample Size = 10,000</p>
<blockquote><p>#### WRR DNS Results<br />
dc1: 10000, 100% (sample size), 50.57% (total RR)<br />
dc2: 5821, 58.21% (sample size), 29.43% (total RR)<br />
dc3: 3952, 39.52% (sample size), 19.98% (total RR)</p>
<p>pos-1-dc1: 5869, 58.69% (sample size), 29.68% (total RR)<br />
pos-1-dc2: 2509, 25.09% (sample size), 12.68% (total RR)<br />
pos-1-dc3: 1622, 16.22% (sample size), 8.20% (total RR)<br />
pos-2-dc1: 3332, 33.32% (sample size), 16.85% (total RR)<br />
pos-2-dc2: 2548, 25.48% (sample size), 12.88% (total RR)<br />
pos-2-dc3: 1540, 15.4% (sample size), 7.78% (total RR)<br />
pos-3-dc1: 799, 7.99% (sample size), 4.04% (total RR)<br />
pos-3-dc3: 790, 7.9% (sample size), 3.99% (total RR)<br />
pos-3-dc2: 764, 7.64% (sample size), 3.86% (total RR)</p>
<p>total_hits: 19773, 197.73% (sample size), 100% (total RR)</p>
<p>#### Desired priorities were:<br />
dc3 60/100, 40%<br />
dc2 40/100, 60%<br />
dc1 0/100, 100%
</p></blockquote>
<p>As you can see, with the larger sample size, the weighting becomes much more transparent.</p>
<p>dc1 appeared in the returned records 100% of the time, as expected, dc2 appeared 58.21% (desired percentage was 60%) and dc3 appeared 39.52% (desired percentage was 40%).</p>
<p>What is possibly more interesting &amp; relevant is the number of times a particular dc appears in the top slot (pos-1) of the returned results, this is the A record most likely to be used by the client.  dc1 appears in the top slot 58.69% of the time, with dc2 appearing 25.09% and dc3 16.22%.  These results diverge from the desired prioroties quite a bit, but are still in order with the desired distribution.</p>
<h2>Advantages</h2>
<ol>
<li>No new code/binaries to distribute</li>
<li>Reuse existing infrastructure</li>
<li>Easy to roll-back from.</li>
</ol>
<h2>Disadvantages</h2>
<ol>
<li>Fairly coarse grained controls of load balancing (no feedback loop)</li>
<li>At least 1 site should have a weight of 0</li>
<li>No gurantee on number of records that will be returned in a query (other then records with a weight of 0)</li>
<li>Increased load on the database generating 1 or more random numbers on each query against the view</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/08/wrr-dns-with-powerdns/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rapid Web Service Integration Slides</title>
		<link>http://www.mccartney.ie/wordpress/2008/06/rapid-web-service-integration-slides/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rapid-web-service-integration-slides</link>
		<comments>http://www.mccartney.ie/wordpress/2008/06/rapid-web-service-integration-slides/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 10:22:51 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[barcamp barcampbelfast]]></category>
		<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/2008/06/21/rapid-web-service-integration-slides/</guid>
		<description><![CDATA[slides here for those interested RapidWSinRails.swf RapidWSinRails.pdf]]></description>
			<content:encoded><![CDATA[<p>slides here for those interested <a title="RapidWSinRails.swf" href="http://www.mccartney.ie/~simonm/RapidWSinRails.swf">RapidWSinRails.swf</a> <a title="RapidWSinRails.pdf" href="http://www.mccartney.ie/~simonm/RapidWSinRails.pdf">RapidWSinRails.pdf</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/06/rapid-web-service-integration-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hat in the ring</title>
		<link>http://www.mccartney.ie/wordpress/2008/06/hat-in-the-ring/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hat-in-the-ring</link>
		<comments>http://www.mccartney.ie/wordpress/2008/06/hat-in-the-ring/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 22:07:03 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[Bright Ideas]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[community]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/2008/06/17/hat-in-the-ring/</guid>
		<description><![CDATA[Well, I&#8217;ve just gone &#38; thrown my hat in the ring to speak at BarCampBelfast, if anybody actually wants to here my proposed talk, it&#8217;ll be 5 slides I prepared for the first Mobile Monday Belfast, I prepared two sets, one business &#38; one techie, Mobile Monday got the business slides]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve just gone &amp; thrown my hat in the ring to speak at <a href="http://barcamp.pbwiki.com/BarCampBelfast">BarCampBelfast</a>, if anybody actually wants to here my proposed talk, it&#8217;ll be 5 slides I prepared for the first <a href="http://mobilemondaybelfast.org/">Mobile Monday Belfast</a>, I prepared two sets, one business &amp; one techie, Mobile Monday got the business slides <img src='http://www.mccartney.ie/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/06/hat-in-the-ring/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jBPM Community Day</title>
		<link>http://www.mccartney.ie/wordpress/2008/06/jbpm-community-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jbpm-community-day</link>
		<comments>http://www.mccartney.ie/wordpress/2008/06/jbpm-community-day/#comments</comments>
		<pubDate>Sun, 08 Jun 2008 09:48:46 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[bpm]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[dublin]]></category>
		<category><![CDATA[jboss]]></category>
		<category><![CDATA[jbpm]]></category>
		<category><![CDATA[pvm]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=131</guid>
		<description><![CDATA[Friday 6th June 2008 was the first jBPM Community Day, held in the Guinness Store House in Dublin, this is practically on my doorstep, and as we’ve been looking at jBPM for some pilots recently, I couldn’t not go. The speakers on the day were Tom Baeyens, Joram Barrez, Paul Browne and Koen Aers. It [...]]]></description>
			<content:encoded><![CDATA[<p>Friday 6th June 2008 was the first <a href="http://wiki.jboss.org/wiki/JbpmCommunityDay">jBPM Community Day</a>, held in the <a href="http://www.guinness-storehouse.com/">Guinness Store House</a> in <a href="http://en.wikipedia.org/wiki/Dublin">Dublin</a>, this is practically on my doorstep, and as we’ve been looking at jBPM for some pilots recently, I couldn’t not go.</p>
<p>The speakers on the day were <a href="http://processdevelopments.blogspot.com/">Tom Baeyens</a>, <a href="http://www.jorambarrez.be/blog/2008/04/03/some-real-life-jbpm-action/">Joram Barrez</a>, <a href="http://www.firstpartners.net/blog/technology/java/2008/06/05/jboss-business-rules-and-jbpm-workflow-presentation-dublin/">Paul Browne</a> and <a href="http://koentsje.blogspot.com/">Koen Aers</a>.<span class="Apple-converted-space"> </span>It was great to hear that jBPM is being used in all sort of environments, in some very large projects and most of all the direction of the project from the project leaders.<span class="Apple-converted-space"> </span>It was also good to hear about local take up in &amp; around Ireland (there were guests from all over Europe, including some Americans based in Budapest)<span class="Apple-converted-space"> </span></p>
<p>Tom &amp; the rest of the team are taking their collective experience in the BPM and building the <a href="http://www.jboss.org/jbossjbpm/pvm/">Process Virtual Machine</a>, and state engine that can be used to execute processes described in many different languages, starting with jPDL, but already on the horizon are BPEL and Seam PageFlow.<span class="Apple-converted-space"> </span>The PVM looks set to be the definitive state machine for process management, with plugin interfaces for persistence, task management etc.</p>
<p>It was a great day, many thanks to all of those who contributed to the smooth running &amp; interesting content, and selection of a great venue!</p>
<p>[It’s only just struck me what a great venue, making a product that’s as consistently good as Guinness requires clearly documented processes, which soon becomes clear when you take the tour of the Store House that describes the process involved in taking the raw ingredients and producing something as fine as a smooth pint of Guinness]</p>
<p>Questions for the jBPM Community/Things I’m going to try and answer over the coming weeks</p>
<ul style="list-style-type: disc">
<li style="font: 12.0px Helvetica">Where’s the absolute beginners guide?<span class="Apple-converted-space"> </span>[or, as<span class="Apple-converted-space"> </span>this is in a community, where can I start one and what needs to be in it? <img src='http://www.mccartney.ie/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ]</li>
<li style="font: 12.0px Helvetica">What are the requirements/guidelines on replacing the jbpm-console or integrating functionality into your own app?</li>
<li style="font: 12.0px Helvetica">What are the interface points/techniques in PVM for other languages?</li>
<li style="font: 12.0px Helvetica">Drools/jBPM &#8211; what are the integration scenarios?
<ul style="list-style-type: hyphen">
<li style="font: 12.0px Helvetica">populate Drools with data/beans in a node of a process?</li>
<li style="font: 12.0px Helvetica">do both things operate independently?</li>
</ul>
</li>
<li style="font: 12.0px Helvetica">Integration with authentication systems?<span class="Apple-converted-space"> </span>(AD/LDAP instead of SQL based accounts)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/06/jbpm-community-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssh-vulnkey</title>
		<link>http://www.mccartney.ie/wordpress/2008/05/ssh-vulnkey/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ssh-vulnkey</link>
		<comments>http://www.mccartney.ie/wordpress/2008/05/ssh-vulnkey/#comments</comments>
		<pubDate>Fri, 23 May 2008 08:46:38 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[*nix]]></category>
		<category><![CDATA[Linux & Laptops]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Random Toad]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=128</guid>
		<description><![CDATA[There&#8217;s a flaw in ssh-vulnkey, it doesn&#8217;t always show you the name of the file with an offending blacklisted key in it. Here&#8217;s a couple of ways round this: For a small machine, inspect the files by hand: strace ssh-vulnkey -a 2&#62;&#38;1 &#124; grep ^stat64&#124; grep -v NOENT&#124; cut -d\&#8221; -f 2&#124; sort &#124; uniq [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a flaw in ssh-vulnkey, it doesn&#8217;t always show you the name of the file with an offending blacklisted key in it.  Here&#8217;s a  couple of ways round this:</p>
<p>For a small machine, inspect the files by hand:</p>
<blockquote><p>strace ssh-vulnkey -a 2&gt;&amp;1 | grep ^stat64| grep -v NOENT| cut -d\&#8221; -f 2| sort | uniq | xargs vi</p></blockquote>
<p>Or, a little longer, using ssh-vulnkey to find all relevant keys &amp; reprocess them displaying the filename &amp; then the result of the ssh-vulnkey for the individual file:</p>
<blockquote><p>strace ssh-vulnkey -a 2&gt;&amp;1 | grep ^stat64| grep -v NOENT| cut -d\&#8221; -f 2| sort | uniq | xargs -i bash -c &#8220;echo ; echo {} ; ssh-vulnkey {};&#8221;</p></blockquote>
<p>This really is a dirty hack, using strace to extract the files ssh-vulnkey and then reprocess them individually, there are a million ways this could be done better, but not on a single bash line <img src='http://www.mccartney.ie/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/05/ssh-vulnkey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Monday comes to Belfast</title>
		<link>http://www.mccartney.ie/wordpress/2008/04/mobile-monday-comes-to-belfast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mobile-monday-comes-to-belfast</link>
		<comments>http://www.mccartney.ie/wordpress/2008/04/mobile-monday-comes-to-belfast/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 15:07:28 +0000</pubDate>
		<dc:creator>simonm</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Random Toad]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.mccartney.ie/wordpress/?p=122</guid>
		<description><![CDATA[I&#8217;m one of the speakers at the first Mobile Monday event in Belfast, I&#8217;m still working on my slides, I have a &#8220;tech&#8221; talk and a &#8220;business&#8221; talk, I may have to toss a coin to make the decision.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m one of the speakers at the first Mobile Monday event in <a href="http://www.mobilemonday.net/news/belfast-joins-mobilemonday-family">Belfast</a>, I&#8217;m still working on my slides, I have a &#8220;tech&#8221; talk and a &#8220;business&#8221; talk, I may have to toss a coin to make the decision.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mccartney.ie/wordpress/2008/04/mobile-monday-comes-to-belfast/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

