<?xml version='1.0' encoding='UTF-8' ?>
<rss version="2.0" xmlns:admin="http://webns.net/mvcb/" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:icbm="http://postneo.com/icbm" xmlns:includedComments="http://www.laudably.com/rss2-comments" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:media="http://search.yahoo.com/mrss/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
	<channel>
		<title>Bblog</title>
		<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView</link>
		<description>Bblog</description>
		<webMaster>bbadger@openskills.com</webMaster>
		<lastBuildDate>Sat, 20 Oct 2007 22:40:44 EDT</lastBuildDate>
		<image>
			<url>/images/why-small.png</url>
			<title>Bblog</title>
			<link>http://www.cincomsmalltalk.com/userblogsbadger/blogView</link>
			<height>50</height>
			<width>81</width>
		</image>
		<admin:generatorAgent rdf:resource="/CincomSmalltalkWiki/Silt"></admin:generatorAgent>
		<admin:errorReportsTo rdf:resource="mailto:bbadger@openskills.com"></admin:errorReportsTo>
		<dc:language>en-us</dc:language>
		<dc:creator>Bruce Badger</dc:creator>
		<dc:rights>Copyright 2005 Bruce Badger</dc:rights>
		<dc:date>2007-10-20T22:40:44-04:00</dc:date>
		<icbm:latitude>-35.283333</icbm:latitude>
		<icbm:longitude>149.133333</icbm:longitude>
		<item>
			<title>More fun for the lawyers</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=More_fun_for_the_lawyers&amp;entry=3345971687</link>
			<category>Community</category>
			<pubDate>Thu, 11 Jan 2007 12:34:47 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>Here is another change to a system which seems very likely to generate more cash for those starving lawyers...</p>
<p>The Register <a href="http://www.theregister.co.uk/2007/01/11/new_restrictions_on_opposing_trade_mark_application/">reports that the UK Trade Marks Registry will no longer oppose applications for marks that are similar to marks already registered</a>. That job will now be down to the holder of any existing mark.</p><p>So, the government department is stepping back from helping trade mark holders to enforce their mark. It seems to me that we will see lawyers swinging into this space. Lawyers already offer services to monitor marks, but now it will be so much more important - because the government have stopped providing that service.</p><p>I can also see opportunities for lawyers to become predatory in the trade mark space as they are with patents. I can see the rather shady lawyers looking out for small-time trademark holders that are doing quite well, but whose trademark can be diluted by a carefully targeted new trade mark application. And if you want to fight, you have to pay the lawyers. Only the big guys win. Again.</p><p>It seems that more and more the protection for copyrights patents and trade marks is drifting away from what they should be doing:</p><p>Trade marks should help provide clarity and minimise confusion in the market place. But now the government is stepping away from helping to ensure clarity is maintained. More predatory action by lawyers means less market clarity and more dilution of brands, unless you pay the lawyers to protect your trade marks.</p><p>Patents should reward R&amp;D investment with a guaranteed but time limited monopoly on the ideas embodied in an invention. Increasingly though half baked ideas are being patented without any originality or actual implementation. Rather than encouraging investment in R&amp;D patents are now about who has the most money to pay the lawyers. (deffinitely the case for software idea patents, other areas may not be so bad).</p><p>Copyright should reward authors for making their works publicly available by granting a time limited monopoly on making copies of their works. It should be simple: if you make a copy of my work without my permission (license) I can sue you in the civil courts. Now, with DMCA, DRM etc. making a copy without permission becomes a crime and another high-stakes lawyer game in which we are all presumed to be guilty.</p><p>It seems the the public benefit that should flow from trade marks, patents and copyrights have been completely lost, and instead we have a massive gold mine for lawyers.</p><p>BTW, I don't believe that the above problems are of the lawyers making. Rather we have to look to lobby led decisions by legislators ... which, of course, the lawyers take advantage of (because if lawyer A wouldn't, then lawyer B would ...).</p></div>]]></description>
			<guid isPermaLink="false">3345971687</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3345971687</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3345971687</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3345971687</wfw:comment>
		</item>
		<item>
			<title>More on the idea patents petition</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=More_on_the_idea_patents_petition&amp;entry=3345700320</link>
			<category>Community</category>
			<pubDate>Mon, 08 Jan 2007 09:12:00 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>I have been spreading the word about <a href="http://petitions.pm.gov.uk/softwarepatents/">the anti-software idea patents petition on the Prime Minister's web site</a> , and it seems that others have too as the number of signatures creeps up.</p>
