<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.3" -->
<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/"
	>

<channel>
	<title>techblog</title>
	<link>http://blog.nominet.org.uk/tech</link>
	<description>random technical thoughts from the Nominet technical team</description>
	<pubDate>Thu, 10 Jul 2008 15:41:20 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>
	<language>en</language>
			<item>
		<title>CRITICAL DNS spoofing vulnerability</title>
		<link>http://blog.nominet.org.uk/tech/2008/07/10/critical-dns-spoofing-vulnerability/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/07/10/critical-dns-spoofing-vulnerability/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 15:41:20 +0000</pubDate>
		<dc:creator>jay</dc:creator>
		
		<category><![CDATA[DNS]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/07/10/critical-dns-spoofing-vulnerability/</guid>
		<description><![CDATA[Hopefully by now many of you will have read of the new and serious vulnerability in DNS servers that allows them to be spoofed easily and bypassing detection systems.  We at Nominet are privy to the details of this vulnerability and can assure you that it is every bit as serious a threat as being [...]]]></description>
			<content:encoded><![CDATA[<p>Hopefully by now many of you will have read of the new and serious vulnerability in DNS servers that allows them to be spoofed easily and bypassing detection systems.  We at Nominet are privy to the details of this vulnerability and can assure you that it is every bit as serious a threat as being portrayed in the various advisories being released by CERTs around the world.</p>
<p>Whilst it is based around a known vulnerability in DNS (the 16 bit ID field) it enables spoofing of a caching resolver with a very small number of packets, far less than might trigger any normal detection system.  It can also be triggered remotely by various techniques, so an attacker does not need query access to your resolver to exploit the vulnerability.</p>
<p>The full details of the vulnerability will be released at BlackHat on August 6th, which gives a four week window for the upgrade of _all_ caching resolvers.   This is something that we strongly urge you to do and a process that we have already begun.  To be clear, this only applies to caching resolvers, not authoritative servers.</p>
<p>The main CERT vulnerability note is <a href="http://www.kb.cert.org/vuls/id/800113">here</a> (with links in it for every product)</p>
<p>If you use BIND then details of the patched versions are <a href="http://www.isc.org/sw/bind/bind-security.php">here</a>.</p>
<p>If you use Microsoft DNS server then details are <a href="http://www.microsoft.com/technet/security/bulletin/ms08-037.mspx">here</a>.</p>
<p>If you wish to use a caching resolver that is built from the ground up for security, and already implements the mitigation technique, then please consider <a href="http://www.unbound.net/">Unbound</a>.  If you use <a href="http://cr.yp.to/djbdns.html">djbdns</a> then that too already implements the interim mitigation technique of source port randomisation.</p>
<p>It should be clear to all those who work with DNS on a daily basis that the only true mechanism to prevent DNS spoofing techniques is DNSSEC and we all need to begin taking that seriously.</p>
<p>So please use this short window to upgrade your caching resolvers and iron out any issues that might arise before exploits of this vulberability are seen in the wild</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/07/10/critical-dns-spoofing-vulnerability/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Working with Iris Explorer</title>
		<link>http://blog.nominet.org.uk/tech/2008/07/09/working-with-iris-explorer/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/07/09/working-with-iris-explorer/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 14:20:05 +0000</pubDate>
		<dc:creator>oliver</dc:creator>
		
		<category><![CDATA[Applications]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/07/09/working-with-iris-explorer/</guid>
		<description><![CDATA[Over the past few months I have been working with Iris Explorer to develop visualisation applications. Iris Explorer uses a module based approach to application development, where tasks are split into individual modules which can be then wired together. The modules represent processes on the data and the wires between them represent the flow of [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few months I have been working with Iris Explorer to develop visualisation applications. Iris Explorer uses a module based approach to application development, where tasks are split into individual modules which can be then wired together. The modules represent processes on the data and the wires between them represent the flow of the data between the modules. A simple drag and drop interface is provided for adding and linking the components of an application, or map, together.</p>
<p>Iris Explorer is distributed with a set of standard modules for accomplishing a wide variety of standard tasks such as, reading data, writing images, and standard visualisation techniques, such as plotting histograms. An example of an Iris Explorer map is shown below:</p>
<p><img height="319" width="439" src="http://blog.nominet.org.uk/tech/wp-content/uploads/2008/07/irismap.png" /></p>
<p>I have been working on creating a 3D graph to represent the volume of queries to our WHOIS system for each hour of a given date, or range of dates. This could largely be accomplished using the standard module set avaialble with Iris Explorer, however there were no modules for the labelling of the axes of graphs which were particularly suited to the task, which meant I had to write my own custom module.</p>
<p>Iris Explorer provides the ability to write your own modules, so it is entirely possible to add custom processes and functionality to an application. The method for developing these custom modules is a two step process, first of all the the layout of the module is defined using the Iris Module Builder, secondly a user function, written in C/C++, is added.</p>
<p>The Module Builder provides a GUI to creating the module window, its data input and output ports and specifying the flow of data through the module internally. This is a logical process where you simply specify the type of input data which is accepted as well as the format of the output data. The appearance of the module itself and the user interface of the module are also specified using a drag and drop WYSIWYG style editor.</p>
<p>The second stage, the user function, controls the processing of the data. So in the case of the Graph Labelling module I have written this would extract the number of dimensions in the data set and number bars of the graph accordingly, as well as creating and positioning axis text labels.</p>
<p>The Iris Explorer Map produced collects data for a given date range, and split this into hourly segments to give a clear picture of the volume of queries to our systems at any given hour of the day. An example of the results of this are shown below:</p>
<p><a title="WHOIS Graph Example" href="http://blog.nominet.org.uk/tech/wp-content/uploads/2008/07/graph.png"><img alt="WHOIS Graph Example" height="319" width="439" src="http://blog.nominet.org.uk/tech/wp-content/uploads/2008/07/graph.png" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/07/09/working-with-iris-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Name Server Control Protocol</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/27/name-server-control-protocol/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/27/name-server-control-protocol/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 14:16:12 +0000</pubDate>
		<dc:creator>stephen</dc:creator>
		
		<category><![CDATA[DNS]]></category>

		<category><![CDATA[Ideas]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/27/name-server-control-protocol/</guid>
		<description><![CDATA[Background
In many ways, name servers are standardised: the format of queries and responses are defined by standards, as are the ways of transferring zone information into and out of them (zone files, dynamic updates, AXFR, IXFR).  This is not the case of the commands and files used to configure and control them, which are [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Background</strong><br />
In many ways, name servers are standardised: the format of queries and responses are defined by standards, as are the ways of transferring zone information into and out of them (zone files, dynamic updates, AXFR, IXFR).  This is not the case of the commands and files used to configure and control them, which are specific to each type of server.</p>
<p>Having a common means of interacting with servers would stimulate the development of a common management client, so simplifying operations.  Although particularly benefiting users of multiple name servers, good management software should make it easier for occasional users to securely configure and manage their systems.</p>
<p>We have been investigating the idea of a common management interface, as have the <a href="http://www.ietf.org">IETF</a>, who set up the DCOMA (DNS Configuration Management) committee to consider the problem.  We have contributed to the DCOMA discussions, the result of which has been the publication of an <a href="http://www3.tools.ietf.org/html/draft-hardaker-dnsops-name-server-management-reqs">Internet Draft</a> containing the requirements for the system.</p>
<p><strong>Implementation</strong><br />
Our approach has to define a protocol (NSCP - Name Server Control Protocol) layered on top of <a href="http://www.ietf.org/rfc/rfc4741.txt">NETCONF</a>, an XML-based protocol for the configuration and control of network devices.  In NETCONF, a data model is defined for a network device, with configuration commands being framed in terms of it.  NSCP defines a generic object model for a name server, and extends the NETCONF command set with name server-specific ones.</p>
<p>Although the long-term aim is to get NSCP understood by name server implementations, a more pragmatic approach is to put the control into server-specific wrappers, so avoiding the need for changes to the server software.  The wrapper accepts NSCP commands and, on the basis of them, modifies the configuration file (and zone files), and causes the server to reload the data.  The way this operates is shown in the figure below:</p>
<p><a href='http://blog.nominet.org.uk/tech/wp-content/uploads/2008/06/nscp-blog-article.png' title='NSCP Message Processing'><img src='http://blog.nominet.org.uk/tech/wp-content/uploads/2008/06/nscp-blog-article.png' alt='NSCP Message Processing' /></a></p>
<p>The first step is to create an XML version of the server configuration file.  Name server configuration files tend to map into XML quite well as they usually have a hierarchical structure.  In our tests, this was accomplished for BIND and NSD by modifying the parser module to emit XML as the configuration file was processed.  Although this required a modification to the server software, the modification is a small, localised, change and does not otherwise affect its operation.</p>
<p>Next, an XSL transformation is used to convert the server-specific XML into NSCP, a process that involves mapping server-specific objects and attributes into NSCP objects and attributes.  A two-step approach is used to keep changes to the name server software to a minimum: the parser module only needs to create XML that is isomorphic to the configuration file, something that is relatively simple to do.  The intelligence needed to convert the representation into an NSCP is held in an (external) XSLT.</p>
<p>Once the NSCP representation of the configuration file is obtained, it can be manipulated with NETCONF commands. &#8220;Listing&#8221; commands (such as &#8220;get-config&#8221;) extract the relevant part of the configuration from the representation and send it back to the client.  &#8220;Modification&#8221; commands (e.g. &#8220;edit-config&#8221;) are applied to the NSCP representation of the configuration file (again using an XSLT) to obtain NSCP describing the updated configuration: this is converted back into the configuration file format. As before, the conversion is a two-stage process to separate out the logic of the object model mapping from the mechanical process of creating the configuration file.</p>
<p>Once the configuration file has been updated, the wrapper forces the server to reload it to apply the changes.</p>
<p><strong>Current Work</strong><br />
A small proof of concept project has shown that this approach is both feasible and practical.  Effort is now being put into a pilot implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/27/name-server-control-protocol/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Avocent Mergepoint - creating a new SSL Certificate and allowing SSH public key logins</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/25/avocent-mergepoint-creating-a-new-ssl-certificate-and-allowing-ssh-public-key-logins/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/25/avocent-mergepoint-creating-a-new-ssl-certificate-and-allowing-ssh-public-key-logins/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 13:50:14 +0000</pubDate>
		<dc:creator>andyh</dc:creator>
		
		<category><![CDATA[Accessibility and Usability]]></category>

		<category><![CDATA[Unix]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/25/avocent-mergepoint-creating-a-new-ssl-certificate-and-allowing-ssh-public-key-logins/</guid>
		<description><![CDATA[We have just purchased a 40 port Avocent Mergepoint device for remote server console access management.  This saves us using up valuable switch ports and separates these devices from the main network which results in a much more secure console access lan.  This device can be managed through Avocent&#8217;s DSView3 software, but we [...]]]></description>
			<content:encoded><![CDATA[<p>We have just purchased a 40 port <a href="http://avocent.co.uk/web/uk.nsf/Content/MergePoint5224_European">Avocent Mergepoint</a> device for remote server console access management.  This saves us using up valuable switch ports and separates these devices from the main network which results in a much more secure console access lan.  This device can be managed through Avocent&#8217;s <a href="http://www.avocent.com/web/en.nsf/Content/DSView3Software">DSView3 software</a>, but we are currently running it as a standalone device for testing.  The DSView software will also manage their <a href="http://www.avocent.com/Products/Default.aspx?id=6846">ACS console servers,</a> presenting us with a single solution for console access whether they use a network or serial method of console access.</p>
<p>It is basically a switch that can run DHCP on its ports, and (Linux flash based) software to access and configure everything.  It all sounded great so we deployed it out into the field for further testing at a site that was running out of switch ports.  At under £3k it is probably cheaper than an enterprise level switch to manage these devices.  Using it we connected up 21 remote servers and freed up 20 valuable switch ports.  It has dual power, redundant network connections and a serial port for when all that fails.</p>
<p>All well and good so far.  Next thing was to configure the web interface and create a new SSL certificate signed by our Nominet CA.  This is where it all started to go wrong. The manual linked to on the Avocent website is wrong in so many ways.  Firstly the web interface is completely different.  Our Mergepoint came with firmware version 4, but the manuals (linked to from the <a href="http://avocent.co.uk/web/uk.nsf/Content/MergePoint5224_European">product page</a>) seem to be a previous version.  I can cope with a different GUI, but the instructions for creating the certificate used the command line - and were wrong.  They said to use</p>
<pre>openssl req -new -nodes -keyout private.key -out public.csr</pre>
<p>but of course you also need a config file, so the command should be </p>
<pre>openssl req -new -nodes -keyout private.key -out public.csr -config /path/to/openssl.conf</pre>
<p>with openssl.conf containing (for example) this:</p>
<pre>[ req ]
default_bits            = 1024
default_keyfile         = privkey.pem
distinguished_name     = req_distinguished_name

[ req_distinguished_name ]
countryName                     = Country Name (2 letter code)
countryName_default             = GB

stateOrProvinceName             = State or Province Name (full name)
stateOrProvinceName_default     = Oxfordshire

localityName                    = Oxford
localityName_default            = Oxford

0.organizationName              = Organization Name (eg, company)
0.organizationName_default      = Nominet

organizationalUnitName          = Organizational Unit Name (eg, section)
organizationalUnitName_default  = Tech

emailAddress                    = Email Address
emailAddress_default            = example@nominet.org.uk

commonName                      = Common Name (eg, YOUR name)
commonName_default              = MergePointDeviceName</pre>
<p>After that you can use the <a href="http://en.wikipedia.org/wiki/Certificate_signing_request">CSR</a> to created a new SSL certificate.  The manual says the certificate should go into /etc/httpd/conf/ssl.key (it actually says use the command &#8220;cat cert.cert-/etc/httpd/conf/ssl.crt/server.crt&#8221; to do this.  Does anyone every proof read manuals these days?).  This is wrong and the private key and certificate should actually go into /etc/httpd as server.crt and server.key.</p>
<p>Next you should restart apache.  Again the manual is wrong and says to use &#8220;daemon.sh restart APACHE&#8221;.  Wrong - that&#8217;s the command that you would have used on an ACS console server.  The Mergepoint is much more like standard unix here and a simple </p>
<pre>/etc/init.d/apache2 restart</pre>
<p>or</p>
<pre>apachectl restart</pre>
<p>is all that is required.  All well and good and your new certificate is now in place and working.  However, this is a flash based linux so you&#8217;ll need to ensure that these new files get saved to flash or they will be lost at the next reboot.  There&#8217;s the handy manual that tells you to use the saveconf command (correct for once), but it is incorrect in telling you that all files listed in /etc/config_files get backed up.  There is no /etc/config_files file (there is one on an ACS console server which is obviously what the manual was based on).  The actual file to edit is backup_list.txt.  Add these lines to the end:</p>
<pre>/etc/openssl.conf
/etc/httpd</pre>
<p>Finally if you want to add users to this device and allow ssh access via public key then add /home to the /backup_list.txt file.  The users must be added through the web interface as this also updates a database allowing access to the web interface.  Then add the users keys, update backup_list.txt and run saveconf.  Optionally edit /etc/ssh/sshd_config - we remove root access and password access as we use non-root key based logins only.</p>
<p>I have voiced my concerns about the poor quality manuals to Avocent so that no-one else has to try and reverse engineer things.  They originally said that creating a new CSR was impossible, but have since provided a draft of how to do it which was still missing some of the points above (specifically about getting the files saved to flash).  A new firmware version is due out in July and hopefully the manuals will be better this time.  They still maintain that public key ssh access is impossible without using the DSView software.</p>
<p>It seems I have done something I have been trying to do for years and achieved the impossible.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/25/avocent-mergepoint-creating-a-new-ssl-certificate-and-allowing-ssh-public-key-logins/feed/</wfw:commentRss>
		</item>
		<item>
		<title>VoIP and Emergency Calls - Where is the Caller?</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/24/voip-and-emergency-calls-where-is-the-caller/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/24/voip-and-emergency-calls-where-is-the-caller/#comments</comments>
		<pubDate>Tue, 24 Jun 2008 08:57:59 +0000</pubDate>
		<dc:creator>ray</dc:creator>
		
		<category><![CDATA[VoIP and ENUM]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/24/voip-and-emergency-calls-where-is-the-caller/</guid>
		<description><![CDATA[Background
OFCOM (the UK telecommunications regulator) recently mandated that any VoIP Service Provider that allows end users to make calls to the PSTN must also provide access to the Emergency Services number.
They also mandated that &#8220;to the extent technically feasible&#8221; the Emergency Handling Agencies (EHAs) must be supplied with the location of the caller.   [...]]]></description>
			<content:encoded><![CDATA[<h3>Background</h3>
<p>OFCOM (the UK telecommunications regulator) recently mandated that any VoIP Service Provider that allows end users to make calls to the PSTN must also provide access to the Emergency Services number.</p>
<p>They also mandated that &#8220;to the extent technically feasible&#8221; the Emergency Handling Agencies (EHAs) must be supplied with the location of the caller.    This speeds up the emergency response, and also helps in those cases where the caller is unable to provide their location.</p>
<p>This is already done by the existing PSTN and mobile telephone companies and is not a particularly difficult problem for them as they control all elements of the telephony service. However for VoIP the problem is substantially more difficult - VoIP users can connect to their VoIP service provider over any internet connection, from anywhere in the world.</p>
<p>In some parts of the world the customer is required to notify their VoIP service provider of their location.  This isn&#8217;t feasible however for users who regularly use their VoIP service away from home, e.g. with a WiFi VoIP handset.  Also, if this information is out of date then the consequences can be tragic as <a href="http://www.theregister.co.uk/2008/05/06/crtc_investigates_failed_911_call/">seen recently</a>  in Canada where the initial ambulance dispatch went to the customer&#8217;s previous address, 2500 miles away from where it was needed.</p>
<h3>Proposed Solution</h3>
<p>The proposed architecture currently being developed by NICC (the UK telecoms industry standards group) is to have the VoIP Providers, the Internet Service Providers, and the Access Network Providers all cooperate to provide location information in real-time.</p>
<p>The VoIP provider will know <em>what</em> the end user&#8217;s public IP address is, but they don&#8217;t know <em>where</em> it is.  When they receive an emergency call they&#8217;ll pass the call over the PSTN to the EHA, but at the same time they&#8217;ll also send a separate message (using TCP/IP) containing that end user IP address.</p>
<p>The EHA will maintain a database derived from BGP4 real-time routeing data that maps from IP addresses to ISPs.  Once they know the ISP, they&#8217;ll send the ISP&#8217;s &#8220;Location Information Service&#8221; a HELD protocol request containing the IP address as the lookup key (see IETF Draft <a href="http://tools.ietf.org/html/draft-ietf-geopriv-http-location-delivery">geopriv-http-location-delivery</a>).  The response from the ISP is an XML document in PIDF-LO format (see <a href="http://tools.ietf.org/html/rfc4119">RFC4119</a> and <a href="http://tools.ietf.org/html/rfc5139">RFC5139</a>) which contains either a &#8220;civic address&#8221; or a &#8220;geodetic location&#8221; (i.e. latitude/longitude).</p>
<p>A further complication is that many types of internet access run over a separate Access Network Service which is independent of the ISP.  Most ADSL in the UK, for example, is provided using BT Wholesale&#8217;s &#8220;IPStream&#8221; access product which is then packaged up by hundreds of different ISPs.</p>
<p>In these networks it&#8217;s common for individual users not to be tied to a specific access line.  Hence the Access Network needs to tell the ISP exactly which line is being used.  In some cases that might be sufficient for the ISP to determine the address, but in many cases it&#8217;s expected that the ISP LIS will need to proxy the HELD request onwards to the Access Network where they should have the most accurate and up-to-date address information.</p>
<p>The diagram below is a simplified representation of how it&#8217;s expected to work.</p>
<p><img src="http://blog.nominet.org.uk/tech/wp-content/uploads/2008/06/architecture.png" alt="architecture.png" border="0" /></p>
<h3>Policy Issues</h3>
<p>In my opinion the biggest problem with the architecture at the moment is that neither the ISPs nor the Access Networks actually operate Location Information Services.  Partly this is because the relevant standards are still in development, but particularly because as yet there&#8217;s no regulation requiring them to do so.</p>
<p>All of the OFCOM regulatory changes so far have been focussed on the VoIP providers, without sufficient acknowledgment of the fact that it&#8217;s only the ISPs and the Access Networks that really know where any particular IP connection is being made from.  However Ofcom are committed to revisit the regulations for the location issue very early next year, once technical standards (national and international) are clarified.</p>
<p>In my opinion most ISPs are at the moment completely unaware that they might need to do anything, and I hope that this article will stimulate further involvement from the ISP industry.  I believe that regulation requiring ISPs and Access Networks to operate Location Information Services is inevitable and it would be better to work now towards a practical solution than to be stuck with an unworkable one later.</p>
<p>It should be noted that the implementation costs for this will be significant, and ISPs looking to recover their costs might start looking at how they could sell-on their customers&#8217; location information to third parties.  The potential market for location-based advertising is enormous, but so too are the privacy implications.</p>
<p><em>Ray Bellis - Senior Researcher</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/24/voip-and-emergency-calls-where-is-the-caller/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Parallels slowing OS X to a crawl on startup - problem solved</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/23/parallels-slowing-os-x-to-a-crawl-on-startup-problem-solved/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/23/parallels-slowing-os-x-to-a-crawl-on-startup-problem-solved/#comments</comments>
		<pubDate>Mon, 23 Jun 2008 10:24:57 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/23/parallels-slowing-os-x-to-a-crawl-on-startup-problem-solved/</guid>
		<description><![CDATA[I use a MacBook Pro at work, but of course there are always one or two Windows applications that I need to run too.  Consequently, I recently installed Parallels to allow me to run these both in the office and at home.  I knew that others were using this method to run these apps, so [...]]]></description>
			<content:encoded><![CDATA[<p>I use a MacBook Pro at work, but of course there are always one or two Windows applications that I need to run too.  Consequently, I recently installed <a href="http://www.parallels.com">Parallels</a> to allow me to run these both in the office and at home.  I knew that others were using this method to run these apps, so I wasn&#8217;t too worried about getting it to work.</p>
<p>When I fired up Parallels for the first time though, the CPU usage shot right up and the whole OS X interface became incredibly sluggish for several minutes.  The strange thing was that this was just starting Parallels itself, not booting the virtual machine.  Once the application was started, sanity was restored.  The offending process was &#8220;WindowServer&#8221;, so it seemed to have something to do with the graphics processing.  There were reports of other folks having <a href="http://forum.parallels.com/showthread.php?t=19588">similar problems on the Parallels forum</a>, but none of the solutions seemed to be definitive.</p>
<p>Then I tried starting Parallels while I was away from my desk.  It came straight up with no problem at all.  What was different?  It turned out to be a <a href="http://www.goodway.com.tw/en/product3.asp?listid=3&amp;id=4&amp;subid=10&amp;pid=625&amp;typeid=96">Good Way USB Display Adapter</a> I am using to allow me to run 2 external monitors from my laptop.  Once this was disconnected the problem went away. So now if I&#8217;m at my desk, I unplug the USB cable, start Parallels, then reconnect.  I don&#8217;t understand what is going on here, but at least I have a workaround.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/23/parallels-slowing-os-x-to-a-crawl-on-startup-problem-solved/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Decision Making</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/20/decision-making/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/20/decision-making/#comments</comments>
		<pubDate>Fri, 20 Jun 2008 13:24:23 +0000</pubDate>
		<dc:creator>ian</dc:creator>
		
		<category><![CDATA[Web]]></category>

		<category><![CDATA[Applications]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/20/decision-making/</guid>
		<description><![CDATA[Need a quick way to decide who does something:
http://www.youdrawstraws.com/index.cfm
There are two modes:

An instant on-screen version, useful if everyone is in the same room.
A group session for use when working remotely. These sessions are time-limited.

We used the on-screen version to decide who would go to a remote site to install servers next week. It saved me [...]]]></description>
			<content:encoded><![CDATA[<p>Need a quick way to decide who does something:</p>
<p>http://www.youdrawstraws.com/index.cfm</p>
<p>There are two modes:</p>
<ol>
<li>An instant on-screen version, useful if everyone is in the same room.</li>
<li>A group session for use when working remotely. These sessions are time-limited.</li>
</ol>
<p>We used the on-screen version to decide who would go to a remote site to install servers next week. It saved me the job of picking on someone! All it required was to give the session a name, enter how many people there are to choose from, name them, then let the application choose at random.</p>
<p>The group session is a bit more involved. Those involved in the draw can add categories, and options within categories. Once everyone has given input, or the deadline for choosing has been reached, the options are selected at random.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/20/decision-making/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SJPhone settings for SIP</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/11/sjphone-settings-for-sip/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/11/sjphone-settings-for-sip/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 16:51:53 +0000</pubDate>
		<dc:creator>ray</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/11/sjphone-settings-for-sip/</guid>
		<description><![CDATA[SJphone is a popular free VoIP client (or &#8220;softphone&#8221;), available for Windows, Linux, and MacOSX.
Most softphones have separate settings for the username and password used to authenticate the SIP REGISTER command, and another to set the SIP Address of Record.  SJphone, by default, does not.  It has the username and password fields, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sjlabs.com/sjp.html">SJphone</a> is a popular free VoIP client (or &#8220;softphone&#8221;), available for Windows, Linux, and MacOSX.</p>
<p>Most softphones have separate settings for the username and password used to authenticate the SIP REGISTER command, and another to set the SIP Address of Record.  SJphone, by default, does not.  It has the username and password fields, but it generates a default SIP AoR of <em>username</em>@<em>domain</em>.</p>
<p>There didn&#8217;t appear to be any way to support our configuration where the Authentication username is different to the left-hand side of the SIP AoR.  After much digging a solution was finally found.  In the &#8220;Profiles&#8221; dialog box there is an &#8220;Initialization&#8221; tab.  On this tab there is a &#8220;Caller ID&#8221; setting and a tick box marked &#8220;Inquired&#8221;:</p>
<p><img src="http://blog.nominet.org.uk/tech/wp-content/uploads/2008/06/picture-2.png" alt="picture-2.png" /></p>
<p>Ticking this box tells SJphone to prompt for the left-hand side of the SIP AoR along with the username and password fields.  The other two tick boxes control whether the application remembers the supplied value, or prompts for it each time.</p>
<p>If necessary you can tick the &#8220;Full Address of Record&#8221; box instead, should you need to supply a SIP AoR with a different right-hand side.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/11/sjphone-settings-for-sip/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vim on the Mac</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/11/vim-on-the-mac/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/11/vim-on-the-mac/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 10:38:18 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[OSX]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/11/vim-on-the-mac/</guid>
		<description><![CDATA[I&#8217;ve been a vim user for many years.  More recently I have been mainly working on a Mac, but the version of vim for OS X was never very good.  It felt like a Linux application that had been ported to the Mac.  It didn&#8217;t support multiple windows, the standard Mac shortcut keys didn&#8217;t all [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been a <a href="http://www.vim.org/">vim</a> user for many years.  More recently I have been mainly working on a Mac, but the version of vim for OS X was never very good.  It felt like a Linux application that had been ported to the Mac.  It didn&#8217;t support multiple windows, the standard Mac shortcut keys didn&#8217;t all work as expected and it just didn&#8217;t feel like it fitted in very well.  I was almost tempted to move to <a href="http://macromates.com/">TextMate</a>, but I missed all the regular expression commands I had grown used to.  Recently I have moved over to use Bjorn Winckler&#8217;s <a href="http://code.google.com/p/macvim/">MacVim</a>.  It is a proper Cocoa application which supports multiple windows etc and just looks and feels more Mac-like.  It even automatically updates when there is a new version.  It has got to the point where it is better than the old Carbon version in under a year.  I recommend you give it a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/11/vim-on-the-mac/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Spotting &#8216;invisible&#8217; null pointer dereferences with Coverity Prevent</title>
		<link>http://blog.nominet.org.uk/tech/2008/06/10/spotting-invisible-null-pointer-deferences-with-coverity-prevent/</link>
		<comments>http://blog.nominet.org.uk/tech/2008/06/10/spotting-invisible-null-pointer-deferences-with-coverity-prevent/#comments</comments>
		<pubDate>Tue, 10 Jun 2008 16:25:22 +0000</pubDate>
		<dc:creator>chris</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.nominet.org.uk/tech/2008/06/10/spotting-invisible-null-pointer-deferences-with-coverity-prevent/</guid>
		<description><![CDATA[As mentioned by Miquel in a previous article, we are using Coverity Prevent to look for possible defects in our code.  Today I realised that it had spotted a possible problem that is almost invisible to the naked eye.  Initially it flagged up some code that looked like this:

if (someObject.getErrorType() == SomeClass.MY_ERROR_TYPE) {
.....
}
The complaint was [...]]]></description>
			<content:encoded><![CDATA[<p>As mentioned by Miquel in <a href="http://blog.nominet.org.uk/tech/2008/06/03/seeking-defects-in-your-code-with-coverity-prevent/">a previous article</a>, we are using <a href="http://www.coverity.com/html/prod_map_dna_java.html">Coverity Prevent</a> to look for possible defects in our code.  Today I realised that it had spotted a possible problem that is almost invisible to the naked eye.  Initially it flagged up some code that looked like this:</p>
<pre>
if (someObject.getErrorType() == SomeClass.MY_ERROR_TYPE) {
.....
}</pre>
<p>The complaint was that <code>getErrorType() </code> could return a null value, so this comparison would throw an exception when the null pointer was dereferenced.  That&#8217;s an easy one to fix I thought.  I changed the code to look like this instead:</p>
<pre>
if (SomeClass.MY_ERROR_TYPE == someObject.getErrorType()) {
.....
}</pre>
<p>But Coverity continued to complain about this line.  It still complained that <code>getErrorType()</code> could return a null value and claimed that it was also being dereferenced.  Both Miquel and I looked at this and decided that the tool was mistaken.  But then today I suddenly realised what was going on.  The left hand side of the comparison is a plain old <code>int</code> whereas the right hand side is an <code>Integer</code>.  So there is an invisible call to <code>intValue()</code> happening to do the unboxing.  Coverity picks this up, but if you just glance at the code you can&#8217;t see it.  I guess this is the price you pay for auto-boxing - there is code being called that you can&#8217;t see&#8230;</p>
<p><strong>UPDATE:</strong> For some reason I thought the <code>==</code> operator called a method on the left hand operand.  It doesn&#8217;t, it merely compares the object references.  So swapping the order of the operands would make no difference.  I think I was fooled by being told that the left hand side was null and being dereferenced.  That&#8217;s the problem you&#8217;d get with <code>a.equals(b)</code> where <code>a</code> could be null.  In this case swapping the objects around <em>would</em> make all the difference.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nominet.org.uk/tech/2008/06/10/spotting-invisible-null-pointer-deferences-with-coverity-prevent/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
