<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>midnight muse &#187; Business</title>
	<atom:link href="http://midnightmuse.com.au/category/business/feed/" rel="self" type="application/rss+xml" />
	<link>http://midnightmuse.com.au</link>
	<description>Richard Wright's musings about software and other things that take his fancy</description>
	<lastBuildDate>Sun, 26 Feb 2012 21:53:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>New Printer &#8211; Canon MX850</title>
		<link>http://midnightmuse.com.au/2009/06/06/new-printer-canon-mx850/</link>
		<comments>http://midnightmuse.com.au/2009/06/06/new-printer-canon-mx850/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 01:19:44 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=173</guid>
		<description><![CDATA[I recently bought a new printer and I can't speak highly enough of it <a href="http://midnightmuse.com.au/2009/06/06/new-printer-canon-mx850/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We recently moved into another house and I decided that, at last, I would do something about our printers. I had a Brother printer, I don&#8217;t remember the model. It was a multi function machine and it did a reasonable job until recently. Just lately you had to stand next to it and hold the print cover down before it would print. This was my second Brother. The first packed up after doing in excess of 10,000 scans which i thought wasn&#8217;t bad. The second Brother was cheaper than the first, and not as fast, but still reasonable.</p>
<p>My wife had an old Canon. I don&#8217;t remember its model number either, but it was old and it was one of those small printers that you can get for around $50 these days. It cost probably 3 times that when she bought it. It was very slow but it never missed a beat. The problem with it was that it was set up in her make-shift office, but she worked on a laptop, often in the lounge room in front of the heater. She would then carry her laptop to the printer, plug it in, and print.</p>
<p>I decided to end all this. So I bought a Canon MX850. My son had a slightly different model Canon and he said it did everything he wanted. His model was superceded by now so I had a look at what was on offer.</p>
<p>This is what I needed. First I had to be able to network the printer. I print from my two desktop PCs which are networked, my laptop and my wife&#8217;s laptop. Second, I wanted to be able to print onto a CD or DVD. In the past I have delivered software to clients on CDs which I have then written on. Not a very professional look. Third, I wanted to be able to print duplex, or both sides of the paper. I know that you can print on one side, take the paper out, turn it over, and print the other side. I always forget which way to put the paper back in. So duplex printing solved that for me.</p>
<p>The Canon does all of that. The duplex printing is slow. The dialog box says that after it has printed one side it is waiting for the ink to dry before feeding it back in. I can live with the low speed. I don&#8217;t do duplex very often, but there are times when it is very useful and it does this automatically.</p>
<p>The print quality on the CDs is good, and easy to do. The printer comes with a program called CD Label Print. It is not very sophisticated or feature rich but it does the job. The version that came with the printer is out of date but a later version is available. I am sure that there are other CD printing software packages on the net, and I may look for one at some stage. But at the moment it produces CDs that are much more professional looking than my handwritten scrawl.</p>
<p>The printing review web sites may have things to say about the print quality. I am not a graphic artist and nearly all the printing I do is straight text. I have no complaints about the quality.</p>
<p>The printer, like many others these days, has options for printing photographs from digital camera cards. I haven&#8217;t tried this and I am not likely to. It seems a very expensive way to get photos. But if you need a photo in a hurry you can do it.</p>
<p>The final thing that I don&#8217;t know yet is the cost of ink. I have bought ink but I haven&#8217;t used the printer for long enough to work out the cost. But it is a bit like buying petrol for the car. It is one of the costs of doing business so you pay for it. And it certainly isn&#8217;t a major cost.</p>
<p>If you are after a multi funtion printer that does everything and does it well then the Canon is worth a look.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2009/06/06/new-printer-canon-mx850/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filling the Songs ListBox</title>
		<link>http://midnightmuse.com.au/2008/08/29/filling-the-songs-listbox/</link>
		<comments>http://midnightmuse.com.au/2008/08/29/filling-the-songs-listbox/#comments</comments>
		<pubDate>Thu, 28 Aug 2008 23:45:05 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Presenter]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=128</guid>
		<description><![CDATA[It is time to show a collection of songs <a href="http://midnightmuse.com.au/2008/08/29/filling-the-songs-listbox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After the last post I saved some songs and built a list box to hold the song titles. I should say a little about that. These days I don&#8217;t write any SQL. I know that I still can write it because I wrote a simple SQL query for someone else a week or so ago. But I let someone else do it. By that I mean that I use an Object Relational Mapper. In my case I use <a href="http://www.llblgen.com">LLBL Gen Pro</a>.  There are others out there but I have been using this for a few years now and I quite like it.</p>
<p>Some would suggest that using an O/RM is overkill for such a simple database schema. And it is. At this stage I don&#8217;t even know if I am going to use a database. But I have gotten so used to querying my databases through LLBL Gen that it is easier to just use it.</p>
<p>To get a collection of songs is pretty easy.<br />
<code><br />
public EntityCollection GetAllSongs()<br />
{<br />
EntityCollection songs= new EntityCollection(new SongEntityFactory());<br />
ExcludeFieldsList exFields = new ExcludeFieldsList();<br />
exFields.Add(SongFields.Lyrics);<br />
ISortExpression sorter = new SortExpression(SongFields.Title | SortOperator.Ascending);<br />
using(DataAccessAdapter da = new DataAccessAdapter())<br />
da.FetchEntityCollection(songs,null,0,sorter,null,exFields);<br />
return songs;<br />
}<br />
</code><br />
This code is pretty straightforward. Line one creates a new collection of songs. The sorter says to sort on the Title field. LLBL Gen allows to different modes of data access: Adapter and Self-servicing. Adapter uses a DataAccessAdapter to fetch the entities. Self-servicing has a collection class for each type of entity and there are methods on the collection class to get the entities to fill the collection. This is simple enough to probably warrant using Self-Servicing, but again, I have been used to using Adapter, and so this is what I went with. It may change later, but that is not really an issue. At this stage I just want to be able to populate a list box.</p>
<p>The second line in the method is interesting. I said earlier that I am still uncertain if I will be using a database. But if I stick with it, I don&#8217;t know if I will populate the listbox with an entity collection. Performance wise it would probably make more sense to use a read only list. LLBL Gen will create TypedList classes for you, or you can generate your own dynamic list. But at the moment I just created a collection to see how it all hangs together. But doing this means pulling in a lot of data from the database that I don&#8217;t want. The database table for song has fields for Title, Author and Lyrics. The Title and Author are varchar(50) at the moment. That was the default size in SQLServer and it will do to start with. Lyrics, however, is much bigger. How big should it be? I don&#8217;t know yet, so I have set it to varchar(Max). The second line in the method says don&#8217;t get back the lyrics field. When I want to show the lyrics for a particular song I call another method to get the words.</p>
<p>So I saved a few songs and populated a listbox. Populating the listbox in WPF is pretty easy. I used a mixture of procedural code and xaml to accomplish it. My methods for accessing the database, that is, the code above, is held in a separate project called Tasks, for want of a better name. The songs listbox is held in a separate WPF control called SongListCtrl. To fill the listbox if use the following method<br />
<code><br />
private void FillSongsListBox()<br />
{<br />
songs = tasks.GetAllSongs();<br />
songsListBox.ItemsSource = songs;<br />
}<br />
</code><br />
The ItemsSource property binds the songs collection to the songsListBox. In the Xaml code I set the DisplayMemberPath to Title and that is what is shown in the listbox.</p>
<p>Now comes the hard part. I have a list of songs and I need to display the words. The first thing is to go back to database and get the Lyrics for that song, as explained earlier. I also created a new class SongSelectionEventArgs, which derives from EventArgs and has a property, SongEntity. The EventHandler is done with the standard generic event declaration<br />
<code><br />
public static event EventHandler SelectSong;</p>
<p>public static void OnSelectSong(object sender, SongSelectionEventArgs e)<br />
{<br />
if (SelectSong != null)<br />
SelectSong(sender, e);<br />
}<br />
</code><br />
Now the window that contains the SongListCtrl can listen to changes in the listbox selection. This is all pretty standard stuff. In WPF it works exactly the same way as in winforms. Although there are other ways to handle behaviour, for example using commands as I mentioned in the last post.</p>
<p>It is now time to show the songs on the monitor, and on a separate monitor, which in production will be a projector. This was a major problem as we will see in the next post.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2008/08/29/filling-the-songs-listbox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who would be a programmer?</title>
		<link>http://midnightmuse.com.au/2007/05/22/who-would-be-a-programmer/</link>
		<comments>http://midnightmuse.com.au/2007/05/22/who-would-be-a-programmer/#comments</comments>
		<pubDate>Tue, 22 May 2007 07:14:23 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2007/05/22/who-would-be-a-programmer/</guid>
		<description><![CDATA[<p>Is computer programming really a lousy way to earn a living?</p> <a href="http://midnightmuse.com.au/2007/05/22/who-would-be-a-programmer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I came across <a href="http://www.halfsigma.com/2007/03/why_a_career_in.html">this rant</a> today and decided to share my thoughts.</p>
<p>The first thing to say is that if this guy doesn&#8217;t want to be a programmer then he should change jobs. It&#8217;s pretty easy, really. You do the work or you get out and do something else.</p>
<p>But there is one specific point he makes.</p>
<h3>Temporary nature of knowledge capital</h3>
<blockquote><p>In computer programming, the old knowledge becomes completely obsolete and useless. No one cares if you know how to program in COBOL for example. Itâ€™s completely useless knowledge.</p>
<p>
So what advantage does a 60-year-old .NET programmer have over a 27-year-old .NET programmer when they both have, at most, 5 years of experience doing .NET programming? Absolutely none. Iâ€™d make the case that itâ€™s better to hire the 27-year-old because he is still at the stage of his career where he enjoys the stuff and is therefore more motivated to learn and work harder, while the 60-year-old is surely bitter about the fact that heâ€™s getting paid less than the younger programmers. No one wants a bitter employee.
</p>
<p>
This assumes that the 60-year-old programmer has even learned .NET programming. Every time a new language or technology comes out, the programmer faces a fork. In one direction he gets to work with the new technology, and in the other direction he continues working with the old technology for too long and therefore falls too far behind to catch up. The older you get, the easier it is to wind up going the wrong way when you reach one of these forks. Because as hard as it may be for a 22-year-old to imagine, as you get older your desire to completely relearn everything decreases, so you are likely to succumb to the temptation of staying with the familiar technology for too long.</p>
</blockquote>
<p>I should take offence at this. I am not yet 60, but it isn&#8217;t all that far off.</p>
<p>There are two matters to deal with here. First, 60 year olds are not necessarily brain dead. I have a friend in his mid 80s who, among other things, produces radio programs. He does this from a studio/office at the back of his house. It is actually a converted double garage. He has networked four PCs and connected them to his recoding stuff (I don&#8217;t know what it is actually called), and produces his programs onto CD or laptop for delivery to the radio station. He is a very technically savvy guy. Age has not wearied him.</p>
<p>Computer science is not a modern invention. Alan Turing has been dead for over 50 years. Charles Babbage for over 130. In more modern times Edsger Dijkstra died at age 72 back in 2002. Martin Fowler has been writing computer programs since 1980. Grady Booch, one of the developers of the Unified Modeling Language is 52 years old and still going strong.</p>
<p>Computer Science is old, and so are a number of its practitioners.</p>
<p>And there is no evidence that older people, and to some in the computer industry that is anyone over 35, have lost their capacity or desire to learn.</p>
<p>But the second. more serious, problem with the article is the assertion that computer knowledge is temporary. The problem with this is that the writer is obviously a coder, not a software developer. If the problem domain doesn&#8217;t fit into his computer language then he is in trouble.</p>
<p>But that is not what software development is about. Coding in a particular language is irrelevant. I would certainly care that someone knows how to program in COBOL, for example. It is a lot easier, quicker, to teach someone the ins and outs of .NET (which is the framework he was speaking of) than it is to teach them about functional programming. The language doesn&#8217;t matter.</p>
<p>Indeed, for many developers, the code doesn&#8217;t matter for a lot of the time. <a href="http://www.stevemcconnell.com/">Steve McConnell</a>, a well known and award winning author, has noted in his best seller <em>Code Complete</em>, that the amount of time spent coding by the average programmer is between 15% and 25%. The rest is going to meetings, talking to customers, design, analysis, etc. All the things that a software developer needs to do, whether he is going to ultimately code in COBOL or Java or C#.</p>
<p>Of course the IT industry is changing. Computers are getting more powerful. Languages are evolving. Software paradigms (I swore to myself I was never going to use that word!) are changing. We have gone from spaghetti code to functional programming, to object oriented and are heading toward aspect oriented programming. More changes will emerge in the future. So what? That is all part of the fun of it. But what we learnt in the past is still relevant.</p>
<p>One of the best selling IT books today is Fred Brookes&#8217; <em>The Mythical Man Month</em> It was originally written in 1975, and is still relevant. His essay <em>No Silver Bullet</em>, written in 1987 and included in the 20th annivserary edition of his book, is still being debated, quoted and usually agreed with.</p>
<p>Articles like the one I read today just make me cranky. End of rant.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2007/05/22/who-would-be-a-programmer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When there&#8217;s no FM to FR</title>
		<link>http://midnightmuse.com.au/2006/06/09/when-theres-no-fm-to-fr/</link>
		<comments>http://midnightmuse.com.au/2006/06/09/when-theres-no-fm-to-fr/#comments</comments>
		<pubDate>Fri, 09 Jun 2006 04:39:13 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/06/09/when-theres-no-fm-to-fr/</guid>
		<description><![CDATA[Open source software is great, sometimes. <a href="http://midnightmuse.com.au/2006/06/09/when-theres-no-fm-to-fr/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I love open source software. The whole notion of a bunch of guys (well, they are mostly guys, with a few notable exceptions), often spread around the world, collaborating to produce a useful piece of software, often with little or no chance of being properly rewarded for their efforts, gives you a warm and fuzzy feeling.</p>
<p>And there have been some very successful open source projects. I suppose the most famous is Linux. I don&#8217;t know how many copies of Linux are out there, but it is well into the millions.</p>
<p>One common problem with open source software is a lack of documentation. The software is developed by programmers, and programmers notoriously hate writing documentation. To overcome this many open source projects have active forums which provide all kinds of good advice to novices.</p>
<p>Unfortunately, far too often, the answer to a question is along the lines of RTFM. Computer geeks all love acronyms and for anyone out there who is not part of the cognoscenti, RTFM stands for Read The F***ing Manual. This is lousy advice in most cases for a number of reasons. Often the precise information is difficult to find, and in many case there just isn&#8217;t a FM to FR.</p>
<p>All this arose the other day when I decided that I had to get my business site up and running properly again. At the moment it is an old static HTML site that I built some time ago, and now many of the links are broken. Previously the site was running <a href="www.xaraya.org">Xaraya</a>, possibly one of the best Content Management Systems around, and itself an open source project.</p>
<p>I could have gone back to Xaraya, and I may, in fact, do that. However, I thought that I might look at what else was around, just to get some experience in other CMSs, and it is always good to have a knowledge of a number of systems so as to be better able to advise clients. The other thing is that Xaraya is very big and very powerful, and it may be overkill for what I want. My business site will be much more static than this blog.</p>
<p>One that I looked at was <a href="www.etomite.org">Etomite</a>. Now this looks to be a pretty good CMS. But all CMS run a bit differently and so I looked at the documentation. A lot was missing. That&#8217;s OK, it is open source and they have forums, or is that fora?</p>
<p>Here is what I found on the forums. A user who is described as an Etomite newbie, and so obviously in need of help asked:</p>
<blockquote><p>Where can I download templates for etomite?</p></blockquote>
<p>The answer from one of the founders of Etomite &#8211;</p>
<blockquote><p>Ummm &#8211; silly question, but did you actually look where you are posting?</p></blockquote>
<p>And another user asked how he or she could install the templates. A reasonable question, I would have thought. The answer given by the same co-founder &#8211;</p>
<blockquote><p>I suggest you read the Etomite Documentation</p></blockquote>
<p>Now I followed the link to the supposedly helpful Etomite Documentation and found nothing that would help the enquirer.</p>
<p>I will now tell you another story. I use an O/R mapper for database application development. The one I use is <a href="http://www.llblgen.com">LLBLGen Pro</a>. This, in its original form, was an open source project. It is now a commercial product, although very reasonably priced. It has hundreds of pages of documentation, but just in case that&#8217;s not enough, it, too, has a very active forum.</p>
<p>The developer of LLBLGen Pro, Frans Bouma, never writes RTFM replies to queries. Sometimes he refers to the documentation, but everytime the link is to the specific page in the documentation that is relevant to the question. And very rarely is that reference the only answer given. Let me give you an example. A user had a problem and said &#8211;</p>
<blockquote><p>I discovered some strange behaviour in my application. etc etc</p></blockquote>
<p>He then went on to describe the behaviour. There followed a number of posts from the user and Frans as they tried to find the cause of the strange behaviour. After 18 posts the user said &#8211;</p>
<blockquote><p>It was my mistake. Problem solved</p></blockquote>
<p>What did Frans do? Rip his hair out. Perhaps, he lives in Holland and maybe they do that there. However, he replied &#8211;</p>
<blockquote><p>ok, I&#8217;m glad it&#8217;s solved now.</p></blockquote>
<p>This was not an isolated incident. It happens all the time. And of course, the post was not a waste of time for other readers, we all learnt something new about the product.</p>
<p>I will continue to use LLBLGen Pro, and soon I will upgrade to version 2, as soon as it is released, which will be very soon, the beta is out and looks very good. Upgrading will cost me money, but money well spent.</p>
<p>As much as I like the look of Etomite, and even though using it will cost me nothing, I think I will leave it alone. I can do without the attitude.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/06/09/when-theres-no-fm-to-fr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rebuilding Site</title>
		<link>http://midnightmuse.com.au/2006/03/12/rebuilding-site/</link>
		<comments>http://midnightmuse.com.au/2006/03/12/rebuilding-site/#comments</comments>
		<pubDate>Sun, 12 Mar 2006 06:01:22 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/03/12/rebuilding-site/</guid>
		<description><![CDATA[<p>Every website needs a rebuild once in a while &#8211; even a new site.</p> <a href="http://midnightmuse.com.au/2006/03/12/rebuilding-site/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some time towards the end of last year I decided to trasform my business site into a strictly business site and separate the articles into a blog. So I registered this name and thought about doing it.</p>
<p>Other things got in the way and it never seemed to get done.</p>
<p>But two things spurred me into action. First my business site <a href="http://midnightsoftware.com.au">Midnight Software</a> got broken &#8211; I don&#8217;t know how, and it doesn&#8217;t really seem to matter anymore. One day it was working, and the next I got PHP error messages. And I don&#8217;t know why.</p>
<p>The second thing is that I was asked to build a blog site for someone else. And I thought that if I am going to build one for them then I may as well build my own. And so I have.</p>
<p>Most of the articles from Midnight Software have been moved here. The Midnight Software site has not been fixed, rather I have replaced it with an old version using static html.</p>
</p>
<p>This means that there are some links on the midnight software site that don&#8217;t work, but I hope very few, and I will go through those soon and fix them. There are also some links here that are likely to be broken because the site structure on this blog is different from the old structure. I will fix those in the coming days. There are also a few things which are incomplete at the moment.</p>
<p>This site uses <a href="http://wordpress.org">WordPress</a> which I think is probably the best blogging software available. It helps if you know a bit of PHP, or at least are comfortable with monkey-tail programming languages &#8211; that is, any language which uses { and }, like C or Java, or PHP. But you don&#8217;t need to know much, just enough to understand what the different templates are doing. A knowledge of HTML and CSS is also invaluable.</p>
<p>What about the old site? Well I am unlikely to leave it as it is. Even though it is now likely to remain much more static than in the past I don&#8217;t think I want it to remain a static, purely HTML site. I am likely to move to a Content Management System (CMS) once again.</p>
<p>Previously I used <a href="http://xaraya.com">Xaraya</a>, and I am more than happy with it. I have recommended it to clients, and I will continue to do so. But it might be a bit big for my needs. There is also the possibility that I will try out another CMS. <a href="http://drupal.org">Drupal</a> is one that I have wanted to use, but the latest version requires PHP version 5, and I am only using 4.3 here. So I am unsure.</p>
<p>The other possibility is to build my own, and that is certainly tempting.</p>
<p>More on this when I make a decision.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/03/12/rebuilding-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My cheese hasn&#8217;t moved</title>
		<link>http://midnightmuse.com.au/2006/02/26/my-cheese-hasnt-moved/</link>
		<comments>http://midnightmuse.com.au/2006/02/26/my-cheese-hasnt-moved/#comments</comments>
		<pubDate>Sun, 26 Feb 2006 01:21:35 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/02/26/my-cheese-hasnt-moved/</guid>
		<description><![CDATA[<p>The concept of moving cheese has spawned a new management philosophy based entirely upon a false premise.</p> <a href="http://midnightmuse.com.au/2006/02/26/my-cheese-hasnt-moved/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some years ago I worked for a large Australian company which will remain nameless. During a four or five year period of tumultuous upheaval at this company, the ramifications of which are still being felt, we had a succession of IT managers come and go. And each manager immediately introduced <em>The Next Big Thing</em> as they saw it. I suppose they had to do something to establish their authority at the outset, much like a cat marking its territory.</p>
<p>
The occasional IT manager would talk to us about a paradigm shift, but no one took them very seriously, and they got shifted out the door pretty quickly.</p>
<p>
One of the managers supplied everyone in IT, a couple of hundred of us, project managers, systems analysts, programmers, business analysts, admin assistants &#8211; everyone &#8211; with a copy of the book <a xhref="http://www.whomovedmycheese.com/">Who Moved my Cheese</a> by management &#252;ber guru, Dr Spencer Johnson.</p>
<p>
The basic premise behind the book is that everything is changing and you had better accept it. Fair enough, things are changing. The only constant is change. etc, etc, etc.<br />
But as a management philosophy it is flawed. The role of management hasn&#8217;t changed in thousands of years. The first project manager I can think of was Noah. He had a pretty major task building an ark. It was roughly 450 feet, or around 135 metres long. A pretty big boat. And this was a major change for not only Noah, but those who were involved in the project. No one had built a boat, of any size, before.</p>
<p>
What were his constraints? Build it on time and to the specs. We&#8217;ve all heard that before. But the building was a technical matter. Getting it done on time was the management. And so it is today. The only, that&#8217;s right, <strong>only</strong> problem facing management yesterday, today, and I am sure tomorrow, is management of the people with the technical skills to get the job done.</p>
<p>
You may be a small businessman or woman and you say that you are managing your business but you are working alone. I know how you feel, that is exactly the same position that I am in. But I am not managing. Most of my time I am programming or building web pages. They are technical skills. I have had to learn new skills, such as using my time wisely.</p>
<p>
Some people call this Time Management. It is a misnomer. How can you manage time? It just passes. You can use it wisely, or foolishly. But that&#8217;s not management. It is discipline,to some extent, and a technical skill to some extent.</p>
<p>
Management is all about dealing with people &#8211; their problems, their aspirations, what motivates them and what disillusions them. We have certainly learnt, over the years, better ways to deal with people. Throwing books at them which tell them their cheese has moved doesn&#8217;t seem to me to one of the smartest ways to deal with intelligent people.</p>
<p>
The cheese is exactly where it has always been. People are intelligent creatures who need to be treated with respect. If you respect them you will usually find that your respect is not misplaced. And if you value their contribution you will usually find that their contribution is valuable.</p>
<p>
When change does occur, and it will, equip your respected and valuable staff with the technical skills they need.</p>
<p>
What do you do with the cheese? Serve it with crackers on Friday afternoon.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/02/26/my-cheese-hasnt-moved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Licences</title>
		<link>http://midnightmuse.com.au/2006/02/24/software-licences/</link>
		<comments>http://midnightmuse.com.au/2006/02/24/software-licences/#comments</comments>
		<pubDate>Fri, 24 Feb 2006 01:19:23 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/02/24/software-licences/</guid>
		<description><![CDATA[<p>The current software activation procedures leave a lot to be desired.</p> <a href="http://midnightmuse.com.au/2006/02/24/software-licences/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I recently had some serious computer problems. I won&#8217;t go into the details but I had to reload all my software. This, in itself, is a bit of a nightmare. First there is the downtime while the computer plays up and you try to find out the cause. Then you set up a new PC and have to go through the whole business of getting it working how you want.</p>
<p>
But the worst aspect is activating your software. When I plugged in my key for Windows XP Pro I got some arcane message accusing me of criminal behaviour and suggesting I follow their detailed procedure if I wasn&#8217;t committing fraud and other high crimes and misdemeanours.<br />
This entailed entering 48 numbers via the internet and then being told that it didn&#8217;t work and being given a phone number. A very pleasant voice recording, who refused to answer any of my questions, but at least did not take offence at any of my suggestions, told me to enter the same 48 numbers over the telephone. Naturally this had no effect either, so I was put on hold.</p>
<p>
Eventually a real person, or so I assume, gave me some more numbers and told me that if I loaded the software again I would have to go through the same process.<br />
But I wasn&#8217;t finished. I then tried to activate Visual Studio .NET. Naturally I had the same problem and went through the same process. But I got some coffee first. But this time it didn&#8217;t work and I was given a new product key.</p>
<p>
However, in order for the new key to work I had to uninstall VS, and re-install it. It comes on 6 CDs. That was a pleasant way to waste an entire morning.</p>
<p>
I have paid for this stuff. Why the hell won&#8217;t they let me use it? And when they ask why I am re-installing the software you have to tell them something or else they won&#8217;t give you the magic numbers. But it&#8217;s none of their damn business what I do with my PC.<br />
I am all against piracy. But this is not the way to stop it &#8211; surely. There must be a better way.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/02/24/software-licences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Software</title>
		<link>http://midnightmuse.com.au/2006/01/16/creating-software/</link>
		<comments>http://midnightmuse.com.au/2006/01/16/creating-software/#comments</comments>
		<pubDate>Mon, 16 Jan 2006 00:52:37 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/01/16/creating-software/</guid>
		<description><![CDATA[<p>Creating software is like taking a trip to another world.</p> <a href="http://midnightmuse.com.au/2006/01/16/creating-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been thinking a bit lately about the process of writing computer programs. It is a process with many phases, often overlapping and always intertwined.</p>
<p>
I had thought that writing software was different from any other occupation, but now I am not so sure &#8211; I don&#8217;t have lot of experience of too many other occupations. Sure, I have done other things, but not for a long time, and there a many thousands of other occupations that I know nothing about. So maybe it isn&#8217;t all that different. I don&#8217;t know.</p>
<p>
But what I do know is this &#8211; when you create software you have an almost out-of-body experience. You are certainly in another world.</p>
<p>
The first step is getting the requirements. For the freelance developer like me that is, in itself, an unusual experience, and I have to say a very enjoyable one. I don&#8217;t much like doing business analysis, but I do like meeting new clients and talking to old clients about new projects. There are two aspects to this.</p>
<p>
First, you get to meet all sorts of different people. I spend most of my time locked in my office talking to no one. It is a welcome change to talk to real people. Sometimes you forget that other people exist. (If my wife reads this, please note carefully <strong>I don&#8217;t mean you</strong>.)</p>
<p>
The other good thing is that you find out all about their business through the programs that they need written. You sometimes see small businesses around and you think, &#8220;I could do that.&#8221; But when I talk to these people and see what is involved in what they do I soon realise that there is no way that I could do that.</p>
<p>
Then comes the writing of the business requirements. The less said about that the better. But it must be done. Well, if you plan on writing the program that the client is expecting then it must be done.</p>
<p>
Now we get on to the fun stuff. Systems Analysis and programming. It depends upon the size of the job as to how much I separate these two. I usually do them together. Do some anaylysis, then do some coding. Analyse the next component. Do the coding. Of course, for larger or more complex jobs you need to get your analysis down pat earlier on because the components will each have an impact on each other. But for smaller jobs I can usually keep track of that through my business specs.</p>
<p>
When you are in the process of putting the software together you seem to move into an almost transcendental plane of existence. You aren&#8217;t dealing with real-world objects. Oh, they may be modelled on real world objects but you can&#8217;t go to the cupboard and pull out, for example, an inherited class. Nor is your car likey to undergo polymorphism, unless you fell asleep at the wheel.</p>
<p>
And the writing. It is in a strange language. Once you get on a roll you are thinking in that language. I work at home, and if my wife comes into my room when I am in the middle of something relatively complex it is very difficult to talk to her. My mind is thinking in English. It is thinking in VB.NET or PHP or, heaven forbid, Prolog.</p>
<p>
And the downside is that once you are interrupted and brought back to the real world it takes a long time to get back into the programming language world you previously occupied. I think a 2 minute interruption probably means 20 minutes downtime.</p>
<p>
This has taught me a serious lesson. If you are in the middle of something complex then stay until you have it solved. I don&#8217;t know how many times I have been stumped and thought &#8220;I&#8217;ll get a cup of coffee and then figure this out.&#8221; You get the coffee but by then all the thoughts in the <em>other</em> language have left you. You are back in real time. And it takes enormous effort to go back.</p>
<p>
The problem with all this is that sometimes in the middle of a large project I dream in code, and  in my dreams the answers are all very straightforward. But come the light of day those solutions were utter rubbish.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/01/16/creating-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estimating</title>
		<link>http://midnightmuse.com.au/2006/01/15/estimating/</link>
		<comments>http://midnightmuse.com.au/2006/01/15/estimating/#comments</comments>
		<pubDate>Sun, 15 Jan 2006 00:51:11 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/01/15/estimating/</guid>
		<description><![CDATA[<p>How long will it take to write a program?</p> <a href="http://midnightmuse.com.au/2006/01/15/estimating/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Writing computer programs is not a particularly difficult thing to do. The level of difficulty can depend upon where the programmer sits within the organisation. If he or she is a code cutter then the job is to produce the code according to the specifications.</p>
<p>
Cutting code is not difficult. It is a technical skill which can be acquired by any reasonably intelligent person, although it helps if they have a mindset attuned to logical thinking. This is in no way meant to denigrate those who write code. But writing computer code is a skill, a highly technical skill, but once learned it is then applied to the problem at hand. And, of course, some computer languages are harder to learn than others, and a lot of programmers these days need to be proficient in a number of languages.</p>
<p>
Specifying the application is somewhat more difficult. Although in many places the analyst and the programmer are one and the same person. They just need to remember which hat to wear at any particular time.</p>
<p>
Systems analysis is still, however, a skill which can be learned. At times there may be a bit more art than science. But that may be because it is sometimes difficult to articulate why we so something a certain way. Experience tells us that this is the best way to go and so what appears to be an art, or some inate ability is really the culmination of years of experience.</p>
<p>
And somewhere within any IT shop there is somebody who calculates what they are going to charge the client to get the job done. Sometimes a number of people work on calculating this figure. Business analysts, systems analysts, project managers, to name a few. But at some stage a figure is arrived at and presented to the client.</p>
<p>
I once worked for a large IT shop where one of the project managers would ask every person who would be involved in the project to provide an estimate of the time it would take them. He then arranged each of these tasks into a time line and at every step he added a contingency factor of 40% to the cost up to that stage. These 40% would accumulate, so by the end there was an enormous contingency and every project came in under budget.</p>
<p>
In this case all the work was done for an internal client, another department or associated company, and he was able to get away with it. Not only get away with it but because every project was under budget he was considered an enormous success and was promoted.</p>
<p>
I work for myself, and mostly by myself. And I cannot keep adding contingency factors to my quotes. I do include a contingency factor, and I spell it out quite clearly to the prospective client what it is and why it is there.</p>
<p>
But I still have to come up with a reasonable accurate estimate for the whole job. And here I fail miserably. Invariably I underestimate. In the short term that is good for the client. But in the long term it helps no one. It certainly doesn&#8217;t help me. And, in reality, it hurts the client because it leaves them with an unrealistic expectation that a similar job will cost a similar amount. They could be in for a very rude shock.</p>
<p>
My main concern, however, is that underestimating hurts everyone in the IT industry, it hurts me and it hurts my competitors. It hurts all of us because it devalues our work. Our fees need to reflect the fact that we are providing a professional service. Obviously there are a number of factors which come into play when setting our rates &#8211; market forces, the economy, especially the local economy in the region in which we operate, the quantity and quality of our competitors etc.</p>
<p>
Should I worry about whether my shortcomings in estimating affect my competitors. I believe that I should. I work in an industry where no one can do it all. If I can&#8217;t do a job because I am not skilled to do it then I can say no to the client, which I don&#8217;t think is all that smart. Or I can find someone who can do the bits that I can&#8217;t. Similarly I have been contacted by other consultants who don&#8217;t have the same skill set that I have. And when there is a degree of co-operation then you need to get your estimating fairly accurate.</p>
<p>
Because I am a programmer I am looking at a systems solution to my problem. I have done most of the analysis and a fair bit of the coding. How long will it take me to finish it? I hate to admit it, but I have no idea. Plus 40%, of course.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/01/15/estimating/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Apprentice</title>
		<link>http://midnightmuse.com.au/2006/01/09/the-apprentice/</link>
		<comments>http://midnightmuse.com.au/2006/01/09/the-apprentice/#comments</comments>
		<pubDate>Mon, 09 Jan 2006 01:20:27 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2006/01/09/the-apprentice/</guid>
		<description><![CDATA[<p>The Apprentice seems to me to be based upon a false premise of how we should do business.</p> <a href="http://midnightmuse.com.au/2006/01/09/the-apprentice/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I love some reality television. Some, of course, is rubbish &#8211; maybe all of it is &#8211; but I find some of it entertaining. Most television is an escape from reality, a way to divert our minds from the realities of everyday life.</p>
<p>
Reality television is no different. It bears little resemblance to reality, and so it, too, is merely a diversion.</p>
<p>
But The Apprentice, the 16 week job interview for an executive position with Donald Trump highlights one of the worst, and in my mind, one of the most stupid, aspects of business.<br />
I am talking of competition.</p>
<p>
Competition is good. It is good for business because it keeps us all striving to do better. It is good for our customers because it prevents collusion and keeps prices down.<br />
But the problem with the Apprentice is that regardless of how well both teams do at a particular task one is considered to have failed. If the difference between the two is narrow they are still asked by Donald Trump &#8216;What went wrong?&#8217; The short answer may well be nothing went wrong but that is not an acceptable answer. The other team beat you so you did badly.</p>
<p>
This all reminded me of the <em>Prisoner&#8217;s Dilemma</em> which I first read about many years ago in an article in Scientific American by Douglas Hofstadter, and later exanded upon in his book <em>Metamagical Themas</em>. I won&#8217;t go into the details of the Prisoners Dilemma except to say that it is a non-zero sum game. The idea is that you can beat your opponent, but in doing so you may be worse off than if you didn&#8217;t.</p>
<p>
It isn&#8217;t exactly what happens in The Apprentice but soemthing about the television show reminded of it. The problem, of course, is that it doesn&#8217;t matter how badly a team does, so long as they beat the other team. Similarly, it doesn&#8217;t matter how well you do, if you are beaten you are considered a loser. Now some people may say that that is how business operates. But I would much rather make $1,000 and you make $2,000 and be considered a loser, than make $100 while you only made $50, and be considered a winner.</p>
<p>
The Prisoner&#8217;s Dilemma has applications in many other places, business being only one of them. Perhaps the most serious is international affairs, and particularly the arms race during the cold war, and the seeming emergence of something similar these days.</p>
<p>
A little co-operation can go a long way, regardless of whether we win or lose.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2006/01/09/the-apprentice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