<p>I got a response from a friend saying he had signed the petition, but that he felt that it was so badly worded that it may put people off signing, even if they agreed with the elimination of software idea patents. My friend then went on to say that perhaps patents on software would not be so bad if they were properly administered, and in particular if all patents are required to show:</p>
<ul>
<li><strong>Originality</strong>. It must be original work of the patentee. </li>
<li><strong>Novelty</strong>. It must actually be something new, not an obvious refinement of an existing technique, process, or gadget.</li>
<li><strong>Actuality</strong>. It must actually exist. You cannot patent an idea. You have to build a working version.</li>
<li><strong>Replicability</strong>. Explain with the utmost clarity how others can duplicate it (and by implication what they have to avoid doing to avoid trampling on your patent) .</li>
<li><strong>Precision</strong>. No wooliness or secrecy permitted.</li>
</ul>
<p>Good points. I responded (approximately) as follows:</p><p>I agree that the petition is very badly worded. </p><p>My take on this is that software should either by up for copyright protection *or* patent protection. Not both. Copyright protection makes sense for software because it's a written work (the bit that humans create is). Patents make much less sense because software is much more like a mathematical thing or an idea than it is like a machine. </p><p>There are many potential problems with software idea patents, but we can see some of them are exploited already. There are companies whose primary &quot;products&quot; are patents designed to extract licence revenue when an idea is actually implemented ( c.f. <a href="http://en.wikipedia.org/wiki/Submarine_patent">submarine patents</a>). This is just one way that the software idea patent turns out to be a better tool for predators than as a tool to encourage creativity.</p><p>One may argue that only concrete implementations (ones that meet the list of criteria you specified) should be patened to avoid the above ... but concrete implementations of software ideas are *already* protected - by copyright. So what does patent protection add? I think it adds confusion which can be exploited by patent lawyers.</p><p>I really can not see a positive side to software idea patents. I can't imagine any software I might create that I would want to protect beyond the protection offered by copyright.</p><p>And as for the petition, even though it is poorly worded my hope is that it will open up the debate a bit, because what we really need is for the issues to be widely aired, rather than decided in a committee room by ... patent lawyers (which is what seems to be happening in the EC and other legislatures).</p><p>p.s. Have a read of this <a href="http://www.theregister.co.uk/2003/06/29/open_source_prepares_to_kiss/">Register article on software idea patents</a>. It's from 2003, and warns of something that did not actually happen, but the analysis is very interesting.</p></div>]]></description>
			<guid isPermaLink="false">3345700320</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3345700320</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3345700320</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3345700320</wfw:comment>
		</item>
		<item>
			<title>Software Idea Patents - A Petition</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=Software_Idea_Patents_-_A_Petition&amp;entry=3345339213</link>
			<category>Community</category>
			<pubDate>Thu, 04 Jan 2007 04:53:33 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>Those of you who think <a href="http://www.ffii.org/Frequently_Asked_Questions_about_software_patents">software idea patents</a> are a bad idea and who are British citizens or residents of the UK might like to sign this petition:</p>

<blockquote><p> <a href="http://petitions.pm.gov.uk/softwarepatents/">We the undersigned petition the Prime Minister to make software patents clearly unenforcible.</a></p>
</blockquote>

<p>The supporting text of the petition is:</p>

