<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-7217962</id><updated>2010-03-19T18:38:11.479Z</updated><title type='text'>Tin Can Camera</title><subtitle type='html'>Somewhere on the vast net, just merging along with the entire domain...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default?start-index=26&amp;max-results=25'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>147</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7217962.post-6509392286675156957</id><published>2010-03-19T18:20:00.003Z</published><updated>2010-03-19T18:38:11.489Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='n-gauge'/><title type='text'>Some N-gauge templates</title><summary type='text'>My parents moved house recently, and I have the model railway which was sitting in their loft for a couple of decades back. I'm building a new layout, so made some paper templates for planning the track. They'll appear here in due course.So far, the options for printing them are a bit limited - they have a 200x256mm area to suit my printer and use millimetres as SVG dimensions. Google Chrome </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/6509392286675156957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=6509392286675156957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6509392286675156957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6509392286675156957'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2010/03/some-n-gauge-templates.html' title='Some N-gauge templates'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-1953838674627263712</id><published>2010-03-19T18:17:00.003Z</published><updated>2010-03-19T18:20:51.680Z</updated><title type='text'>Service Announcement</title><summary type='text'>This blog has been hosted on Blogger and uses FTP to publish static files to www.tincancamera.com/blog . Blogger are stopping support for FTP, so you will need to point your browsers to http://blog.tincancamera.com and readers to this feed  instead.</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/1953838674627263712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=1953838674627263712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1953838674627263712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1953838674627263712'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2010/03/service-announcement.html' title='Service Announcement'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-7956842126511945372</id><published>2010-03-19T13:29:00.006Z</published><updated>2010-03-19T13:56:25.081Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='rant'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='squeezecentre'/><title type='text'>Squeezebox (more things I'll forget)</title><summary type='text'>I've had a squeezebox for about 14 months, about half of which time it hasn't worked. This was due to a combination of excito 'Bubba' (a small ARM based file server) not supporting upgrading their Debian installation without losing such things as power management, and squeezecentre being appalling bad at supporting old versions. I needed to upgrade the OS to use my backup drive - connecting a </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/7956842126511945372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=7956842126511945372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7956842126511945372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7956842126511945372'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2010/03/squeezebox-more-things-ill-forget.html' title='Squeezebox (more things I&apos;ll forget)'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-9185893749146558062</id><published>2009-11-21T17:54:00.003Z</published><updated>2009-11-21T17:59:02.801Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='distributed'/><title type='text'>Trees, Forests, Vines.</title><summary type='text'>My current clients are using Model Driven Development for a new product line. Obviously I'm not able to say what the product line is, but that doesn't matter for the work I have to do, which to do with issues they are having working with model consistency between distributed teams on three sites. It actually is quite close in spirit to a project on hypertext repositories for multi-view </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/9185893749146558062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=9185893749146558062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/9185893749146558062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/9185893749146558062'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/11/trees-forests-vines.html' title='Trees, Forests, Vines.'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-4086205599722604817</id><published>2009-11-06T11:16:00.010Z</published><updated>2009-11-06T13:45:20.310Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='systems-engineering'/><title type='text'>Where does the energy for a solar-powered mole scarer come from?</title><summary type='text'>This question was given as an example of a poor science question on the today programme today, as the presenters declared that the answer is obvious to anyone with basic literacy and has nothing to do with science or mathematics."For every problem there is a solution which is simple, obvious, and wrong."— Albert EinsteinTaking this as an example of a solar-powered mole scarer, it consists of a </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/4086205599722604817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=4086205599722604817' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4086205599722604817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4086205599722604817'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/11/where-does-energy-for-solar-powered.html' title='Where does the energy for a solar-powered mole scarer come from?'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-8174331800284026320</id><published>2009-10-09T16:00:00.010+01:00</published><updated>2009-10-09T17:37:44.746+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><category scheme='http://www.blogger.com/atom/ns#' term='software-engineering'/><title type='text'>Re: Why is UML so hard?</title><summary type='text'>In response to Why is UML so hard?In the late '90s I was working as a research associate at the University of York looking at CASE  ( computer aided systems engineering ) tools and notations when UML started to happen to the industry as a merger of some OO notations developed in industry from experience in the '70s and '80s.  The academic world had already learnt from the cognitive science and </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/8174331800284026320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=8174331800284026320' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8174331800284026320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8174331800284026320'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/10/re-why-is-uml-so-hard.html' title='Re: Why is UML so hard?'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-7384091334699591751</id><published>2009-10-05T14:32:00.005+01:00</published><updated>2009-10-05T15:44:02.360+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><title type='text'>Random Lists</title><summary type='text'>As kin has support for pattern matching and sequences at its heart, it's natural to formulate a random number generator as a generator of a sequence of random numbers.For example, this is the same linear congruent shift register as used in java.util.Random:     type lcsr ( seed : uint64 ) : seq [ uint32 ]        def head : uint32 =&gt; uint32 ( self.seed &gt;&gt; 16 )        def tail : lcsr =&gt; lcsr ( ( </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/7384091334699591751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=7384091334699591751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7384091334699591751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7384091334699591751'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/10/random-lists.html' title='Random Lists'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-7286111205493776621</id><published>2009-07-07T09:04:00.003+01:00</published><updated>2009-07-07T09:08:24.316+01:00</updated><title type='text'>They have been had over?</title><summary type='text'>I've been using Chrome on my netbook, which doesn't have Flash. Not everyone's sites seem to notice.</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/7286111205493776621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=7286111205493776621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7286111205493776621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7286111205493776621'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/07/they-have-been-had-over.html' title='They have been had over?'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-4109700973222073280</id><published>2009-07-03T09:11:00.003+01:00</published><updated>2009-07-03T09:26:12.516+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software-engineering'/><title type='text'>Engineers' Stigmergy</title><summary type='text'>Getting some work done on my car, I noticed that the last garage to service it had left a little label on the door pillar with the mileage and type of oil put in last time.I've done a fair bit of maintenance and porting of long-term applications, the oldest ( aerostructure stress routines at BAE ) were several decades old. In the better code, there are a succession of comments explaining just </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/4109700973222073280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=4109700973222073280' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4109700973222073280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4109700973222073280'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/07/engineers-stigmergy.html' title='Engineers&apos; Stigmergy'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-1216667894502795469</id><published>2009-06-19T13:19:00.003+01:00</published><updated>2009-06-19T14:29:41.207+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='pi-calculus'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><category scheme='http://www.blogger.com/atom/ns#' term='concurrency'/><title type='text'>Language-level Immutablity and Shared Memory Concurrency</title><summary type='text'>I've been a fan of Bartosz Milewski’s Programming Café ( or possibly Bartosz Milewski’s Programming Caff; I'm not sure if lack of an accent implies greasy chips and tea outside of the UK ). He's exploring the options of applying the leverage of type checking to concurrency problems within shared-memory systems. In a different camp, there's the Erlang crowd, typified by Steve Vinoski which says </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/1216667894502795469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=1216667894502795469' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1216667894502795469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1216667894502795469'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/06/language-level-immutablity-and-shared.html' title='Language-level Immutablity and Shared Memory Concurrency'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-7094482206448475254</id><published>2009-05-23T22:15:00.003+01:00</published><updated>2009-05-23T22:38:00.484+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='graphics'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><title type='text'>Messing about with X windows</title><summary type='text'>I've spent the last week or so adding bindings to kin for X11 and anti-grain geometry.X11 gives basic windowing capability, but no widgets ( you run GTK or some other toolkit on top ), AGG gives high-quality software graphics rendering.This is a window which attempts to draw some buttons:The window has a transparent background. I've lost track of the number of hacks I've had to do to get </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/7094482206448475254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=7094482206448475254' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7094482206448475254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/7094482206448475254'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/05/messing-about-with-x-windows.html' title='Messing about with X windows'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-8752269535948915805</id><published>2009-04-16T16:08:00.004+01:00</published><updated>2009-04-16T16:25:17.012+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code-challenge'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><title type='text'>Comma Quibbling</title><summary type='text'>An example in kin. This misses the difficulty of the C# problem - as sequences in kin are linear, rather than being the mutating iterator/enumerator pattern used in Java/C#, you can pattern match several elements at once trivially (being able to pattern match sequences and backtrack on failure is one of the main reasons for writing kin in the first place).module examples::eric_lippert_20090415</summary><link rel='related' href='http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx' title='Comma Quibbling'/><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/8752269535948915805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=8752269535948915805' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8752269535948915805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8752269535948915805'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/04/comma-quibbling.html' title='Comma Quibbling'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-1456475851883992621</id><published>2009-04-09T17:48:00.003+01:00</published><updated>2009-04-09T23:19:08.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='distributed'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><title type='text'>A new way to look at networking.</title><summary type='text'>I find this video incredibly interesting. It's talking about the phase transition that occurred between telecoms networks and packet switched networks, and questioning whether the same can happen between packets and data.In a routed telecom network, your number 1234 meant move first switch 1, second switch 2 and so on - it described a path between two endpoints. In TCP your packet has an address,</summary><link rel='related' href='http://video.google.com/videoplay?docid=-6972678839686672840' title='A new way to look at networking.'/><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/1456475851883992621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=1456475851883992621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1456475851883992621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1456475851883992621'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/04/new-way-to-look-at-networking.html' title='A new way to look at networking.'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-8674894277519113534</id><published>2009-04-01T16:37:00.002+01:00</published><updated>2009-04-01T16:41:55.411+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='uml'/><title type='text'>On UML</title><summary type='text'>Over the last few weeks I've been working on kin, and hanging around stackoverflow. For one question on usefulness of UML, I ended writing a rather long answer, so as I haven't blogged in a bit I thought I'd post it here too.There's a difference between modelling and models.Initially in the design process, the value in producing a model is that you have to to get to a concrete enough </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/8674894277519113534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=8674894277519113534' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8674894277519113534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8674894277519113534'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/04/on-uml.html' title='On UML'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-5729682557243916785</id><published>2009-03-14T17:33:00.002Z</published><updated>2009-04-16T16:26:08.291+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c99'/><title type='text'>Things I didn't know in C</title><summary type='text'>I've been creating an interpreter in C99 for the last six weeks. This is the largest project I've done in C, as normally I get paid for writing C++. I've also read the C99 spec, as I was taught C in '91, and things change.Here are a couple of things I've discovered which I didn't know before:You can use field names in struct initialisers, such as( foo_t ) { .bar = 3, .baz = 8 }which give you an </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/5729682557243916785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=5729682557243916785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/5729682557243916785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/5729682557243916785'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/03/things-i-didnt-know-in-c.html' title='Things I didn&apos;t know in C'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-6548216788688058844</id><published>2009-02-06T13:05:00.003Z</published><updated>2009-02-06T13:10:08.353Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Aparrently the thermometer isn't broken.</title><summary type='text'>I looked at the thermometer in the hall and it read 14°C.It occurred to me that every time I could remember in the last three years, that thermometer has read 14°C.So I put it in some warm water, then some cold, and the reading changed.Given that I only look at the thermometer to see if it's cold enough to turn the heating on (we don't have a thermostat), it must be that I only wonder whether </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/6548216788688058844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=6548216788688058844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6548216788688058844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6548216788688058844'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/02/aparrently-thermometer-isnt-broken.html' title='Aparrently the thermometer isn&apos;t broken.'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-6997144920038174933</id><published>2009-01-25T15:19:00.008Z</published><updated>2009-01-25T22:06:49.808Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='scite'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='c99'/><title type='text'>SciTE and ctags</title><summary type='text'>I've been using SciTE as editor of choice for some time, and spent a little time today getting a few extra things working for C99 projects. This year I'm refreshing my C a bit, as I haven't done anything which has specifically used C99.There's support in SciTE for autocompletion of words within the file by hitting Ctrl+Enter, but you can also add .api files which list function prototypes for an </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/6997144920038174933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=6997144920038174933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6997144920038174933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/6997144920038174933'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/01/scite-and-ctags.html' title='SciTE and ctags'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-4339705734082741064</id><published>2009-01-10T13:30:00.004Z</published><updated>2009-02-06T13:13:24.598Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='personal'/><title type='text'>Todo list</title><summary type='text'>I'm between contracts at the moment (if you're in the UK and want a systems engineering toolsmith, my CV is here) so there are a few projects I've been meaning to get round to:Review Artisan's free version of their SysML toolSort out automating backups rather than just using hg now and againConvert lots of m4a and import CDs into my new toy, a SqueezeBox network music playerGet a coherent </summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/4339705734082741064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=4339705734082741064' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4339705734082741064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4339705734082741064'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2009/01/todo-list.html' title='Todo list'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-2422930441274766067</id><published>2008-10-26T13:35:00.003Z</published><updated>2008-10-26T13:49:50.353Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>The Computational Beauty of Nature/Little things</title><summary type='text'>Over the last few weeks, I've been reading The Computational Beauty of Nature an coding up a few of generative algorithms.I've put them in the examples/java/fractals folder. Not much to them, just written on a netbook running Ubuntu.I have two main computers - an Asus Eee PC 900 netbook and a Shuttle SX48P2 Deluxe desktop - and tend to use the Eee PC much more, even for programming, despite </summary><link rel='related' href='http://mitpress.mit.edu/books/FLAOH/cbnhtml/' title='The Computational Beauty of Nature/Little things'/><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/2422930441274766067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=2422930441274766067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/2422930441274766067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/2422930441274766067'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/10/computational-beauty-of-naturelittle.html' title='The Computational Beauty of Nature/Little things'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-4479248796228756851</id><published>2008-10-18T15:25:00.001+01:00</published><updated>2009-04-16T16:29:17.993+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Prolog is not co-operative</title><summary type='text'>XProlog v.1.3, May 2002?- help.       &gt; No. ?- oh, go on.&gt; No. ?- please.&gt; No. ?- quit.</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/4479248796228756851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=4479248796228756851' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4479248796228756851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/4479248796228756851'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/10/prolog-is-not-co-operative.html' title='Prolog is not co-operative'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-951567369421339154</id><published>2008-10-13T23:47:00.001+01:00</published><updated>2008-10-13T23:48:49.180+01:00</updated><title type='text'>I don't want to think about it</title><summary type='text'>Fact: Boston Computer Museum sells chocolate bars shaped like floppy disks.Fact: Three year old kids see daddy boot his computer using a floppy to play games.Fact: Computers are warm inside...even some quite expensive computers.I don't want to talk about it.  source</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/951567369421339154/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=951567369421339154' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/951567369421339154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/951567369421339154'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/10/i-dont-want-to-think-about-it.html' title='I don&apos;t want to think about it'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-8929642460288397507</id><published>2008-08-07T20:45:00.003+01:00</published><updated>2008-08-07T20:53:59.982+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kin'/><title type='text'>Why Type</title><summary type='text'>For work, I'm demoing a GUI editor, which means undo would be nice, which is easiest to implement if you enforce purely functional data structures. So I'm doing a bit of reading as to how to implement suitable structures in Java 1.6, as that's the project's target language, and using Eric Lippert's examples as part of my reference material.There was also yet another thread on forums.java.sun.com </summary><link rel='related' href='http://blogs.msdn.com/ericlippert/archive/2007/12/06/immutability-in-c-part-three-a-covariant-immutable-stack.aspx' title='Why Type'/><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/8929642460288397507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=8929642460288397507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8929642460288397507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/8929642460288397507'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/08/why-type.html' title='Why Type'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-740492999980356270</id><published>2008-06-30T23:45:00.005+01:00</published><updated>2008-07-01T01:07:32.617+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Cedric's challenge, C port and analytic attempt</title><summary type='text'>I was a bit disappointed that the C port of the previous code wasn't quite as fast as another approach which cached more state instead of generating the i'th value. The second attempt, using the bcd lists was comparable to John Wilson's Java version (1.3 seconds rather that 1.5 reported by the Java), and an attempt using bitsets a bit slower. Timings on Eee pc 900, Ubuntu hardy heron. The code is</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/740492999980356270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=740492999980356270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/740492999980356270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/740492999980356270'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/06/cedrics-challenge-c-port-and-analytic.html' title='Cedric&apos;s challenge, C port and analytic attempt'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-5558892571476588644</id><published>2008-06-28T16:44:00.004+01:00</published><updated>2008-06-28T16:50:41.948+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>A coding challenge</title><summary type='text'>An implementation of the coding challenge of Cedric's.Somewhat coloured by the fact I normally use python as a prototyping language prior to production coding in C++. The combinations technique (using a bcd string instead of list) gets faster than the filtering technique for max somewhere between 1,000,0000 and 10,000,0000. As python is bytecode, it may be slower to bit-twiddle than use a dynamic</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/5558892571476588644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=5558892571476588644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/5558892571476588644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/5558892571476588644'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/06/coding-challenge.html' title='A coding challenge'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7217962.post-1791579750591271281</id><published>2008-06-12T21:17:00.003+01:00</published><updated>2008-06-14T14:39:51.385+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubiquitous-computing'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Eee's are good, Eee's are good</title><summary type='text'>I got an Asus Eee PC the other week, and spent the weekend and the last few evenings putting Ubuntu 8.04 on it (compiz, Ubuntu studio themes, several desktop tweaks, scite text editor, installing wifi and other drivers). It's small and cute. The screen is surprisingly legible, even for tiny text at arms length, and it's smoother than my big laptop running compiz.As I don't have a USB DVD drive, I</summary><link rel='replies' type='application/atom+xml' href='http://blog.tincancamera.com/feeds/1791579750591271281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=7217962&amp;postID=1791579750591271281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1791579750591271281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7217962/posts/default/1791579750591271281'/><link rel='alternate' type='text/html' href='http://blog.tincancamera.com/2008/06/eees-are-good-eees-are-good.html' title='Eee&apos;s are good, Eee&apos;s are good'/><author><name>Pete Kirkham</name><uri>http://www.blogger.com/profile/17321624014729731964</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='01044618338605939259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>