    <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
     <channel>
        <title>ACCU  :: You Write - The Editor Replies</title>
        <link>https://members.accu.org/index.php/journals/879</link>
        <description>Professionalism in Programming</description>
        <dc:language>en-us</dc:language> 
        <dc:creator>Administrator</dc:creator> 
        <admin:generatorAgent rdf:resource="http://www.xaraya.org" /> 
        <admin:errorReportsTo rdf:resource="mailto:webeditor@accu.org" />
       <sy:updatePeriod>hourly</sy:updatePeriod>
       <sy:updateFrequency>1</sy:updateFrequency>
       <docs>http://backend.userland.com/rss</docs>


        <h2>Journal Articles</h2>


<div class="xar-mod-head"><span class="xar-mod-title">CVu Journal Vol 11, #3 - Apr 1999 + Letters to the Editor</span></div>

<table border="0" cellpadding="1" cellspacing="0">
    <tbody>
    <tr>
        <td valign="top">
            Browse in :
       </td>
       <td valign="top">

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c76/">Journals</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c77/">CVu</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c132/">113</a>
                    (22)
<br />

                                            <a href="https://members.accu.org/index.php/journals/">All</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c184/">Journal Columns</a>

                     &gt;                         <a href="https://members.accu.org/index.php/journals/c186/">LettersEditor</a>
                    (132)
<br />

                                            <a href="https://members.accu.org/index.php/journals/c132-186/">Any of these categories</a>

                    -                        <a href="https://members.accu.org/index.php/journals/c132+186/">All of these categories</a>
<br />
</td>
   </tr>
   </tbody>
</table>




<div class="xar-error">
   <p>
 <strong>Note:</strong> when you create a new publication type,
the articles module will automatically use the templates
<em>user-display-[publicationtype].xt</em>
and <em>user-summary-[publicationtype].xt</em>.
If those templates do not exist when you try to preview or display a new article,
you'll get this warning :-)  Please place your own templates in themes/<em>yourtheme</em>/modules/articles . The templates will get the extension .xt there. </p>
</div>
<div class="xar-norm xar-standard-box-padding">
   <h1><strong>Title:</strong>&nbsp;You Write - The Editor Replies</h1>