<blockquote>
<p>Software patents are used by convicted monopolists to threaten customers who consider using rival software. As a result, patents stifle innovation.</p><p>Patents are supposed to increase the rate of innovation by publicising how inventions work. Reading a software patent gives no useful information for creating or improving software. All patents are writen in a sufficiently cryptic language to prevent them from being of any use. Once decoded, the patents turn out to be for something so obvious that programmers find them laughable.</p><p> It is not funny because the cost of defending against nuicance lawsuites is huge.</p><p>The UK patent office grants software patents against the letter and the spirit of the law. They do this by pretending that there is a difference between software and 'computer implemented inventions'.</p><p> Some companies waste money on 'defensive patents'. These have no value against pure litigation companies and do not counter threats made directly to customers.</p>
</blockquote>

<p>I have signed this, and I would urge anyone in the UK or with a UK passport to sign too. I would have worded the supporting text differently but no matter how you phrase it, software idea patents are bad for everyone (except patent lawyers and perhaps large companies able to pay for a stable of patent lawyers).</p></div>]]></description>
			<guid isPermaLink="false">3345339213</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3345339213</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3345339213</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3345339213</wfw:comment>
		</item>
		<item>
			<title>Version Naming</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</link>
			<category>software development</category>
			<pubDate>Tue, 12 Dec 2006 12:36:01 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>I wanted to write a very brief note on the version naming scheme I tend to use and why I like it. But it turned into this rather long piece. Sorry ... </p><p>Some version names carry a great deal of baggage. Version 1.0 springs to mind as a version name that causes enormous angst. It seems to be held in reserve for use when the particular lump of software is first &quot;ready&quot; or &quot;complete&quot; or something of that ilk. Some projects have decided to avoid 1.0 completely and always have version numbers less than one.</p><p><a href="http://en.wikipedia.org/wiki/David_A._Thomas_(software_developer)">Dave Thomas</a> of Smalltalk and Envy fame once gave a talk about the version numbering scheme used at OTI, and I have used it ever since - whenever I get to choose version names. It's a simple technique that calls for the numbering of goals and steps towards those goals separately. A version name in this scheme looks like &quot;g iii&quot; where g is the number or name of the goal (or intent) and iii is a simple integer increment which indicates the committed (from a version control point of view) step (or attempt) towards attaining the goal.</p><p>I tend to just use integers as the goal names, so the first goal name I use for a project is 1. The first increment would be 001 (I use the leading zeros because it appeals to me - and tends to sort better with some tools). So, the very first version name on a new project will most likely be simply 1 001 (the first attempt to get to the first delivery goal). It requires no thought or agonising about the meaning of the numbers, it's just the first go at making the first deliverable.</p><p>Delivery of a system will either be time-boxed or functionality-boxed, i.e. it's got to go out on such and such a date, or it must have this list of features. Who can say how many attempts it will take to build a system in these different situations? Not I, and I don't care. It'll take what it takes. When the system is ready, by whatever criteria, I'll release it and note that it was attempt iii that was the first release of the system. For example, 1 132 would not be an untypical number for a substantial system built over several months. If that delivered system needs fixing then it's just a further attempt at the same thing, so perhaps a fixed version would have the name 1 138 if the fix itself took a few attempts.</p><p>Deciding that there is a new goal is art. The question will be: is this work we are about to do merely fixing or slightly enhancing the existing system as delivered or is this a new goal that deserves a new major number? I mostly work on database systems and tend to follow the rule of thumb that a major version corresponds to a schema (or object model) shape, and that a schema change implies a major version increment. But that's just me, and even then things are rarely satisfyingly back and white - so it's still art, as is deciding on the name/number for a new goal.</p><p>On top of all of the above we have the idea of a branch in project work. This may occur because work starts on version n+1 before version n is ready, or because version n-1 needs a fix. In many version naming schemes one can see <a href="http://www.oracle.com/technology/software/products/database/oracle10g/index.html">astonishingly long version names</a> made up of integers letters and dots all trying to convey where the version fits in to the history. In the above &quot;g iii&quot; scheme, every g is a branch. So, if we release version 1 032 as above and move on to 2 001 and then find a problem with the g=1 system, we just move on to 1 033 etc. If we need to start working on g=3 while g=2 is just being rolled out and g=1 is still in production, still no problem everything is clear. We might have 1 056, 2 021 and 3 002 all being worked on at the same time with the objectives and intent of each branch being clear.</p><p>Then we have composition. Projects are not single monolithic blobs, not even small projects. I'll use <a href="http://www.cincomsmalltalk.com/userblogs/cincom/blogView?content=vwfactsheet">VisualWorks Store</a> terminology here, which is pretty straight forward - At the top of the grouping pile we find Bundles. For every project I deliver I have a single bundle that contains all the bits that make up the system. Bundles can contain other bundles (for big projects layers help) and Packages. Packages contain code, for example a class definition or a method. So, we have a tree with a single bundle at the root and bits of code at the leaves.</p><p>As I work I version the things I'm working on (i.e. I make an immutable copy and assign a version name to that copy - my version crontrol system does most of this work for me). If I'm the team leader of a project I version the top bundle containing a version of the entire system. I do this often and I use SUnit to check the state of each new version, beating people if things have regressed. </p><p>Everyone in the team knows the goal so we all agree on a &quot;g&quot; number. I don't care about the increment numbers for any of the bits, other than that they must be sequential (i.e. always going up. I don't mind gaps) - the version control system remembers which versions of what go to make up the whole tree. So, for example, the root of the tree might be at 1 012 but a particularly tricky class might be at 1 046. No worries.</p><p>I don't force new version names upon things that have not changed. If I'm working on version g=2 of the system, I'd expect to start off with most components having version numbers like 1 iii. In the future if I find I'm working on version g=42 (the ultimate version of the system, of course) and I find a component with a version number of 1 046, that just shows that the original work was good (well, after ~46 increments it was).</p><p>Of course, sometimes we do need to have spontaneous branches. For example, if I find myself fixing a system in the wee small hours, I'm not going to hold back on making a fix and I don't want to worry about any version naming stuff. In these cases, I just append my initials and another increment to the version name. This is saying: This is a fix done by someone other than the agreed maintainer of this code and it's my nnnth attempt, so for example I might have 1 046.bb05 (it took me 5 goes to get it right in this case). As soon as possible I try to have the agreed maintainer of the code adopt (or reject) the changes and merge them in with the body of work for all the &quot;g&quot;'s affected.</p><p>Lastly, while some may worry that version numbers get big and even coin phrases like &quot;version number inflation&quot;, I don't mind if the g or iii version numbers gets big. Why should it matter? It's just a counter of the number of goals and increments I've worked through.</p><p> ... and this was a tad longer than I planned. All I wanted to say was I use the Dave Thomas version naming scheme that looks like &quot;g iii&quot; and it works really well for me. There you go.</p>
