tag:blogger.com,1999:blog-62687353206917451992024-03-13T15:28:14.785+00:00The OpenSkills SettBruce Badger's blog discussing life, FLOSS and OpenSkills.Unknownnoreply@blogger.comBlogger213125tag:blogger.com,1999:blog-6268735320691745199.post-88628577099507235382016-02-07T12:02:00.001+00:002016-02-07T19:54:16.032+00:00NHS: standards please, not monster systemsI saw this: <a href="http://www.bbc.co.uk/news/health-35514382">http://www.bbc.co.uk/news/health-35514382</a><br />
('paperless NHS' plans)<br />
<br />
There have been many attempts to solve this, all of them involving throwing large (very large) sums of money at consultancy shops to build "systems". These systems end up being monsters, taking the work of hundreds of developers and pouring that work into one seething unmanageable pot, while being managed by people who are expert in extracting extra costs from the client, i.e. government i.e us.<br />
<div>
<br />
The alternative: Focus on document exchange standards.</div>
<div>
<br /></div>
<div>
With defined document standards, private firms and indeed the open source software community, can compete to build systems which conform to the standards. For example, imagine a 'document' which is my medical history - I should be able to send this (or parts of it) to my GP. The GP could then add new information to the document and send on part of the document to a specialist (using a conforming software system of his or her choice). Standard parts of documents could be blood tests, CT scans, DNA decode, name & address ... etc.</div>
<div>
<br /></div>
<div>
Security is a significant concern with this kind of data. A document should be encrypted and only people with permission (e.g. a signed digital certificate) can read it. Technology for this already exists. In the case above, the GP would send the file to the specialist and the specialist would need to get permission from me to read it (this could just take the form of an computer message saying "is it OK for consultant x to read document y?").</div>
<div>
<br />
For people who are not tech savvy there could be central registries of documents which maintain records of who is allowed to see what. Companies could complete to provide such services, but the NHS could provide a simple one (which should be a bought-in system, not a build in-house monster system). Such systems would allow people to visit a medical person and give permission there and then for documents to be read.</div>
<div>
<br /></div>
<div>
For people who are very ill it must be possible for medical people to obtain permission to read medical documents (e.g. from the courts, as with a search warrant). This could be a delegated power, but as with all access there must be a clear audit trail. (lots of alternative exists for this kind of thing. Block chains may a strong current option).</div>
<div>
<br /></div>
<div>
As we have seen, system-centric approaches fail. Instead, the government should focus on developing document standards. Aim (perhaps in the medium to long term), to work with ISO & WHO so electronic medical documents can be exchanged around the world.</div>
<div>
<br /></div>
<div>
Please, no more monster systems or even system-centric central government projects for the NHS.</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-1582205801442065222014-01-04T18:45:00.000+00:002014-01-04T18:45:10.867+00:002006-12-04: Smalltalk, the Image and Multiple CPUsFirst posted on 2006-12-04:<br /><br /><a href="http://www.cincomsmalltalk.com/userblogs/runarj/blogView?showComments=true&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.<br /><br />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&entry=3283623051">may well have swarms of CPUs each</a>.<br /><br />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 "green threads"; which means that the VM schedules the work in the image with only one Smalltalk process running at a time.<br /><br />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 (byte codes). (As a bonus a Smalltalk image can be saved in a running state to be later resumed.)<br /><br />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 interfere 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).<br /><br />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 unnecessarily, 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).<br /><br />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.<br /><br />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?<br /><br />Such a system already exists in GemStone which is both a Smalltalk implementation and a DBMS.<br /><br />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).<br /><br />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.<br /><br />As GemStone demonstrates, transactional shared memory is a viable way to go. I too hope VisualWorks moves in this direction.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-21031899587981638242014-01-04T18:40:00.000+00:002014-01-04T18:40:17.773+00:00Re-posting the pastI used a different blogging system for a while several years ago, and I just found it again. So I'll post those old articles here just so I have all my stuff in one heap.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-76729763397102390292012-12-16T12:37:00.002+00:002012-12-17T07:39:54.437+00:00A letter to my MP about medical data standards<br />
Dear Mark Field,<br />
<br />
My wife and I have recently attended hospitals to have medical scans. The pattern these days seems to be to hand people a CD containing the images. All good, except the images are in a proprietary format which is not so good as it means we can't view the scan images.<br />
<br />
This points to a wider issue. The medical industry lacks open data standards. They have heaps of things which pretend to be standards (described as 'de-facto' or similar), but few if any real ISO style standards. It is counter-productive to impose requirements for specific software (as we have seen with various NHS software system disasters), but it would be a big positive to legislate standards for data. As an example of how well data standards can work, look at your mobile phone: in Europe phones had to follow the GSM standard and that now means I can pick any phone to use with any provider ... I just swap the *standard* SIM from one device to another, or use the same device with a different SIM. Back to medical standards; I suggest that medical images be presented in a standard format (TIFF, PNG - something non-lossy like that) and that medical data (meta-data, i.e. data about the image) be included along-side using XML or similar, but whatever standard is chosen it should be *open* and easy for equipment manufacturers to work with and for patients (and doctors!) to view the data. (I recently met with a doctor and he was unable to view the images of my scans because the software he had would not work with the images I had been given).<br />
<br />
The money recently wasted on NHS systems was wasted because the focus was on *systems* not on data format standards. It's as if the NHS spent money on making the perfect phone rather than defining GSM. The NHS spectacularly (if unsurprisingly) failed to make the perfect fits-all-needs system, but they could have defined a first version of a standard interchangeable patient record, or even just how medial image data would be exchanged. With standard(s) in place the software industry could then step in to implement competing systems (built on their own dime, much as phone companies make phones on their own dime) which the medical industry could use to manage and view patient data.<br />
<br />
If there was a standard my wife and I could view the medical scans on the CDs we were given. As it is, the best use for those CDs is as coffee mats or perhaps Frisbees.<br />
<br />
I'm asking that you pursue making legislation which requires the NHS to exchange data in standard formats or to have the NHS (or a delegated standards body) devise and evolve such formats where standards don't exist or don't meet current needs.<br />
<br />
I'm also asking that you resist any moves to let the NHS build software systems. They are clearly rubbish at doing it.<br />
<br />
Yours sincerely,<br />
Bruce BadgerUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-6268735320691745199.post-54038164177177729452012-06-02T11:58:00.000+01:002012-06-02T15:25:25.862+01:00Testing through the seasonsJust fixed a bug in the PostgreSQL drivers EXDI test suite which only happened when daylight savings kicked in. The failing test was a fairly new one put in place to exercise how timestamps with time-zones are handled and it's been working fine through the winter ... but with BST, it was not so good.<br />
<br />
All fixed now in the latest version available from the public Store.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-75984090508627494192011-10-09T11:59:00.007+01:002011-10-09T12:46:03.795+01:00Wow - the new VMWare fusion 4.0 UI is such a load of rubbish<span class="blsp-spelling-error" id="SPELLING_ERROR_0">VMWare</span> is just about the only software product I pay for. Everything else is either open source or comes with a device.<br /><br />Anyhow, I just upgraded my copy of <span class="blsp-spelling-error" id="SPELLING_ERROR_1">VMWare</span> fusion (the mac host package) from version 3.x to version 4.x and boy is the <span class="blsp-spelling-error" id="SPELLING_ERROR_2">UI</span> rubbish. <span class="blsp-spelling-error" id="SPELLING_ERROR_3">VMWare</span> have added all kinds of cool <span class="blsp-spelling-error" id="SPELLING_ERROR_4">UI</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_5">gizmos</span> to their utility screens (the stuff used to manage <span class="blsp-spelling-error" id="SPELLING_ERROR_6">VMs</span> before you even start them) but in the process have made the <span class="blsp-spelling-error" id="SPELLING_ERROR_7">UI</span> painfully slow and clunky.<br /><br />With version 3.x I could see all my <span class="blsp-spelling-error" id="SPELLING_ERROR_8">VMs</span> in a single window and click on any of them and see the configuration on a pane to the right. The configuration pane presented summary information including notes I left to myself about the intended use of the <span class="blsp-spelling-error" id="SPELLING_ERROR_9">VM</span>, and on that same pane I could drill down to specific details such as network, disk or memory configuration. All the <span class="blsp-spelling-error" id="SPELLING_ERROR_10">VMs</span> remained listed to the left.<br /><br />With 4.0 a cool <span class="blsp-spelling-error" id="SPELLING_ERROR_11">slidy</span> single-pane <span class="blsp-spelling-error" id="SPELLING_ERROR_12">UI</span> opens showing a black rectangle for each <span class="blsp-spelling-error" id="SPELLING_ERROR_13">VM</span> (which could show a screen snapshot from a running <span class="blsp-spelling-error" id="SPELLING_ERROR_14">VM</span> - cool, but is useless to me because I only save my <span class="blsp-spelling-error" id="SPELLING_ERROR_15">VMs</span> in a shut down state). Only the short name of each <span class="blsp-spelling-error" id="SPELLING_ERROR_16">VM</span> is shown beneath each black rectangle. No sign of my comments nor a summary of the <span class="blsp-spelling-error" id="SPELLING_ERROR_17">VM</span> configuration. If I click on a rectangle the <span class="blsp-spelling-error" id="SPELLING_ERROR_18">VM</span> might start, or the rectangle might just be selected depending on where I click on the rectangle (the faint grey arrow in the middle is a control(!) not just part of the image). If the <span class="blsp-spelling-error" id="SPELLING_ERROR_19">VM</span> decides to start, my list of <span class="blsp-spelling-error" id="SPELLING_ERROR_20">VMs</span> is removed (I didn't ask for that!) and the <span class="blsp-spelling-error" id="SPELLING_ERROR_21">VM</span> boots in it's own window. To get back to the admin window I need to go to the <span class="blsp-spelling-error" id="SPELLING_ERROR_22">VMWare</span> application menu or recall a special three-key incantation. If the <span class="blsp-spelling-error" id="SPELLING_ERROR_23">VM</span> doesn't start I just get the name of the <span class="blsp-spelling-error" id="SPELLING_ERROR_24">VM</span> highlighted in blue and then I have to press a button elsewhere on the admin window to see the <span class="blsp-spelling-error" id="SPELLING_ERROR_25">config</span> summary, and even then I just get a (very flashily displayed) set of icons, again replacing my list of <span class="blsp-spelling-error" id="SPELLING_ERROR_26">VMs</span>, oh, and the window leaps to a different part of the screen for some reason. Only when I click on the 'General' icon do I see the comment I left for myself. Then, having found that I had not selected the <span class="blsp-spelling-error" id="SPELLING_ERROR_27">VM</span> I wanted I close the settings icon panel and ... just get a big black rectangle for that one <span class="blsp-spelling-error" id="SPELLING_ERROR_28">VM</span>. To get back to my list of <span class="blsp-spelling-error" id="SPELLING_ERROR_29">VMs</span> I need to use the three-finger incantation again *and* have to close the <span class="blsp-spelling-error" id="SPELLING_ERROR_30">VM</span> I didn't want because that now hangs around in a window of it's own.<br /><br />In short (well, fairly short) the move from the 3.x admin <span class="blsp-spelling-error" id="SPELLING_ERROR_31">UI</span> to 4.0 means instead of one click to understand the nature of a <span class="blsp-spelling-error" id="SPELLING_ERROR_32">VM</span> and then one click to understand another <span class="blsp-spelling-error" id="SPELLING_ERROR_33">VM</span> I have: click to select a rectangle (careful not to click the middle!), then press a button in the top left of the <span class="blsp-spelling-error" id="SPELLING_ERROR_34">UI</span>, then press the General icon ... then to see the next <span class="blsp-spelling-error" id="SPELLING_ERROR_35">VM</span> I have to {shift}+{<span class="blsp-spelling-error" id="SPELLING_ERROR_36">cmd</span>}+L, close the window for the <span class="blsp-spelling-error" id="SPELLING_ERROR_37">VM</span> I'm not interested in and ... start all over again. Not only are there many, many more steps but each step is <span class="blsp-spelling-error" id="SPELLING_ERROR_38">sloooowwwww</span>.<br /><br />The <span class="blsp-spelling-error" id="SPELLING_ERROR_39">VMWare</span> fusion 4.0 admin <span class="blsp-spelling-error" id="SPELLING_ERROR_40">UI</span> is a massive leap backwards in terms of usability. It's crap when compare to the 3.x admin <span class="blsp-spelling-error" id="SPELLING_ERROR_41">UI</span>. It's like a graphic artist or <span class="blsp-spelling-corrected" id="SPELLING_ERROR_42">widget</span> designer was let loose without an experienced <span class="blsp-spelling-error" id="SPELLING_ERROR_43">UX</span> person there to guide them.<br /><br />Dear <span class="blsp-spelling-error" id="SPELLING_ERROR_44">VMWare</span>, for fusion 4.1 could you please throw away the rubbish cheap shiny 4.0 admin <span class="blsp-spelling-error" id="SPELLING_ERROR_45">UI</span> and go back to the 3.x model. The 3.x <span class="blsp-spelling-error" id="SPELLING_ERROR_46">UI</span> may not have been so cool, but it worked much, much, better. Thanks.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6268735320691745199.post-19671643430276002932011-10-08T22:29:00.002+01:002011-10-08T22:30:59.377+01:00BBC News - Millions stroll in New York's 'park in the sky'It's great to see the people in New York enjoying being able to walk above the streets:<br /><br /> <a href="http://www.bbc.co.uk/news/world-us-canada-15208873">BBC News - Millions stroll in New York's 'park in the sky'</a><br /><br />The <span class="blsp-spelling-corrected" id="SPELLING_ERROR_0">high walks</span> in the City of London provide a similar escape from the dirty traffic filled streets. It's unfortunate that here in London the <span class="blsp-spelling-corrected" id="SPELLING_ERROR_1">high walks</span> are being systematically closed and demolished at the hands of the City of London chief planning officer, Peter Rees. I attended a planning meeting where he seemed to take enormous pleasure in supporting a project which depletes the <span class="blsp-spelling-corrected" id="SPELLING_ERROR_2">high walk</span> even more. He joked about the people who use the high walks in a most demeaning way.<br /><br />Perhaps he should have a look at how New York is <span class="blsp-spelling-corrected" id="SPELLING_ERROR_3">recognising</span> the value of pedestrian spaces away from traffic, and look to projects which improve rather than diminish the lived-in environment.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6268735320691745199.post-75238413283326695392011-07-27T08:06:00.007+01:002016-02-18T19:05:56.084+00:00Who looks at Smalltalk?The C guys looked at Smalltalk and said they didn't need object orientation. They could structure their programs just fine.<br />
<div>
<br /></div>
<div>
The C++ guys looked at Smalltalk and thought, actually, the OO stuff is rather cool for building well structured code, but all the rest is just a performance hog, especially garbage collection.</div>
<div>
<br /></div>
<div>
The Java (and later C#) guys looked at Smalltalk and thought, you know, in most cases garbage collection is a really good thing as it saves programmers time and completely avoids common C/C++ malloc/free bugs, and anyway the performance cost is hardly noticeable in most applications, but all the rest of the stuff in Smalltalk is fluff, especially dynamic typing because it's obvious that static type checking will result in much less buggy programs, especially when you use SUnit (which they renamed to JUnit (of course!)) as well.</div>
<div>
<br /></div>
<div>
The Python and Ruby guys looked at Smalltalk and realised that using dynamic types gave them much less brittle systems which could flexibly change and evolve over time. They liked unit testing too (they called theirs something else too), and the ideas of refactoring (that was invented by the Java guys too, right? (not)) were even more powerful in a dynamically typed world ... and if Smalltalk is so good why didn't the Smalltalk people think of something like JUnit and refactoring! All the other stuff in Smalltalk was just fluff, though. For example, who would want to have an image based development environment or have the development tools themselves visible and changeable in that same development environment?</div>
<div>
<br /></div>
<div>
Anyone?</div>
<div>
<br /></div>
Unknownnoreply@blogger.com7tag:blogger.com,1999:blog-6268735320691745199.post-87147192891595677192011-07-16T18:57:00.001+01:002012-06-02T12:01:30.905+01:00Fix My StreetThe BBC have <a href="http://www.bbc.co.uk/news/technology-14172714">promoted a council run service for reporting street cleaning issues</a>. All well and good, but <a href="http://www.fixmystreet.com/">FixMyStreet</a> has been running for longer and is independent of the person reporting the problem and, critically, the council responsible for fixing the problem. There is very definitely a conflict of interests with the council running the site which is watching the council.<br />
<br />
I really wish the council in the BBC story had put the money towards helping to improve FixMyStreet, or just promoting it ... or even just improving their response to issues raised through FixMyStreet.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-86802957010303940222011-05-05T08:29:00.007+01:002011-05-05T13:19:26.130+01:00Yes to AV?In the UK today we get to vote in a referendum on whenther <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Alternative_Vote">AV</a> should be adopted in place of <a href="https://secure.wikimedia.org/wikipedia/en/wiki/First-past-the-post">first past the post</a> in elections for <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Member_of_Parliament">MP</a>s.<br /><br />I thought of two situations where AV would be useful to me.<br /><ul><li>Where an incumbant MP I like is replaced by their party. If I still like the policies of the party I would wish to say that I'd rather keep the current MP, but if not then I'll go with the person the party now nominates. With AV I can do this.</li><li>Similar to the above, if I would like to see a person not aligned with a party to be the MP, but if that is not possible then have the party I feel is 'safe'. Again AV lets me do this.<br /></li></ul>They key is I can submit more information with my single vote using AV.<br /><br />Some have suggested that AV is a poor compromise and that we should really be aiming to have <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Proportional_representation">PR</a>, but I disagree strongly with that. I very much want to retain directly elected MPs who represent specific areas rather than moving to the PR model where I would choose a party and the party would pick the MP(s) who represent me.<br /><br />As for the information-free mud slinging we have seen by the major parties leading up to this referendum, well, I think we'd be better off just ignoring that.<br /><br />So, AV seems to let me say more in my single vote while still ending up with a single MP to represent my area in parliament. One person, one vote, one MP. I think I like that.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-5820086743269685152011-03-08T18:12:00.000+00:002012-06-02T12:02:23.667+01:00Flext9 asks too much>The Register think Flext9 is a great keyboard for an Andorid phone:<br />
<br />
<a href="http://www.reghardware.com/2011/03/01/app_of_week_android_flext9/">Nuance Flext9 • reghardware</a><br />
<br />
It costs £3, which seems OK to me. What is not so OK is that this keyboard app wants to granted permission to "Read phone state and Identity" and have "Full Internet access".<br />
<br />
I've taken to removing apps which ask for that combination unless they clearly need it. I don't understand why a keyboard app would need to pull my identity from the phone and then be able to send it over the Internet.<br />
<br />
Three quid is fine, but I think they ask for too much elseUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-4997388984152849312010-10-22T07:41:00.002+01:002010-10-22T07:46:40.943+01:00Language Dynamics<a href="http://www.theregister.co.uk/2010/10/21/apple_threatens_to_kill_java_on_the_mac/">Apple drops Java</a><br /><a href="http://www.theregister.co.uk/2010/10/22/microsoft_kills_dynamic_languages_projects/">Microsoft drops Python and Ruby</a>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-46706084389079954062010-07-18T14:15:00.021+01:002010-07-21T22:44:26.764+01:00Smalltalk portability: Sport and GreaseThere are many dialects of <a href="http://en.wikipedia.org/wiki/Smalltalk">Smalltalk</a>. The implementation of the language is very similar in them all (partly thanks to the ANSI standard), but it's not exactly the same. The differences mean that a library or application written using one Smalltalk dialect can not simply be loaded/compiled and run in another.<div><br /></div><div>Let's say you developed an application using <a href="http://en.wikipedia.org/wiki/Visual_Smalltalk_Enterprise">Visual Smalltalk</a> and you now want to deploy it using <a href="http://www.pharo-project.org/home">Pharo</a>. Most of the code will work fine in both Visual Smalltalk and Pharo, for example "OrderedCollection new" will do the same thing in both, but things like sockets, files, times and string parsing classes and methods are different in the two dialects. To get the application working in Pharo you'll need to go through all the code in the system checking for things which don't work the same way and fixing them. Changing code to run on another platform is called <a href="http://en.wikipedia.org/wiki/Porting">porting</a>, and the result of a porting exercise is a second implementation of the subject system. A second body of code which will need to be maintained separately, so if you extend or fix a bug in the Pharo version you'll need to remember to make the same effective change (perhaps implemented a bit differently) in the Visual Smalltalk version. It is quite likely that such code bases will diverge over time. The cost of porting a system and then maintaing multiple versions of a system and them keeping then in step can be high; you may end up having to support them as distinct systems with separate lives.</div><div><br /></div><div>Fear not. There is a better way.</div><div><br /></div><div>Portability libraries are used to minimise the cost of porting an application. Portability libraries place the platform specific things behind a defined API. If a Smalltalk application is written to use only portability API(s) and 'standard' features it can be moved unaltered between Smalltalk dialects. Some applications have to use features which are peculiar to a platform, such as a GUI library, and such portions of a system must be ported and maintained the hard way, but many systems today can be, and are, written in such a way that they are completely portable between dialects using portability libraries.</div><div><br /></div><div>Two such libraries are <a href="http://wiki.openskills.org/OpenSkills/Sport">Sport</a> and <a href="http://code.google.com/p/seaside/wiki/LoadOrder">Grease</a>. Both of these libraries emerged from the process of porting code between Smalltalk dialects, but each addresses a different segment of the differences between dialects, with surprisingly little overlap between them.</div><div><br /></div><div>Sport was created during the development of <a href="http://en.wikipedia.org/wiki/OpenSkills">OpenSkills</a> applications such as the SkillsBase and Membership Management System. These applications are developed exclusively in VisualWorks and are deployed to run exclusively in GemStone. The work to get the applications to run in GemStone resulted in the creation of the OpenSkills portability library in early 2004, renamed to Sport (for Smalltalk Portability) in 2006.</div><div><br /></div><div>Similarly, the Grease library came out of the desire to run the Seaside web application library on a variety of dialects. Initially the portability code was called simply Platform and was a part of the Seaside library from about 2005 triggered by the desire to run Seaside in VisualWorks. The Grease name was applied to the portability library in the latter part of 2009 when it became a shared library used by packages related to Seaside, such as Pier and Magritte.</div><div><br /></div><div>Sport and Grease cover different areas with their portability APIs. Sport covers Sockets, Files, Time, Exception handling and utilities such as being able to explicitly test in which Smalltalk dialect code is being run in. Grease covers utilities for parsing, printing, encoding & decoding strings, delayed sends, common exceptions, utilities such as secure hash. There is some overlap, but not much. For example, Seaside expects the underlying HTTP server to deal with socket issues so Grease does not deal with sockets. Sport in turn does not have the extensive parsing and printing facilities found in Grease.</div><div><br /></div><div>The longer term goals for both Sport and Grease are that they should go away to be replaced with standardised implementations of the various areas, e.g. sockets. But Julian Fitzell (the Grease maintainer) and I both expect that to take quite some time. Today, Sport and Grease together provide a mechanism where Smalltalk applications can be developed in a truly portable way. </div><div><br /></div><div>To emphasise this, because it's quite a big deal, the exact same Smalltalk code for applications may run in many different Smalltalk dialects completely unaltered with the help of Sport and Grease.</div><div><br /></div><div><br /></div><div><br /></div>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-6268735320691745199.post-30602729920743016812010-02-28T11:08:00.008+00:002010-03-20T10:32:03.139+00:00For home DNS & DHCP, use dnsmasqI find that I have many devices in my home requiring IP addresses and names; laptops, netbooks, phones, nas, music player ... the list goes on.<div><br /></div><div>While my current DSL modem/router will run DHCP and give each device on the LAN an IP address, if I want to refer to a device by name (e.g. 192.168.0.24 aka "nero") I have to add names and IP addresses to the hosts file on my workstation ... and (yawn) on every other computer I also want to see that device by name.<br /><br />Adding to my woes, the DHCP server in the router is a bit free and easy with IP addresses, so if I restart a device it can get a different IP address which means that IP addresses move from device to device over time, which in turn means the names in my hosts files are all messed up. Darn ... and potentially harmful.<br /><br />Of course all I really want to do it to write down once that *this* box should be given *this* IP address and made available with *this* name<br /><br />... and the small utility <a href="http://en.wikipedia.org/wiki/Dnsmasq">dnsmasq</a> lets me do just that. The following line says that the device with the MAC address 00:1b:62:01:e4:d5 is always to be given the IP address 192.168.0.24 and is always to be known as nero:<br /><br />dhcp-host=00:1b:62:01:e4:d5,192.168.0.24,nero<br /><br />This one line configures both a DHCP server and a DNS server (light-weight implementations internal to dnsmasq), so any machine on the LAN can now use the name "nero" in place of the IP address even if the IP address did change, which would only happen if the configuration line above were changed.<br /><br />For the low-down on dnsmask see the <a href="http://www.thekelleys.org.uk/dnsmasq/doc.html">project home page</a> and the articles <a href="http://www.enterprisenetworkingplanet.com/netos/article.php/3377351">here</a> and <a href="http://www.linux.com/archive/articles/149040">here</a>.<br /><br />A very brief how-to (assuming a Debian-like server) would go something like ...<br /><br />1. Identify a machine on your LAN which runs 24/7 (I use a <a href="http://en.wikipedia.org/wiki/Fit-PC">FitPC</a> running Ubuntu) and install dnsmasq on it<br /><br />2. Decide on a domain for your LAN, e.g. home.localdomain<br /><br />3. Identify the devices on your network which will have static IP addresses. I have two, the DSL modem/router and the FitPC running dnsmasq. For these devices make entries in the /etc/hosts file of the machine running dnsmasq, e.g.:<br /><br />192.168.0.1 gateway gateway.home.localdomain<br />192.168.0.100 server server.home.localdomain<br /><br />4. Now work on the dnsmasq config file (/etc/dnsmasq.conf). First take a copy of the default file because it has lots of useful information in there. Then edit the file with details of your network and devices. You can see an example based on what I did for my home network below, but do refer to the docs and the original config file to understand the detail.<br /><br />5. Stop any other DHCP server you may have running (e.g. the one in the DSL modem/router)<br /><br />6. On the machine running dnsmasq: sudo /etc/init.d/dnsmasq restart<br /><br />7. Restart the network interfaces on your devices (or just reboot the computer, phone or whatever)<br /><br />8. Test that everything is as you expect. e.g. does ping nero work? Does ping nero.home.localdomain work?<br /><br />9. Done<br /><br />The example file:<br /><br />domain-needed<br />bogus-priv<br />expand-hosts<br />domain=home.localdomain<br />dhcp-range=192.168.1.100,192.168.1.150,1h<br /><br />dhcp-host=00:1b:62:01:e4:d5,192.168.0.24,nero<br />dhcp-host=00:1c:f0:06:25:ca,192.168.0.25,see<br />dhcp-host=00:23:76:cd:a7:9a,192.168.0.26,rome<br />dhcp-host=00:14:a6:2d:a7:9a,192.168.0.27,burn<br /><br />dhcp-option=option:router,192.168.0.1<br />dhcp-option=option:domain-name,home.localdomain</div>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-6268735320691745199.post-70837567744599753032010-01-06T20:54:00.006+00:002010-01-06T23:39:06.603+00:00Microsoft wants to "help" with SVGSo, Microsoft suddenly takes an interest in the <a href="http://en.wikipedia.org/wiki/Svg">SVG</a> standard:<br /><br /><a href="http://tech.slashdot.org/story/10/01/06/1829223/Microsoft-Wants-To-Participate-In-SVG-Development?from=rss&utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Slashdot%2Fslashdot+%28Slashdot%29&utm_content=Google+Reader">Slashdot Technology Story | Microsoft Wants To Participate In SVG Development</a><br /><br />This feels horribly familiar.<br /><br />Microsoft 'helped' the Oasis group with the <a href="http://en.wikipedia.org/wiki/Odf">ODF</a> standard by submitting proposals (which mysteriously were never put forward by Microsoft to be actually voted upon) and delaying the completion of the ODF specification. Once it was obvious ODF would be an ISO standard Microsoft abandoned the Oasis ODF project and, surprise, out of the blue submitted their very own <a href="http://en.wikipedia.org/wiki/Office_Open_XML">MOO-XML</a> proposal on an express track to being a ISO standard which they pursued by <a href="http://www.noooxml.org/irregularities">corrupting the standards process itself</a>. So we now have two ISO document format standards, the open ODF and the Microsoft MOO-XML <span style="font-style: italic;">and</span> a discredited ISO. Brilliant.<br /><br />Is this recent SVG move by Microsoft the first part of a similar campaign? Up until now Microsoft have ignored or tried to talk down SVG. Having failed to kill it with marketing muscle, are Microsoft moving into a more active SVG killing mode? I would not be at all surprised.<br /><br />Of course, Microsoft could just start using and supporting valid SVG without trying to meddle with the specification. That would be a positive thing.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-72427089583911689942009-11-22T13:49:00.009+00:002009-11-22T15:57:43.894+00:00Lossless: Keeping your options openThere have been a number of articles 'comparing the sound' of music encoded in a lossless way vs. a lossy way, for example, this one at Slashdot:<br /><br /><a href="http://news.slashdot.org/story/09/11/18/0123217/Can-We-Really-Tell-Lossless-From-MP3">Slashdot News Story | Can We Really Tell Lossless From MP3?</a><br /><br />I think this question misses a key point (though the original article does touch on it). If you have your content stored in a lossless form you can play it in a number of ways, including compressing music so it sounds as it would if it were being decoded from a lossy source, but you can't do it the other way around.<br /><br />For example, if I start with a <a href="http://en.wikipedia.org/wiki/Flac">FLAC</a> music file (at any given sample rate) I can convert it to <a href="http://en.wikipedia.org/wiki/Mp3">MP3</a> and listen to the resulting stream with MP3 compression artefacts added (just as they do in the article), or I can listen to the music directly from the FLAC file through something like the <a href="http://www.linn.co.uk/klimax_ds">Linn Klimax</a> (also <a href="http://news.bbc.co.uk/1/hi/scotland/8368895.stm">mentioned on the BBC</a>, btw). It is not possible to start with an MP3 file and listen to the 'MP3 sound' and then somehow get the 'FLAC sound' from the MP3, because the MP3 has lost some information (hence lossy). The lost bits are just not available. Ever. Lost for good.<br /><br />You don't need to use something as expensive as a Klimax to enjoy music encoded using FLAC. There are lots of free player programs for your computer (e.g. Play for the mac) and home music stystems (e.g. the <a href="http://www.logitechsqueezebox.com/">Logitech Squeezebox</a>). Yes, lossless formats do take up more space, but bulk storage is quite cheap today and getting cheaper, so this is no longer a really significant issue.<br /><br />So, keep your valued music in FLAC format and keep your options open. You may not be able to afford a Klimax now, but who knows what the future might bring or how your ears might change.<br /><br />And, of course, avoid DRM like the plague.Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-6268735320691745199.post-3898389579877694732009-11-21T11:52:00.007+00:002009-11-21T12:34:54.058+00:00Candidates for hybrid vehiclesWe hired a Prius and went on a drive around Wales fairly recently. Wales was stunning, and we'll be making a return trip. The Prius was mostly a not particularly remarkable family car, but there were a couple of area where it really excelled.<br /><br />The first one was in the quiet of the morning when leaving a B&B. There is a button which tells the Prius to avoid using the internal combustion engine for as long as possible. In this 'stealth mode' we pulled away from B&Bs with just a crunch of gravel, if that.<br /><br />The other situation where the Prius excelled was in heavy traffic in London. When stopped in traffic, i.e. most of the time (or so it seemed), the car used minimal energy and was pumping no fumes into the air. However we still got to enjoy the noise and fumes from the thousands of other vehicles around us.<br /><br />Given this experience I'd say hybrid technology is great for:<br /><br />Early morning or late evening movements in residential areas. In the UK the <a href="http://en.wikipedia.org/wiki/Milk_float">all electric milk float</a> has been around for ages, and increasingly we are seeing grocery delivery vehicles using either all electric or hybrid vehicles. Great stuff, but we need to see much more of this.<br /><br />The London cab. This is a great vehicle. Tight turning circle, loads of room inside and driven by someone who actually knows where they are going. But, boy, are they noisy and polluting! Most of their life will be spent stood still in traffic jams or waiting for a fare with the engine running (to keep the driver warm). Hybrid technology (or some kind of all-electric) technology would be perfect for cabs in London and other large cities.<br /><br />Waste collection vehicles. The nosiest of them all, with their mighty compactors on the back and the amazing range of loud noises they make as they whir, wheeze and rattle down the streets. These vehicle clearly need heaps of power to run the hydraulics for compacting, tipping and all that, but do they really need to run the big diesel engine and compressors while racing (oh, yes) from one set of rubbish bins to another? I think not. With Hybrid technology batteries could be charged while the engine was working to drive the hydraulics, and the engine could be off for the sprints between bins. The engine could kick in for longer runs, but for most of the stop-start small street stuff, the vehicle could be much quieter.<br /><br />Buses in London are noisy beasts too. TfL are already looking at using Hybrid technology for those, but it seems to be taking a long time to put into practice. I saw the first hybrid double decker at the Lord Mayors show a few years ago, but even now I hardly ever see one actually in service.<br /><br />If we can get these kinds of vehicles to be less polluting in terms of noise and exhaust it would significantly improve the environment in our modern cities, and hopefully set an example for other city road users.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-32422655083415368192009-10-16T22:05:00.003+01:002009-10-16T22:10:55.940+01:00Tube worker suspended over 'rant'Well, well. Someone has caught a member of Tfl staff bullying a member of the travelling public:<br /><br /><a href="http://news.bbc.co.uk/1/hi/england/london/8310436.stm">BBC NEWS | England | London | Tube worker suspended over rant</a><br /><br />This is the kind of <a href="http://openskills.blogspot.com/2008/04/oyster-tfl-no-action.html">awful treatment which was dished out to Justina</a> in an incident for which I, sadly, did not have a video and which the London transport bureaucracy buried with process.<br /><br />A key quote from a Tfl spokesman about this recent incident is:<br /><blockquote>"We do not tolerate members of the public being abusive to our staff but neither will we tolerate members of our staff abusing members of the public."<br /></blockquote>Hmmm. Perhaps Tfl will at last update the posters they have at stations to reflect that, because at the moment they only tell customers it's not OK to abuse Tfl staff, not the other way around. Both are bad, of course.<br /><br />To end on a happy note, friends of ours recently lost a wallet on the tube with quite a bit of cash in it. Well, the wallet was handed in and the staff at the Baker St. lost property office were really nice and helpful about the whole thing ... and all the money seems to be there. Most people really are good.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-3467555969747588272009-09-10T18:29:00.005+01:002009-09-12T10:12:08.190+01:00Who should contribute to the copyrights debate?The UK government have decided, <a href="http://www.bbc.co.uk/blogs/technology/2009/08/peter_just_doesnt_get_the.html">persuaded</a> by the <a href="http://www.timesonline.co.uk/tol/news/politics/article6493525.ece">unelected industry secretary Peter Mandelson</a>, that it would be a good idea to <a href="http://news.bbc.co.uk/1/hi/technology/8219652.stm">make criminals of people who infringe copyright</a>, thus clearly taking sides against the general public in what should be a purely civil matter.<br /><br />It's OK, though. They did engage in consultations first, or so it is reported.<br /><br />But who did they consult? The public? No. The creative individuals who made the works? No. ... they seem to have consulted only with lawyers and the "recording industry".<br /><br />The public have voted largely with their feet, and here is a report on the position of creative individuals in The Register:<br /><br /><a href="http://www.theregister.co.uk/2009/09/10/fac_rant/">Pop stars tell labels to FOAD • The Register</a><br /><br />Perhaps time for MPs to listen to the people who voted for them rather than non-voting corporate entities ... and then perhaps the government might even listen to the MPs?<br /><br />Hope springs eternal.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-24002172787808114252009-09-05T19:32:00.003+01:002009-09-05T19:38:05.163+01:00What should be taught<a href="http://www.ted.com/talks/ken_robinson_says_schools_kill_creativity.html">Ken Robinson says schools kill creativity</a>, and I agree.<br /><br />The link is to a light-hearted but right-on-target talk he gave for TED.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-7729566710893186652009-01-27T22:13:00.002+00:002009-01-27T22:16:36.038+00:00In GemStone selectors >>true and >>false not allowedLesson of the evening ...<br /><br />While moving Slaps (the Smalltalk LDAP library) to GemStone I found that while VisualWorks is quite happy if methods have the selector >>true or the selector >>false, GemStone is not. Darn.<br /><br />Oh, well. Easily fixed.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-28318584454547683072009-01-14T07:50:00.003+00:002009-01-14T08:04:24.325+00:00Adding UDP sockets to SportI am looking at adding <a href="http://en.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a> socket support to <a href="http://wiki.openskills.org/OpenSkills/Sport">Sport</a> (the Smalltalk portability interface), specifically so I can run the <a href="http://en.wikipedia.org/wiki/Syslog">Syslog</a> library in Gemstone.<br /><br />I have posted some initial proposals to <a href="http://groups.google.co.uk/group/comp.lang.smalltalk">comp.lang.smalltalk</a> (cls), so if you are a Sport maintainer for a Smalltalk dialect or if you are just interested, please respond to my post there.<br /><br />BTW, we use cls for Sport because cls is a forum for all Smalltalk dialects and Sport applies to all dialects. There you go.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-50568436123816761172009-01-04T21:16:00.003+00:002009-01-04T21:19:05.702+00:00Popeye the Sailor copyright free 70 years after Elzie Segar's death - Times OnlineHere's a rare thing. Something of value actually enters the public domain (in some parts of the world):<br /><br /><a href="http://entertainment.timesonline.co.uk/tol/arts_and_entertainment/tv_and_radio/kids_tv/article5415854.ece">Popeye the Sailor copyright free 70 years after Elzie Segar's death - Times Online</a><br /><br />... though I fear that Popeye will now be portrayed as a victim of 'weak' copyright protection legislation and used to encourage law makers to extend copyright terms yet again.<br /><br />I hope, instead, that we see some excellent derivative Popeye works over the next year that show value in the economy, and that this strengthens the arguments for resisting copyright term extension, and perhaps even for shortening those terms to more useful levels for the wider economy.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-53455804692678509672008-12-29T22:41:00.005+00:002008-12-29T22:57:33.479+00:00New version of HyperHyper is a Smalltalk library available under the <a href="http://en.wikipedia.org/wiki/LGPL">LGPL</a> which implements RFC 2616 and friends aka <a href="http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a>. You can use Hyper to build a web server or a web client. As an example, you could use Hyper as an HTTP server underneath <a href="http://en.wikipedia.org/wiki/Seaside_%28software%29">Seaside</a> (a rather cool website content library).<br /><br />The new version is 1 340 and can be found in the <a href="http://www.cincomsmalltalk.com/CincomSmalltalkWiki/PostgreSQL+Access+Page">Cincom public Store repository</a>. This version picks up a number of changes made by Dale Henrichs of <a href="http://en.wikipedia.org/wiki/Gemstone_Database_Management_System">GemStone</a>. Thanks Dale!<br /><br />There are no big changes here, but if you happen to want to run a robust HTTP server for Seaside from within your Gemstone database, then this is the version for you.<br /><br />Have fun :-)Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-6268735320691745199.post-63658570806024712952008-11-19T19:51:00.004+00:002008-11-19T20:00:14.548+00:00An interesting detour or threeWell, I've had a very interesting second half of the year. Unfortunately 'interesting' has not included as much OpenSkills and open source coding as I would have liked, but it has included:<br /><ul><li>Home hunting</li><li>Home buying</li><li>A rather exciting trip around the Med' and through the Suez Canal to see Petra, Luxor and Cairo among other things</li><li>Getting the new place ready to live in<br /></li><li>Moving into our new home</li><li>Dad's 8oth (happy birthday dad)</li><li>And some fun with my paid-for work as I'm engaged with a bank at the moment</li></ul>But now we have the boxes unpacked in the new place. The Internet connection is good. So, no excuses. I must get on and do the things I have been promising myself and others. The list is long. ... but there are still some pictures to hang and shelves to put up ... ah, well.Unknownnoreply@blogger.com0