<p><strong>Author:</strong>&nbsp;</p>
<p>
<strong>Date:</strong> 07 April 1999 13:15:30 +01:00 or Wed, 07 April 1999 13:15:30 +01:00</p>
<p><strong>Summary:</strong>&nbsp;</p>
<p><strong>Body:</strong>&nbsp;<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e20" id="d0e20"></a>Jorg Bauer</h2>
</div>
<p>Dear Francis,</p>
<p>I read the articles about internationalisation with great
interest. To keep the discussion going I thought I write a bit
about an experience that I felt fairly unhappy about. I am sure
there are better ways to solve this and I would really be keen to
get some feedback.</p>
<p>I developed a scientific application using Microsoft's Visual
C++. In this environment all language information can be stored in
the resource file (*.rc). The resource file contains string tables,
menus, bitmap locations and the layout of the dialog boxes (among
other things).</p>
<p>Once I finished the English version of the application I wrote a
small Tcl script to extract the pure strings from the resource file
(and some information from where I extracted them). This
information was then submitted to our translators and once they had
filled in the translations, a further script created the resource
files for the other languages.</p>
<p>Up to now the whole process was fairly easy and fun (I spend
most of my time writing scripts &#9786;). Next I had to spend a bit
of time verifying that in the layout of the dialog boxes there was
enough space for the new strings and made the appropriate changes.
A bit more time was spent to add all the appropriate short cut keys
and then I was ready to ship version one of my software.</p>
<p>Half a year later my client decided to create version two of the
software. This version included quite a few changes, especially in
the dialog boxes. My string extraction script was modified so that
it would not only extract the English strings, but also look at the
previous versions of the resource files and suggest a translation
(about 60% of the strings remained the same). The only area I was
really unhappy about was the fact that I was back at the English
layout for all the dialog boxes. I spent two days verifying each
dialog box and readjusting the layout for larger strings. As I had
done exactly the same work before (at least in 60% of the cases) I
feel that there must be a more efficient way.</p>
<p>I hope some people in ACCU have experience in this area and are
willing to give some feedback. To get them started they might want
to answer these questions:</p>
<p>What techniques are used to keep strings separate from the
remaining code? I'd also be interested in any experience of methods
that do not require a recompilation.</p>
<p>Are there any tools for this type of work?</p>
<p>Any comments on the way I approached the problem?</p>
<p>Jorg Bauer <tt class="email">&lt;<a href=
"mailto:jorg@rabbit.co.uk">jorg@rabbit.co.uk</a>&gt;</tt></p>
<p class="c2"><span class="remark">Well, how about it? Of course
there are other issues such as response keys for menus. y/n works
for yes/no in English but is hardly intuitive when the questions
are asked in French.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e50" id="d0e50"></a>Edward
Collier</h2>
</div>
<p>Dear Francis</p>
<p>Re Silas S Brown's article about X-servers. The company that I
work for also do quite a bit of development work on remote Unix
machines, and we also tried the rather buggy (but free) MI/X.
However, we now have a problem free and easily configured system
called KEA!X from Attachmate Corporation. There is a 90-day timeout
appraisal version available on the web, and we liked the product so
much that we bought some seats. Don't know the price, though (not
my department).</p>
<p>Re the Java thread - I have just started learning this (from a
mainly C, assembler and {makes sign of the cross} Visual Basic
background) and I think it is pretty cool. I would personally
welcome more articles on Java.</p>
<p>Thanks for a great read every month - there aren't many
magazines that provide that much grist for the mental mill at that
price.</p>
<p>Edward Collier <tt class="email">&lt;<a href=
"mailto:ewc@techop.co.uk">ewc@techop.co.uk</a>&gt;</tt></p>
<p class="c2"><span class="remark">Well that last paragraph should
be addressed to the numerous contributors who make it
possible.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e68" id="d0e68"></a>Graham
Patterson</h2>
</div>
<p>Francis,</p>
<p>I made an error in my published letter - Ghostscript is the
product of Aladdin, not Adobe, who produced and defined PostScript.
An easy, but careless mistake.</p>
<p>I liked the suggestion that employers would give people time off
in loo (sic) for coming to one of our events!</p>
<p>Graham Patterson <tt class="email">&lt;<a href=
"mailto:G.A.Patterson@mail.btinternet">G.A.Patterson@mail.btinternet</a>&gt;</tt></p>
<p class="c2"><span class="remark">Yes the trouble with spell
checkers is that one has to get close to the correct spelling
before it offers the appropriate one.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e84" id="d0e84"></a>Daniel
Sandars</h2>
</div>
<p>Francis,</p>
<p>A quick observation.</p>
<p>I work in a research environment where publishing is part of the
job description. There the spirit is willing.</p>
<p>I guess that I wouldn't immediately think that problems and
solutions that I deal with are anything new to expert C++... just
my relative inexperience.</p>
<p>Below is a 'case study' outline of the problem that is taxing my
mind right now. Is there anything 'ultimately' in it as an article
or is it just me on the learning curve.</p>
<p>Daniel Sandars <tt class="email">&lt;<a href=
"mailto:daniel.sandars@bbsrc.ac.uk">daniel.sandars@bbsrc.ac.uk</a>&gt;</tt></p>
<p>As the overwhelming majority are far from being expert in C++ (I
do know a couple of exceptions, but they are always telling me
about new insights they had last week and how stupid that makes
them feel &#9786; Case studies looking for a solution are a
valuable commodity. I append Daniel's case study. It might be best
to discuss any solutions direct with him. An article on the result
might be more appropriate to Overload - but let us get to the
article first.</p>
<div class="blockquote">
<blockquote class="blockquote">
<div class="blockquote-title">
<p class="c3">Case Study</p>
</div>
<p>For instance I am currently trying to put together a program
that analyses a network or in this case a tree such as a process
flow chart enclosed within a system boundary. An example would be a
system whose output was say 1 tonne of milk, which required
transport from farm, etc, etc all the way back to the sources of
the inputs to the farm.</p>
<p>My boss, a mathematician, thought matrix algebra suitable, i.e.
the system is described by Process i by Attribute j by Stochastic
Parameter k (each Attribute can have a mean and a standard
deviation, etc) and subsequent functions are used to map the matrix
on to output vectors.</p>
<p>I however saw the objects, i.e. a base process class and derived
classes for transport steps, various transformation steps, storage
steps, the output step and the inputs steps all contained within a
system class. To illustrate the idea all steps will require energy
but for each the method of calculation is different, in the case of
transport it is the number of tonne-kilometres and type of
transport system in the given scenario, in the case of storage it
is something else. It goes further because the energy may come from
an associate object that contains data on the cost and
environmental burdens of energy supply.</p>
<p>The complicated bit for me is/was finding a tractable method
to:</p>
<div class="orderedlist">
<ol type="1">
<li>
<p>Allow the user at run time to choose which process types
(derived classes) make up the system</p>
</li>
<li>
<p>Allow the user at run time to retrieve or input scenario data
for the processes</p>
</li>
<li>
<p>Allow the user to link them up as they saw fit</p>
</li>
<li>
<p>Validate the linkages and scenario data</p>
</li>
<li>
<p>Compute the process data per scenario,</p>
</li>
<li>
<p>Compute the properties of the system (e.g. total energy
demand),</p>
<p>etc...</p>
</li>
</ol>
</div>
<p>I've got to the point of 'discovering' that I can use
polymorphism to link together derived classes which are determined
at run time via base class pointers of type base class, which is an
abstract class. Now I have to work out how to coherently manage the
tree from somewhere.</p>
</blockquote>
</div>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e137" id="d0e137"></a>Steve
Cornish</h2>
</div>
<p>Dear Francis,</p>
<p>Having read the letter from the recent graduate (and replies) in
issue 11/1 and 11/2 I feel it may be useful to relate my similar
experiences.</p>
<p>I graduated with a Maths degree four years ago this summer. My
first IT job was in Network Support for Devon County Council - a
stroke of luck since they didn't want to pay for anyone skilled,
and I was enthusiastic with computers. This job provided my
stepping stone to my programming career. In March 96 I moved to the
Thames Valley to work on CASE tool integration products. The only
problem was, I was using two in-house languages, although the
management did frequently promise we would move to a commercial
language soon...</p>
<p>Eventually I realised that I was in trouble. Like the graduate
who started this discussion, I was programming, yet I wasn't doing
what I wanted to do. I was heading down the wrong road. So I
learned C from Kernigan and Ritchie. Then I learned C++ from my
Manager's QA notes from X years ago. I polished my skills using the
Meyers books. After a few months and a few helper applications
distributed to my colleagues, my company realised they had
potential in me, and had the grace to send me on QA's excellent
&quot;Advanced C++&quot; course. This was the icing on the cake: the first
thing on my CV that rubber-stamped my abilities. This was just as
well, since the company then got into difficulties. I found myself
a new job with a very good company who believe in people.</p>
<p>I don't believe that just because I know C++ I am an expert
computer user. Commercial languages are the springboards that lead
us to the real work. My old employers frequently used buzzwords
like OO, Methodology, and domain analysis as if invocation could
bring about the practice. It is very hard (as a recent graduate) to
get experience in these skills unless your employer practices them.
This should be borne in mind by CS graduates as well - just because
you've spent 30 hours being told about methods, it doesn't mean you
are an experienced methods practitioner. I can make a balloon dog,
but I'm not a circus entertainer. Unfortunately, this is the
attitude forced into the CS graduates by their lecturers.</p>
<p>The Computer Science/Non-Computer Science degree snobbery must
stop. I know very talented software professionals from both sides
of the fence. Likewise, I know some people who really shouldn't be
allowed in front of a computer from both camps. People should let
ability and enthusiasm speak for themselves.</p>
<p>My advice to the anonymous writer, is to keep at it. Decide what
you want to achieve, then walk that path. The ACCU book reviews are
an excellent resource for a person in your position. Best of
luck!</p>
<p>Steve Cornish <tt class="email">&lt;<a href=
"mailto:SCornish@softwright.co.uk">SCornish@softwright.co.uk</a>&gt;</tt></p>
<p class="c2"><span class="remark">That reminds me that the second
worst delegate I have ever had on a C++ training course had a
degree in Computer Science. Somehow he had managed to acquire this
without ever actually doing any programming. And one of the best I
have ever had was a software retailer who wanted to learn more
about the products he was selling.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e161" id="d0e161"></a>anonymous
mathematician</h2>
</div>
<p>Hi Francis</p>
<p>[I'm the 'anonymous mathematician' wanting to work in C/C++
whose letter was published in C Vu 11.1]</p>
<p>Firstly, let me thank Chris Hills and Stefan Bates for taking
the trouble to respond, and Francis for publishing my letter
despite it being anonymous and not particularly original. Perhaps
because Stefan's response was somewhat more positive, I do not have
any specific comments to make on it, although I will think
seriously about taking his advice.</p>
<p>I would like to respond to a number of points in Chris Hills'
letter.</p>
<p>As for programming being about more than just learning a
particular language, I would certainly not disagree - however, when
it comes to jobs things certainly seem to be described on the basis
of the languages which will be used, which is how I was lead on to
describing things in this way.</p>
<p>My knowledge of general programming techniques is restricted to
what I have been able to pick up from various books and magazine
articles over the years in which I have been computing on an
amateur basis. I would certainly admit that these things are
important, and I am always keen to pick up on new techniques when I
can. Once I have made a little more progress with my C++ I hope to
read up on some of the various object-oriented design
methodologies, as well as such things as patterns.</p>
<p>As for not-so-new techniques which I would presumably have
learned about if I had done a degree in computer science, I have
read one or two books on data structures and the like while at
university, and at some point in the near future hope to find the
time to purchase a suitable text and study this material more
thoroughly. (I appreciate that this is not all the material I will
have missed, but private study can only go so far and I have to
start somewhere.) Of course, I have picked up a moderate amount of
the more basic material over the years, and such simple concepts as
linked lists, hash tables, binary trees and finite state machines
are not unfamiliar to me. This list is not intended to impress
anyone with my incredible knowledge (and a good job too, as I doubt
it would succeed), but just to show that I am not a <span class=
"bold"><b>complete</b></span> novice who has dabbled a bit in
Visual Basic and thought 'hey, this programming lark's easy, I
wanna do C++ and make some <span class="bold"><b>real</b></span>
money'.</p>
<p>When I wrote about entering the profession as a new graduate, I
was thinking of the many times I have seen claims that companies
are happy (some-times even prefer) to take on non-computer science
graduates and train them; in this way I hoped that my non-computing
degree could be circumvented.</p>
<p>Chris concludes by saying 'Otherwise go and get qualified in the
profession in which you wish to work'; could he please tell me what
he meant by this, so that I can give the option some serious
consideration? Does he have some particular kind of formal training
in mind, or is this a suggestion that I should find an employer
with a more suitable environment for learning and support for
acquiring professional qualifications through training and/or
experience? (I understand, for example, that IEE membership can be
obtained either via an accredited training programme or a
sufficient amount of relevant experience.)</p>
<p>Speaking generally now, one thing, which does worry me, is that
although I may continue to gain experience with my present
employer, will it be respected if and when I come to look for
another job? Here I am, with no formal training in software
development, having worked on small one or two person projects with
(in general) similarly qualified people. Surely anyone aware of
this (and I have no desire to misrepresent my experience to any
potential employer) will be inclined to think thoughts along the
lines of 'So what? It just means he's an <span class=
"bold"><b>experienced</b></span> cowboy.'? (They may even be right
to do so; although I try very hard to do things properly, I could
of course be making potentially serious mistakes without realising
it.) I can't help wondering whether this alone means I should leave
my present employer and seek a position where this risk is
minimised. This does not appear to have been a problem for the
reasonable number of people with similar backgrounds to my own who
have left the company to take up other jobs in the software
industry, but this may simply be a reflection on the difficulty of
judging someone's abilities in a relatively brief interview.</p>
<p>Apologies to anyone who thinks, on the basis of this or my
previous letter, that I'm whining; I'm trying very hard to avoid
giving this impression. I'm really just trying to get an honest
opinion of my position and options. My biggest fear is that in
three or four years' time I'll find that it's too late for me to
change the direction of my career and that I'll be stuck in the
software industry but not actually qualified to work in it. Based
on what I've read about the state of the industry in magazines like
C Vu this may not actually stop me earning a living - but from the
point of view of moral and job satisfaction it can hardly be called
a desirable position.</p>
<p class="c2"><span class="remark">Actually, if you have an agile
mind it is not as hard to change direction as many fear. Being told
in my late forties that I could no longer earn my living as a
teacher (because it was damaging my health) was a traumatic event.
I think I have done OK since though I still miss teaching the
young.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e198" id="d0e198"></a>John
Crickett</h2>
</div>
<p>Francis,</p>
<p>I have to disagree with Chris Hills and his comparison of
medicine with programming. Computer Science is still a very
immature subject, when compared to the &quot;real&quot; sciences
(mathematics, physics, medicine etc). Personally I am of the belief
that someone with a good grounding in mathematics (A Level or
above) is suitable for a programming position, after all
programming is not that far from mathematics. Being a recent
(computer science) graduate myself I recall little from my degree
that is relevant to the title &quot;Software Engineering&quot;.</p>
<p>I agree with Chris that there is more to programming than
knowing a language, but I don't feel that the average computer
science degree really offers much to fill that gaps either. Most of
the code presented to us in lectures as example code, would only be
considered suitable for example of how NOT to do it within the
ranks of the ACCU, or my current employers. In particular we failed
to cover the topics that Chris mentions such as: OO, project
control, systems analysis, with only a brief look at structured
design methodologies.</p>
<p>Fortunately I have been working for my current employer
throughout most of my time at university and have had change to
learn on the job. I still feel that the most useful parts of my
education today come from A-level mathematics, physics, and
practical work experience. That along with the forty or so books I
purchased over the years to fill in the gaps, or simply because I
enjoy programming (yes I'm the person that buys (and reads) Peter
van de Lindens books for fun).</p>
<p>Finally I thought it would be interesting to note that when
looking around the people I respect at work, who are considered
experts in one field of software engineering or other they include
two chemistry PhDs, a metallurgist, hardware engineer, physicist,
and a mathematician, I'm still looking for the computer
scientist...</p>
<p>John Crickett <tt class="email">&lt;<a href=
"mailto:john@crickett.demon.co.uk">john@crickett.demon.co.uk</a>&gt;</tt></p>
<i><span class="remark">Of course if we required managers of
software companies to have Computer Science degrees a certain large
company would have to change its management. Now that reminds me,
should we require managers to have degrees in
management?</span></i>
<p class="c2"><span class="remark">On the subject of suitability to
be come a programmer, I think the evidence is that mathematical
talent is not actually a good indicator of talent for programming.
Historically computing was developed by mathematicians which may
mean those with similar backgrounds better understood what was
going on. However one of the great computer scientists, Professor
Hoare, has a degree in Classics and he maintains that is an
excellent training for the subject.</span></p>
<p class="c2"><span class="remark">As a maths graduate I feel
qualified to criticise practitioners of my speciality. Many of them
have very rigid views as how to proceed with solving a problem.
This is not conducive to being a successful programmer.</span></p>
<p class="c2"><span class="remark">Academic teaching of programming
is ghastly. Many heads of Computer Science departments have little
idea about the subject, at least as an engineering
discipline.</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e226" id="d0e226"></a>Silas S
Brown</h2>
</div>
<p>Hi Adrian (Fagg) &amp; Francis,</p>
<p>I found your (Adrian's) multithreading articles in C Vu really
interesting, especially since the topic has recently been covered
on the course I am doing. I understand the lecturer, Jean Bacon,
wrote a book &quot;Concurrent Systems&quot; (second edition, Addison Wesley
1997) which explains it in more detail, and it has been translated
into a number of languages. (Aside: Wouldn't it be nice if it were
easier to find out what translations of a book there are out there
and to get hold of one? I've lost count of the number of times I've
wanted to say to someone &quot;if you were better at English I'd suggest
this book&quot;.)</p>
<p>About priority inversion, there is another way of dealing with
it besides minimising the time that low priority threads lock
resources (which is not 100% reliable because the low priority
thread may get interrupted by a medium priority thread), but you do
need some control over the scheduler. When working out the priority
of a thread, take the maximum of its assigned priority and the
priorities of any threads that are waiting on the resources it
holds. That means, if a high priority thread is waiting for a
resource held by a low priority thread, the low priority thread is
executed at the high priority so it finishes with the resource as
quickly as possible. You then need to interrupt it and put its
priority back down.</p>
<p>Of course, you can only do that if you are writing the
scheduler, which is generally not the case if you are using OS
calls. (I understand that the OS they are developing at Cambridge,
called Nemesis, allows the programmer much more flexible control
over the scheduling.) If you write your own scheduler or let your
runtime library do it, besides it being a more complicated
approach, if any one of your threads blocks at the OS level then
they all do.</p>
<p>One way you can cope with deadlocks is to give your resources an
ordering and rigorously stick to that ordering when allocating
them; if you find you just have to break the ordering, then you'd
have to abort the process and try again. Some schedulers can have
&quot;deadlock detection&quot; code that can tell deadlocked processes to
abort and retry. This essentially works by pretending all the
non-blocked threads can finish immediately, seeing which other
threads would be unblocked if that happened, iterating until you
can't do any more and the ones left are deadlocked. If you do
implement some kind of abort mechanism then you may need to worry
about cascading aborts, if some other process has seen the
intermediate state of a process that has had to be aborted. You may
need to worry about livelock as well as deadlock. This is when
events happen so fast that your program does nothing while trying
to deal with them - while it is deciding how to deal with one,
another happens. In this situation you may need more locking.</p>
<p>Silas S Brown</p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e241" id="d0e241"></a>Bill
Sparrow</h2>
</div>
<p>Hi Francis,</p>
<p>I was amused to see the picture of the William Gates Computer
Science Building, Stanford University on the front cover of C Vu
11.2.</p>
<p>It appears that Stanford are keeping up the Microsoft tradition
in two respects. The building would appear to be a beta version, or
maybe even an alpha version, judging from the plastic cones and
yellow tape. Also they appear not to have performed an end user
requirements analysis resulting in a lack of cycle racks, with
bicycles therefore propped up or lying on the ground in front of
the building. 8-)</p>
<p>Bill Sparrow <tt class="email">&lt;<a href=
"mailto:bsparrow@cix.co.uk">bsparrow@cix.co.uk</a>&gt;</tt></p>
<p class="c2"><span class="remark">The original photo reveals even
more. The whole of the tier of potential windows level with the
dedication are simply blank 'concrete'J Sort of the building
equivalent of a 'blue screen' event?</span></p>
</div>
<div class="sect1" lang="en">
<div class="titlepage">
<h2><a name="d0e257" id="d0e257"></a>Alec
Ross</h2>
</div>
<p>Francis,</p>
<p>I seem to recall that you asked for feedback on my use of the
AWL scheme giving 25% discount to BCS members.</p>
<p>I have just used it, ordering several books by email, paying by
Visa. The advertised delivery charge is &pound;2.50. I was not
charged for delivery, perhaps because of the value of the order
(about &pound;250 after discount).</p>
<p>Delivery was promised as 7-10 days maximum. It was made on the
8th day.</p>
<p>There was slight manufacturing damage on one of the books. AWL
have promised a replacement.</p>
<p>In general I am happy to support Blackwells and any other
company that supports the ACCU. But, equally, I will not pass up a
significant discount.</p>
<p>Alec Ross <tt class="email">&lt;<a href=
"mailto:alec@arlross.demon.co.uk">alec@arlross.demon.co.uk</a>&gt;</tt></p>
<p class="c2"><span class="remark">Thanks for the feedback. Of
course sane people take such opportunities for substantial savings
and no-one should blame them. My problem is with the ethics of the
supplier. This kind of offer undermines the book retailers. I value
local bookshops and disapprove of things that make their continued
existence less likely. What do others think?</span></p>
</div>
</p>
<p><strong>Notes:</strong>&nbsp;</p>
<p><em>More fields may be available via dynamicdata ..</em></p>
</div>
</channel>
</rss>