</div>]]></description>
			<guid isPermaLink="false">3343379761</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3343379761</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3343379761</pingback:target>
			<includedComments:comment-collection>
				<includedComments:comment>
					<includedComments:guid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:guid>
					<includedComments:puid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:puid>
					<includedComments:author>Travis Griggs</includedComments:author>
					<includedComments:pubDate>2006-12-13T01:38:42-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Is that it doesn't scale across multi person projects well. The OpenSource kind in particular. At best what you're attempting to do is provide an insight into what the publish comment had better say. Something like "this is just a little change" vs. "i rewrote quite a bit here." But that's so arbitrary. One man's big change is another man's little change. If it's your project then you have the liberty of making the artistic call when to start a new "goal." But your artistic feel good point to do that is different from someone who uses the same approach. So in the end, I just end up ignoring these things, because it's something that is only meaningful to the author, and I've learned over the years that I am no good at guessing the intent of when to "start a new goal." And then there's the fact that when you get into a multi person open source project, no one can decide when to role the version number, so no one does, and we end up with 1.4666. Or better, 1.52.0.18.92.34. I use the Microsoft versioning model: "build 1387". :)
&lt;/p&gt;&lt;/div&gt;</includedComments:content>
					<includedComments:title>The problem I have with this...</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:guid>
					<includedComments:puid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:puid>
					<includedComments:author>Bruce Badger</includedComments:author>
					<includedComments:pubDate>2006-12-13T08:14:50-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Travis, Dave Thomas' version numbering scheme has scaled quite nicely
in my experience.  It's essentially what you said you liked (a
counter, much like a build number is a counter) while recognising that
most projects need to make discrete releases which people can use.
Dave's scheme adds no meaning to the increment numbers, so commit
comments are most certainly important in order to understand what was
fixed in an increment.&lt;/p&gt;

&lt;p&gt;Actually don't think "build number" is a scalable idea as a generic
version naming scheme - it's usually a term used to identify a build
(remarkably enough), i.e. the process of bringing all the bits of a system
together.  I don't think is says anything about the version history of
the bits, it's just a step number at the highest level.  Dave's scheme
works nicely at all levels of granularity, not just at the root of the
tree.&lt;/p&gt;

&lt;p&gt;I agree that the art of deciding when there is a new "release" or
whatever is a pain.  I think it's one of those things that must be
left in the hands of an individual, though hopefully an individual
that tries for a consensus.&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>Scales nicely, I find</includedComments:title>
				</includedComments:comment>
				<includedComments:comment>
					<includedComments:guid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:guid>
					<includedComments:puid>blogView?showComments=true&amp;printTitle=Version_Naming&amp;entry=3343379761</includedComments:puid>
					<includedComments:author>Maximiliano Contieri</includedComments:author>
					<includedComments:pubDate>2006-12-14T10:24:13-05:00</includedComments:pubDate>
					<includedComments:content>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;p&gt;Nice Post ! &lt;/p&gt;&lt;p&gt;We also have a version schema&amp;nbsp; based on major and minor versions. Therefore we name applications and classes according to tree branches.&lt;/p&gt;&lt;p&gt;We have several integrity tests (built on SUnit) which enforce our standars.&lt;/p&gt;&lt;p&gt;Every application released in a baseline must have at most two version numbers. what&amp;acute;s more we can easily notice that a particular version belongs (o belonged) to a baseline&lt;/p&gt;
&lt;/div&gt;</includedComments:content>
					<includedComments:title>OTI Version Name Schema</includedComments:title>
				</includedComments:comment>
			</includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3343379761</wfw:comment>
		</item>
		<item>
			<title>Screencasts of PostgreSQL and Store</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=Screencasts_of_PostgreSQL_and_Store&amp;entry=3343296118</link>
			<category>software development</category>
			<pubDate>Mon, 11 Dec 2006 13:21:58 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>While I was taking a month off traveling Australia prior to our move to London, a chap called Aik-Siong Koh was working away on 4 screen casts that go over:</p>
<ul>
<li><a href="http://askoh.net/misc/visualworks/installPostgreSQL/">Obtaining and installing PostgreSQL</a> (and un-installing it too).</li>
<li><a href="http://askoh.net/misc/visualworks/initPostgreSQL/">Configuring PostgreSQL for use with Store</a>. You need to watch the last screencast to see why Aik-Song sets up the accounts he does.</li>
<li><a href="http://askoh.net/misc/visualworks/installSTORE/">Installing Store and the PostgreSQL drivers into VisualWorks</a> and creating a new empty Store repository.</li>
<li><a href="http://askoh.net/misc/visualworks/usingSTORE/">Using Store</a>. Here Aik-Siong commits a few things to Store including the VisualWorks base classes.</li>
</ul>
<p>There are many ways to work with PostgreSQL and Store. Aik-Siong shows us exactly how he gets started, and gives us a view of how he uses Store with PostgreSQL to manage Smalltalk source code. I think he's done a really excellent job with these screencasts.</p><p>I have added links to Aik-Siong's screencasts to the <a href="http://wiki.cs.uiuc.edu/VisualWorks/PostgreSQL+for+Windows">relevent</a> <a href="http://wiki.cs.uiuc.edu/VisualWorks/StORE+for+PostgreSQL+Documentation">bits</a> of the <a href="http://wiki.cs.uiuc.edu/VisualWorks/The+PostgreSQL+Library">PostgreSQL driver documentation</a> on the <a href="http://wiki.cs.uiuc.edu/VisualWorks">UIUC VisualWorks wiki</a>.</p></div>]]></description>
			<guid isPermaLink="false">3343296118</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3343296118</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3343296118</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3343296118</wfw:comment>
		</item>
		<item>
			<title>London Town</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=London_Town&amp;entry=3343269101</link>
			<category>general</category>
			<pubDate>Mon, 11 Dec 2006 05:51:41 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>Prompted by the trickle of 'we heard a rumor that you have moved...' emails turning into a flood, I just thought I'd mention here that we have indeed moved to London.</p>
<p>The move was horrible, but not unusually so. We now have a home with all our things in it approximately  <a href="http://maps.google.com/maps?f=q&amp;hl=en&amp;q=EC1A,+london,+uk&amp;ie=UTF8&amp;z=14&amp;ll=51.520761,-0.104027&amp;spn=0.027771,0.086946&amp;om=1&amp;iwloc=addr">here</a>.</p></div>]]></description>
			<guid isPermaLink="false">3343269101</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3343269101</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3343269101</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3343269101</wfw:comment>
		</item>
		<item>
			<title>Addressing Spam</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=Addressing_Spam&amp;entry=3342928225</link>
			<category>general</category>
			<pubDate>Thu, 07 Dec 2006 07:10:25 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p>Have a look at what the Dutch have done to address spam as reported in <a href="http://www.computing.co.uk/2170392">this Computing article</a>.</p>
<p>In short, the Dutch have thought about how much spam is a problem for them, had a think about how much they want to spend every year on addressing it and gone ahead and set up a team to tackle spam and given them a budget.</p><p>I don't know exactly what the Dutch team do, but I hope it is something like have a system that accepts streams of spam from citizens and dumps them into a database for analysis. I imagine that such a team would spend some time refining the way that the data is analysed, and some of the time taking the most Obvious Problems (whether specific spammers, ISPs, operating systems or people trying to fool the team themselves) and trying to do something about it.</p><p>Doing something about it is tricky for a lone country (though the article says the Dutch have had significant success). I think what would be needed would be an Interpol like body with a similar structure to the country team which would act as a clearing house for the Obvious Problems mentioned above. The clearing house would pass the information to the team in the country from which an Obvious Problem originates.</p><p>Spam is a tricky and evolving problem so the solution needs to be flexible too. I think a network of teams like the Dutch one could make a significant contribution to the process of minimizing spam.</p><p>Here's hoping.</p></div>]]></description>
			<guid isPermaLink="false">3342928225</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3342928225</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3342928225</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3342928225</wfw:comment>
		</item>
		<item>
			<title>Smalltalk, the Image and Multiple CPUs</title>
			<link>http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;printTitle=Smalltalk,_the_Image_and_Multiple_CPUs&amp;entry=3342683829</link>
			<category>Community</category>
			<pubDate>Mon, 04 Dec 2006 11:17:09 EST</pubDate>
			<description><![CDATA[<div xmlns="http://www.w3.org/1999/xhtml">

<p><a href="http://www.cincomsmalltalk.com/userblogs/runarj/blogView?showComments=true&amp;entry=3342614567">Runar Jordahl posted about VisualWorks and multiple CPU cores</a>, which is a subject that has interested me, so I felt I wanted to write something in response - not that I disagree with Runar at all, I am hopefully just re-enforcing what Runar has already said.</p><p>It used to be simple. A computer had a CPU that did the work supported by a host of other bits and pieces like memory, disks etc... Today computers are tending to have many CPUs. In the future they <a href="http://www.cincomsmalltalk.com/userblogs/badger/blogView?showComments=true&amp;entry=3283623051">may well have swarms of CPUs each</a>.</p>
<p>Smalltalk took shape in the 1970s, well before the advent of multi-core chips and most Smalltalk implementations, even today, run on a virtual machine that runs in a single operating system process using &quot;green threads&quot;; which means that the VM schedules the work in the image with only one Smalltalk process running at a time.</p><p>The memory space occupied by a running Smalltalk system is called an image and is much like the memory space occupied by any running program regardless of language , i.e. there is code and data in there. In Smalltalk it's all objects with some of the objects being code (bytecodes). (As a bonus a Smalltalk image can be saved in a running state to be later resumed.)</p><p>Having a single image make use of many CPUs requires that the VM run more than one Smalltalk process at a time (typically as native threads) and allow the operating system to do the scheduling (sharing the CPUs among the processes). The problems here are that the running processes are operating on the same set of Objects (i.e. in the same image) so great care must be taken to ensure that the activities of one process do not intefere with or corrupt another and also that the timing of execution is out of the hands of the VM so things may not happen in a repeatable order (i.e. the system may become non-deterministic).</p><p>One way to address these issues is to avoid them. Don't run many processes in one image but rather run many images. In this way each image continues to run in a (largely) deterministic fashion using green threads. This solution can be inefficient in it's use of memory. The set of data being actively operated upon in an image is often a very small subset of the whole image so having many images means duplicating things unnecesarily, and while running two such images might be tolerable, running 10s or 100s would be crazy (I think we can expect servers to have 100s (or more) CPUs in the not too distant future).</p><p>Another approach is to use flags or semaphores to stop processes from stepping on each others toes. So, we could lock the root of an entire object model while our process is operating on it, thereby preventing any other process from making changes until our guy has finished - but this probably means processes will have to queue to get access to the model (even read access because we want to have read consistency) which means we really only have one process actively doing anything at a time. Back to square one. A variant of this is to make the locks more fine grained so that each process will only lock a part of the model allowing others to work on other parts of the model but this makes a system harder to code and debug, perhaps much harder.</p><p>How about if we could mix the above two solutions and have have many operating system processes all running Smalltalk in the same image and have a ready made mechanism to help avoid processes treading on each others toes?</p><p>Such a system already exists in GemStone which is both a Smalltalk implementation and a DBMS.</p><p>A running gemstone instance is a single Smalltalk image which is backed securely to disk (that's part of the database-ness of GemStone). Many operating system processes can be started in the context of this image and all of these share the same pool of objects via shared memory (this is the Shared Page Cache). Each of these processes may run at the same time on any number (well, up to ~2000 with the version of GemStone we use) of CPUs. Transactions prevent one process from treading on the toes of another (another bit of database-ness).</p><p>GemStone is an excellent environment for running headless applications such as web servers (e.g. the <a href="http://www.openskills.org">OpenSkills</a> <a href="http://skillsbase.openskills.org">SkillsBase</a>). If you need a GUI and also want to use lots of CPUs, GemStone can't help ... which brings us to exactly the same conclusion that Runar reached.</p><p>As GemStone demonstrates, transactional shared memory is a viable way to go. I too hope VisualWorks moves in this direction.</p></div>]]></description>
			<guid isPermaLink="false">3342683829</guid>
			<pingback:server>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIPBServlet?guid=3342683829</pingback:server>
			<pingback:target>http://www.cincomsmalltalk.com/userblogs/badger/blogView?guid=3342683829</pingback:target>
			<includedComments:comment-collection></includedComments:comment-collection>
			<wfw:comment>http://www.cincomsmalltalk.com/userblogs/badger/servlet/CommentAPIServlet?guid=3342683829</wfw:comment>
		</item>
	</channel>
</rss>
