<?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; General</title>
	<atom:link href="http://midnightmuse.com.au/category/general/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>Thu, 15 Sep 2011 14:01:56 +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>Windows 8 &#8211; First Impressions</title>
		<link>http://midnightmuse.com.au/2011/09/16/windows-8-first-impressions/</link>
		<comments>http://midnightmuse.com.au/2011/09/16/windows-8-first-impressions/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 13:59:57 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=377</guid>
		<description><![CDATA[Windows 8 looks good for tablets. But a step backwards on the desktop. <a href="http://midnightmuse.com.au/2011/09/16/windows-8-first-impressions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Like many others, developers and users alike, I have been waiting patiently for the Microsoft Build Conference, It was first announced in June with the promise of a look at at the next version of Windows, Windows 8. And Microsoft have delivered on that promise.</p>
<p>Before I get to my thoughts on Windows 8 itself, I should express my annoyance at the way that Microsoft have handled the build up to Build. In June, when the conference was announced, there were a number of announcements made concerning the nature of the operating system and the tools that developers would use to write applications for the new operating system. There was an early preview of what Windows 8 would like, and the news that this is an operating system for tablets and PCs alike.</p>
<p>There was a great deal of angst among the development community when Microsoft announced that the new development paradigm was HTML 5 and Javascript. This was not entirely surprising. Microsoft has for some time been giving very strong hints that they thought that HTML and Javascript would play an increasingly important role in the development of applications, both for the cloud and the desktop. No mention was made of Silverlight.Â  Of course, no mention was made of WPF or Winforms. Winforms is the long forgotten child of Microsoft, even though they still use it in house to develop applications, and very successful applications. WPF seems to have lost out to Silverlight. Silverlight out of browser applications seem to be the preferred way to build desktop applications. No mention was made of ASP.NET, even though a lot of work has gone on in that area recently, especially with Razor and MVC. So with no announcements concerning these technologies, and no response from Microsoft to the many questions raised by the development community, the users of their development products, the anger expressed towards Microsoft was understandable, and justified.</p>
<p>Microsoft relies on developers using their products to produce applications that run on the Windows platform for their survival in the enterprise marketplace. On this occasion they have treated the development community with contempt. And it won&#8217;t be easy to win back their trust.</p>
<p>Now, on to Windows 8.</p>
<p>Microsoft, to their credit, have made available a Developer Preview Version of Windows 8. It isn&#8217;t complete. It has bugs. It is not yet at Beta stage. So what we finally end up with will have changed substantially from what we have now.</p>
<p>Bit some things, from what we have been told in the keynote addresses at the Build conference, will not change. What we have been told is thatÂ  Microsoft sees the future of computing as &#8220;Touch&#8221;.Â  Jensen Harris, one of the Microsoft heavyweights, said that we need to build applications that are the same regardless of the device they run on. Be it a phone, a tablet, a laptop or a desktop, the applications should have the same functionality, and the same look and feel, right up the stack.</p>
<p>And herein lies the problem. All the new applications should be built in the Microsoft Metro way. They should run on any device. And I have to say that Windows 8 looks great for a touch device. I don&#8217;t have a touch pc or slate to run it on. But compared to the IPad, which we do have at home, I think Microsoft could have a winner. And if Microsoft wants to become a consumer PC/Tablet/Slate operating system manufacturer, then they may do OK. But this a major change of direction for Microsoft.</p>
<p>I am a developer of applications which run on the Windows platform. Specifically, I write, mostly, business applications which run on the .Net framework. Sometimes I write Winforms, sometimes ASP.Net. But I couldn&#8217;t write these applications using Windows 8, at least as I see it now.</p>
<p>The future of Windows applications, according to Microsoft, is Metro apps. Under this paradigm you can have two applications available at any one time. One of them is the major application taking up most of your screen. The other is docked to one side of the screen and takes about 1/4 to 1/3 or the screen width. But I can&#8217;t work that way. I regularly use two or three screens. One has Visual Studio open on it, maximised to take the wholeÂ  24 inch screen And if the monitor was bigger it would still take the whole screen. Another may have Expression blend, another is likely to have Word, or perhaps One Note, ofr something that has notes dealing with the application I am writing. I am also, at times, likely to have Linqpad open so I can test some Linq queries. I use an O/R Mapper, LLBLGen Pro, in most of my database applications, so at various times during development I will have it open. SqlServer Management Studio will be open at some stages, as might Visio during the database design phase. Perhaps Balsamiq will be open as I try to design the user interface. For continuous integration I use Team City. That runs on a separate PC which is my build server, That PCs monitor will show the results of my Team City build, or, thanks to MaxiVista, will serve as my third monitor when it often hosts one of the Visual Studio windows. I often use it to show my unit test runner. This all works very well on Windows 7. From what I have seen of Windows 8 it will be impossible for me to work like this.</p>
<p>I said earlier that I develop applications for enterprises. The enterprise has been Microsoft&#8217;s strength since the days of DOS. Since the 1980s big business has used mainframes running IBM operating systems or mid range computers with Unix, or AIX, or some similar OS. Small businesses have used PCs. But since the 1980s the PC has made further and further inroads into larger and larger businesses. We now have Microsoft Server powering very larger enterprises. Microsoft&#8217;s SqlServer competes with Oracle in holding the data of the very largest businesses. Windows 8 is not an operating system, as it looks at the moment, for the enterprise. Business users don&#8217;t want to touch their screens, except for a very small number of specialised cases. Enterprise applications, be they accounting, human resources, sales , production or inventory systems, are all about efficiently manipulating and effectively storing data.</p>
<p>Microsoft might think that this is a short-term, myopic, non-visionary, backward-thinking view of computing as we move further into the 21st century. But it isn&#8217;t my view.It is the view of governments who want companies to account for taxes, and employees who want a paycheck each week. It is the view of shareholders who want dividends and banks who lend money.</p>
<p>Don&#8217;t get me wrong. I want a tablet which runs Windows 8, and over the next 6 to 12 months there should be a whole lot of them on the market to choose from. I expect I will be excited by Windows 9 and Windows 10. As a developer I am looking forward to the challenges, and the enjoyment, that will come from programming for these new devices. And I am looking forward to using the tools that are produced by a lot of very smart people at Microsoft and other software companies. There is a lot to look forward to for software developers.</p>
<p>However, I am software developer only to the extent that I can deliver software that my clients want. And I cannot see any of my clients using Windows 8. I can&#8217;t think of one application that I have written in the pastÂ  2 years, 5 years, ever, that would have benefited from being written for a tablet. I know I will have to re-think my future application designs to conform to this new future. I will have to learn new skills.</p>
<p>But Microsoft may also have to re-think. If this is the future of Windows development then perhaps my clients might consider moving to Linux, and that will dictate the types of skills that I have to use.</p>
<p>There is another possibility. I have been primarily a desktop application developer. I think that Microsoft has finally decided to kill off the desktop as we know it. All business application in the future will be either Silverlight or ASP. Microsoft was late in embracing the internet back in the 1990s. But they have made up for that with a gusto in the last few years. I suppose I can live with that. All business applications go up to the cloud. But the problem for me and every other developer remains. If Windows 8 is the development environment that Microsoft is giving us, how will every write these application? It can&#8217;t be done.</p>
<p>I really hope there are some substantial changes to Windows 8 over the coming months.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2011/09/16/windows-8-first-impressions/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Killing a Process</title>
		<link>http://midnightmuse.com.au/2010/05/06/killing-a-process/</link>
		<comments>http://midnightmuse.com.au/2010/05/06/killing-a-process/#comments</comments>
		<pubDate>Thu, 06 May 2010 05:35:14 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=196</guid>
		<description><![CDATA[Sometimes a process just won't roll over and die <a href="http://midnightmuse.com.au/2010/05/06/killing-a-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had a problem today that I have not seen before.</p>
<p>I am running Windows 7, 64 bit. I had a document open in Word. The version of Word I use 2010 and, following Microsoft&#8217;s recommendation, I am using the x32, or 32 bit, version. I was scrolling through the document and it froze. I have had all sorts of applications freeze in the past, even some of my own. Or is that especially some of my own?</p>
<p>The usual fix is to open TaskManager, or in my case Process Explorer, which is part of the Sysinternals suite. Right click the process, in this case, Winword, and select Kill Process. It didn&#8217;t work.</p>
<p>So I tried taskkill from the command line. Didn&#8217;t work. So I tried taskkill /F, which is supposedly a forceful task kill. Still didn&#8217;t work. Back to sysinternals and tried its pskill, which is supposed to kill a process. And that didn&#8217;t work.</p>
<p>This has never happened before.</p>
<p>So I did a reboot. Now when right click the system tray and select Task Manager, or do the same from a Ctrl-Alt-Del, I get an error message.</p>
<p>I have no idea what is going wrong, but I can see I have some things to fix.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2010/05/06/killing-a-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Own Stupidity Amazes Me!</title>
		<link>http://midnightmuse.com.au/2010/04/14/my-own-stupidity-amazes-me/</link>
		<comments>http://midnightmuse.com.au/2010/04/14/my-own-stupidity-amazes-me/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 14:28:01 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=192</guid>
		<description><![CDATA[You'd think at my age I might have learned. But I haven't. <a href="http://midnightmuse.com.au/2010/04/14/my-own-stupidity-amazes-me/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It doesn&#8217;t seem to matter how often we hear or read about what we should do. We still don&#8217;t do it. I even tell my clients what they should do, but I don&#8217;t do it. And today it bit me on the bum.</p>
<p>12th April was a significant day for Microsoft developers. Visual Studio 2010 was launched. It was 13th April here in Australia, because we are so far ahead of most of the rest of the world, except for New Zealand, and that is a real worry. But I digress.</p>
<p>Yesterday morning I downloaded Visual Studio. Actually I started the download and then went to see a client and didn&#8217;t get back until late afternoon. And then I had to install it.</p>
<p>I couldn&#8217;t install it straight away because I had the RC version already installed. And I had enormous trouble getting it uninstalled. Eventually, after many hours, it was gone. Or so I thought. I then tried to install VS 2010 and it told me that it couldn&#8217;t install because I still had a component left on. I uninstalled it and tried again. It started out fine but got to installing the .Net Framework V4 and there it hanged, hung, I&#8217;m not sure which.</p>
<p>I rebooted and tried again. Same thing. I got a cup of coffee and tried again. Still no go.</p>
<p>I downloaded the framework separately and tried that. It wouldn&#8217;t budge. I got another cup of coffee and played a few games of Sudoku, and that didn&#8217;t help.</p>
<p>At this stage I thought that it might be time for a clean install on the pc, and even though that thought fills me with dread, it probably is time, soon. I thought that I had better check my backup files and make sure that I have everything that I need. My client apps aren&#8217;t a problem, they are all under version control on a separate machine. But I have other backups sitting on two 1 tb external disks. Only one was connected to the pc at the time and the other one has some useful stuff on it. It hasn&#8217;t been connected since I re-arranged my office some time ago. So it was now time to dig it out and crawl around the floor under the desk and plug it in.</p>
<p>I tried one more time to install Visual Studio, and what do you know, it is working. It is chugging along quite nicely as I write. But it is now 12:20 am and I have been at this for hours.</p>
<p>The moral is, if I hadn&#8217;t installed the RC version I probably wouldn&#8217;t have had these problems. I wanted to try it out and so I installed it. I didn&#8217;t use it for any production work, I&#8217;m not that stupid. But I do have VMWare installed on this machine. And I have a couple of virtual machines set up for this purpose. Why didn&#8217;t I install the RC version on a vm? Cause I am dumb. Lazy and dumb.</p>
<p>But I have another confession to make. Before I got the RC version, I had a copy of a beta version. I didn&#8217;t install that on a vm either.</p>
<p>I said that I am not only dumb, I am lazy. If I was smart and lazy I would have stuck both these versions on a vm. It is a lot quicker to delete a virtual machine and then make a new clone of a clean vm and install the beta and release candidate versions on the new vm.</p>
<p>I have learnt my lesson, this has been a nightmare.</p>
<p>At least it is going well now and tomorrow I can play with it.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2010/04/14/my-own-stupidity-amazes-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Entity Framework</title>
		<link>http://midnightmuse.com.au/2009/10/01/entity-framework/</link>
		<comments>http://midnightmuse.com.au/2009/10/01/entity-framework/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 15:39:00 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=179</guid>
		<description><![CDATA[I have recently tried out Microsoft's Entity Framework. It wasn't a happy experience. <a href="http://midnightmuse.com.au/2009/10/01/entity-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am working on a project for a client that is a little different to others that I have done. It is a simple project which needed two winforms applications. One was to be used by all and sundry, and the other was uesed by the project administrators.</p>
<p>I could have used one application, and usually I would have done so. Except that the first application was to be run on a system with a touch screen. I didn&#8217;t want a bunch of menus and a login screen for administrators. It was simpler to just write two applications.</p>
<p>The other difference with these apps from others that I am used to is that they use a MySql database. In the past all the applications I have written in the .Net world have used either MsAccess or SqlServer. Fortunately, the Access apps have been getting fewer, although I do have one on the go at the moment, and that is also a painful experience which I will write about in a subsequent post.</p>
<p>The problem with MySql is the data providers. I use an Object Relational Mapper for database access whenever I can. My ORM of choice is <a href="http://www.llblgen.com/">LLBLGen Pro</a>, a mature and powerful product. There are many others, and in the .Net sphere <a href="http://sourceforge.net/projects/nhibernate/">NHibernate</a> is probably the most popular. The problem I had is due to the licencing of the MySql data provider used by LLBLGen. I may have gotten this wrong, but at the time I wrote version 1 of these apps it looked like the problems were, if not insurmountable, at least difficult to overcome. So I wrote my own data access layer using datareaders and, in some cases, datasets. I wasn&#8217;t happy with the result, but it was a very small application and it worked. As with most small applications it has grown and I decided that I wanted a better data access layer. I didn&#8217;t feel that I had was robust enough and I wasn&#8217;t happy with the code. And I certainly wasn&#8217;t happy with the datasets as the program grew.</p>
<p>What to do?</p>
<p>Microsoft hs brought out two relatively new data access technologies. The oldest, and it has been around for a few years is LINQ &#8211; Language Integrated Queries. I really like LINQ, and combined with lambda expressions it gives you a very concise way to query collections. And along with LINQ came LinqToSql, the ability to use LINQ against a Sql database. You are now able to write something very similar to Sql queries in code, as opposed to a string expression. LinqToSql works with a number of different databases provided you only want to read the data. If you want to do updates or inserts then it will only work with Microsoft SqlServer. From what I have read there are no technical reasons for this, so I assume that it was a marketing decision.</p>
<p>More recently Microsoft has released Entity Framework. This has been described by Microsoft as <em>much more than an ORM.</em> My experience is a little different. It seems to me to be very much less than what we would expect in an ORM. Object Relational Mappers have been around for years now. They have been popular in many other platforms &#8211; Java,f or example has had Hibernate since 2001, I think. Other languages have used them since the early 1990&#8242;s. They aren&#8217;t a new phenomenon. If Microsoft had introduced Entity Framework in the early days of .NET, say when .Net 1.1 was all we had, then I think we could put up with what they have given us. But it is no longer 2004. The .Net world has moved on and in 2009 Entity Framework just isn&#8217;t good enough.</p>
<p>And it isn&#8217;t as if Microsoft cannot product good products. The CLR is a pretty good framework. Visual Studio is a good environment to work in, and VS 2010 looks like it will be very nice. WPF and Silverlight are not perfect but pretty good and getting better. C# is an enjoyable language to program in. The Java crowd will deride me for saying all this. But I believe that C# has overtaken Java and it is continuing to evolve. Microsoft has undoubtedly got some talented people. But they missed the boat with Entity Framework.</p>
<p>What&#8217;s wrong with it? First off, it is very slow. Over the past few years performance has become less of an issue in the sort of business applications that I write. Computers are fast. Most have multiple cores and memory to spare. In most of the applications I write the biggest impact on performance is data access. You have to go to the database, get it to its own crunching and return some data. Entity Framework uses reflection to create the objects. The first time you send a database call is the worst. After that it is is still slow, but getting closer to acceptable. LLBLGen, on the other hand, creates the classes as part of a data access project. The runtime experience is very good. It is no differenct from creating any other object once you have the data. The difference is that with a decent ORM your performance is once again determined by your database.</p>
<p>The second problem with Entity Framework is that it is very difficult to use. Julia Lerman has written a book about Entity Framework and is in the process of writing an update. She has an article, <a href="http://www.code-magazine.com/articleprint.aspx?quickid=0907071&amp;printmode=true"> 8 Entity Framework Gotchas</a> that is worth a read. Entity Framework is just not very intuitive.</p>
<p>The final problem I want to mention is the designer itself. Entity Framework runs inside of Visual Studio. You create an Entity Data Model item within a project. You are then taken to a wizard and from there you can create a model from your database. All well and good. But every table you need is placed on a visual canvas. The small application I was building only had eight tables, but that was more than enough to look at on one screen. What is it like when you have 50 tables which is not a large number. I recently did a project which had to query a database containing 24 tables and 27 views. And this was a relatively small application. I wouild have hated to look at my model in the Entity Framework designer, it would have been virtually impossible.</p>
<p>There is a new version of Entity Framework coming out soon. Perhaps it will ship with VS 2010. And I am prepared to give the new version anothe go. But at the moment it is practically unusable.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2009/10/01/entity-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Physics for fun</title>
		<link>http://midnightmuse.com.au/2009/06/06/physics-for-fun/</link>
		<comments>http://midnightmuse.com.au/2009/06/06/physics-for-fun/#comments</comments>
		<pubDate>Sat, 06 Jun 2009 07:57:12 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=175</guid>
		<description><![CDATA[New physics site <a href="http://midnightmuse.com.au/2009/06/06/physics-for-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My son has a <a href="http://www.tonywright.id.au/">new site </a>dealing with physics.</p>
<p>He is a Phd student at Wollongong University studying the theoretical aspects of nano technology. There is nothing there yet but over the coming months he will be publishing papers and useful articles related to this area of physics.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2009/06/06/physics-for-fun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up a Build Server &#8211; Part 2</title>
		<link>http://midnightmuse.com.au/2009/05/08/setting-up-a-build-server-part-2/</link>
		<comments>http://midnightmuse.com.au/2009/05/08/setting-up-a-build-server-part-2/#comments</comments>
		<pubDate>Thu, 07 May 2009 14:09:03 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[Build Server]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=158</guid>
		<description><![CDATA[The first step towards looking smarter. Get the right tools <a href="http://midnightmuse.com.au/2009/05/08/setting-up-a-build-server-part-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="index.php/2009/05/07/setting-up-a-build-server-part-1/" target="_self">previous article</a> was an introduction by way of setting out the problem. There are a few tools that will help you get the job done. But first I should explain what I want the end result to be.</p>
<p>What I want is to be able, at the press of a button, to produce a release version of my program ready to be deployed onto the client machine. That sounds reasonable, doesn&#8217;t it?</p>
<p>So what tools do we need? first is <a href="http://www.visualsvn.com/" target="_self">VisualSVN</a>. I have <a href="index.php/2007/12/05/visualsvn/">written about this before</a>. It isn&#8217;t free, it costs $US49.00 but it is worth every penny. It installs Subversion and works a treat.</p>
<p>I also managed to get an old, not too old, PC set up. It needed a hard drive, but I had a spare one of those lying around. If you have been developing for any length of time you tend to accumulate bits and pieces that can sometimes come in handy. The PC needs a memory upgrade, but that is not an issue &#8211; memory is pretty cheap.</p>
<p>You don&#8217;t need a separate PC, but I thought it worthwhile, performance and all that.</p>
<p>First you have to set up the PC. I installed Windows Server 2008. You don&#8217;t need server software, XP or Vista will do. You can even install Linux and Mono. So long as you can compile your C#, or VB.Net code you are OK. But I used Windows Server 2008 because I had it and I wanted to try it out.</p>
<p>There are a couple of things that need to be installed. First you need the CLR of the version you are developing on. These days there is no point in not installing 3.5, even if you aren&#8217;t using its features yet. By the end of the year you will probably want to install 4.0. But you will certainly want at least version 3.0. However, that doesn&#8217;t mean that you want to install Visual Studio, just the framework, because all you really need is the compiler.</p>
<p>You will also need to install VisualSVN Server. This will setup the Subversion Repository on your server. You client, or development PC will connect to the Build Server and hence the Subversion Repository. More on setting up the Subversion Repository next time.</p>
<p>The next piece of software that you want is Continuous Integration software. There are a few of these around. I suppose the most common has been<a href="http://cruisecontrol.sourceforge.net/">CruiseControl</a>. I looked at this a year or so ago and it seemed fairly complex to set up. At that time I didn&#8217;t think that it was going to be of any great benefit to me so I didn&#8217;t pursue it. But a few months ago I came across <a href="http://www.jetbrains.com/teamcity/index.html">TeamCity</a>. It was love at first site. It is incredibly easy to set up and we will look at that after we have examined Subversion more closely.</p>
<p>Finally, I installed<a href="http://www.vmware.com/">VMware Workstation</a> to help me create virtual machines. You can use something like VirtualPC but I think VMware is a better product, but you have to pay for it. We will look at VMware and what it brings to the build process in a later post.</p>
<p>Really finally, there are some other things I installed which aren&#8217;t necessary for the build proces but are useful to have. I will describe these later on.</p>
<p>That&#8217;s it for. Next time &#8211; VisualSVN and Subversion.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2009/05/08/setting-up-a-build-server-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TypeMock for VB.NET</title>
		<link>http://midnightmuse.com.au/2009/01/14/typemock-for-vbnet/</link>
		<comments>http://midnightmuse.com.au/2009/01/14/typemock-for-vbnet/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 23:02:54 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/?p=148</guid>
		<description><![CDATA[Typemock is now available to assist unit testing in VB.NET <a href="http://midnightmuse.com.au/2009/01/14/typemock-for-vbnet/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I came across a <a href="http://weblogs.asp.net/rosherove/archive/2009/01/13/unit-testing-in-vb-net-with-typemock-isolator-with-a-free-license-offer.aspx">recent article</a> by <a href="http://weblogs.asp.net/rosherove/default.aspx">Roy Osherove</a> advising that <a href="http://www.typemock.com/index.php">Typemcok Isolator</a> now has a new VB.NET unit testing API </p>
<p>I think that there is only one firm rule in software development &#8211; <em>If it&#8217;s not tested then it is broken</em> All the other rules are, in my view, suggestions. Some are very strong suggestions and you ignore them at your peril. But this rule cannot be broken. If you haven&#8217;t tested then you don&#8217;t know if your software works.</p>
<p>How then, should you test? There are many types of tests &#8211; unit tests, integration tests, regression tests, user acceptance tests, and so on. But it is unit tests that are the most useful for programmers. In the .Net world you normally use a tool like <a href="http://www.nunit.org/index.php">NUnit</a>, <a href="http://www.mbunit.com/">MbUNit</a>, <a href="http://www.codeplex.com/xunit">XUnit</a> or something similar. I have used NUnit and MbUnit and they are both great testing frameworks. I mostly use NUnit, more out of habit than anything else &#8211; I am used to it.</p>
<p>But the problem with unit tests is that many objects have dependencies on other objects. For example, if we have a class Order that takes a Customer as a parameter in its constructor then in order to unit test the Order class we need to construct a Customer class. The two classes cannot be tested in isolation.</p>
<p>
This is where mock objects come to the rescue. You can create a mock customer, or a stub in this case. The order class can now be tested by calling the mock customer instead of a real customer.</p>
<p>
There are a number of mocking frameworks around, and <a href="http://www.typemock.com/index.php">Typemock</a> is considered one of the more powerful of these tools. Some people have suggested that it is too powerful, but with power comes responsibility &#8211; you just have to invest a little time learning how to use it.</p>
<p>
Of course, a mocking framework won&#8217;t solve all of your dependency problems. You might want to look into Dependency Injection and Inversion of Control containers, but mocks are a great tool to have in your testing arsenal.</p>
<p>
If you are interested in unit testing, and you should be, <a href="http://weblogs.asp.net/rosherove/default.aspx">Roy Osherove</a> has details about a new book he has written <a href="http://www.artofunittesting.com/">The Art of Unit Testing</a>. I have a copy and it is a good read with a fair bit to say about using mocks and the different testing frameworks. You should also check out Typemock. Their web site has the following information:-</p>
<p>
<a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">Programming Visual Basic</a> applications?</p>
<p>
Typemock have released a new version of their <a href="http://www.typemock.com/?utm_source=hp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">unit testing</a> tool, Typemock Isolator 5.2.<br />
This version includes a new friendly <a href="http://www.typemock.com/vbpage.php?utm_source=vbp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">VB.NET</a> API which makes Isolator the best Isolation tool for unit testing A Visual Basic (VB) .NET application.</p>
<p>
Isolator now allows unit testing in VB or C# for many â€˜hard to testâ€™ technologies such as <a href="http://typemock.com/sharepointpage.php?utm_source=spp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">SharePoint</a>, ASP.NET MVC, partial support for Silverlight, WPF, LINQ, WF, Entity Framework, <a href="http://www.typemock.com/wcfpage.php?utm_source=wcfp&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvb">WCF unit testing</a> and more.</p>
<p>
Note that the first 25 bloggers who blog this text in their blog and tell us about it, will get a Free Full Isolator license (worth $139). If you post this in a VB.NET dedicated blog, you&#8217;ll get a license automatically (even if more than 25 submit) during the first week of this announcement.
</p>
<p>
Go ahead, click the following link for <a href="http://blog.typemock.com/2009/01/get-free-isolator-licnese-for-helping.html?utm_source=vb_blog&amp;utm_medium=typeblog&amp;utm_campaign=isolatorvbblog">more information</a> on how to get your free license.</p>
<p>
I don&#8217;t expect to get a free licence, I am sure that there will be 25 posts ahead of mine, and this is not a VB.NET dedicated blog. But Typemock is a good product. I have used it and I recommend that you give it a go.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2009/01/14/typemock-for-vbnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#8217;ve lost my Zoo</title>
		<link>http://midnightmuse.com.au/2007/11/26/ive-lost-my-zoo/</link>
		<comments>http://midnightmuse.com.au/2007/11/26/ive-lost-my-zoo/#comments</comments>
		<pubDate>Sun, 25 Nov 2007 23:40:04 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2007/11/26/ive-lost-my-zoo/</guid>
		<description><![CDATA[Facebook animals are notoriously fickle <a href="http://midnightmuse.com.au/2007/11/26/ive-lost-my-zoo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A friend suggested that I have a look at <a href="http://www.facebook.com/">Facebook</a>. I am sure that you have heard of it. Most likely you are already signed up.</p>
<p>So I had a look. Unfortunately, you cannot look at much without joining. So I joined.</p>
<p>Now I have some Facebook friends. I think I have more virtual friends than real ones. My daughter, a Facebook afficianado, told me to get an aquarium and a zoo. So I did, and promptly ignored them. Facebook animals do not like being ignored.</p>
<p>My zoo is now a barren wasteland, not a plant or animal to be seen. I am sure my aquarium will soon go the same way. Although, at the moment, my daughter is feeding my fish.</p>
<p>My great fear is that by ignoring my Facebook friends they, too, will also desert me. I will be left a lonely, virtual pariah.</p>
<p>So there you go. Facebook is an exact replica of real life!</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2007/11/26/ive-lost-my-zoo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I have been saved from Peters</title>
		<link>http://midnightmuse.com.au/2007/11/16/i-have-neen-saved-from-peters/</link>
		<comments>http://midnightmuse.com.au/2007/11/16/i-have-neen-saved-from-peters/#comments</comments>
		<pubDate>Fri, 16 Nov 2007 03:12:30 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2007/11/16/i-have-neen-saved-from-peters/</guid>
		<description><![CDATA[There are people in this world who aren't called Peter <a href="http://midnightmuse.com.au/2007/11/16/i-have-neen-saved-from-peters/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Further to my previous post, I have some good news.</p>
<p>I was contacted by a potential (future?) client yesterday &#8211; and his name is not Peter. I was tempted to tell him he had to go elsewhere, but thought better of it.</p>
<p>Well, why not? Perhaps it is possible to do work for non-Peters. </p>
<p>If this doesn&#8217;t work then there may be a twelve step program that can help me.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2007/11/16/i-have-neen-saved-from-peters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Everyone Called Peter?</title>
		<link>http://midnightmuse.com.au/2007/11/14/is-everyone-called-peter/</link>
		<comments>http://midnightmuse.com.au/2007/11/14/is-everyone-called-peter/#comments</comments>
		<pubDate>Tue, 13 Nov 2007 23:59:24 +0000</pubDate>
		<dc:creator>Richard</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://midnightmuse.com.au/2007/11/14/is-everyone-called-peter/</guid>
		<description><![CDATA[Peter is a great name. If it isn't your name, perhaps it is time to consider a change. <a href="http://midnightmuse.com.au/2007/11/14/is-everyone-called-peter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I currently use Microsoft Outlook as my mail app. I know, everyone says that I should use something else. But Outlook works fine for me.<br />
I create a separate folder for each client that I am currently working on and that keeps everything organised.</p>
<p>At the moment I am juggling five clients.<br />
One is a relative and I am upgrading an application.<br />
Another is an old client and, again, I am upgrading an application.</p>
<p>But the other three are different. One is an old client, the other two are new. But each of these is new work. And each of these clients is called Peter. This, I think, is a bad omen. Let me explain.</p>
<p>I have done some rough, back of an envelope calculations, and come up with this. There are roughly 20 million people living in Australia. Say half of these are either too young, that is at school, or too old, that is retired, to want me to do work for them.<br />
There are 10 million left.</p>
<p>Our current workforce stats show that about 7 million people are in paid employment. I do work for small businesses, that is, self-employed people. So this group don&#8217;t want to know me. I am down to 3 million.</p>
<p>Now we get to Peters. They are all men. I know there are women but they are called Peta, and I don&#8217;t have any of them as clients. 1.5 million people.<br />
When I think back at all the people I have known there must be heaps of them. How many? At least 1,000. But I am sure that figure is conservative. And how many Peters have I known. I can&#8217;t think of 10.</p>
<p>So, I am pretty sure that no more than 1% of the population is called Peter. That gives me 15,000 potential clients. That&#8217;s not bad.<br />
Except that I do all my work for businesses in the Shoalhaven. There are about 100,000 people living in the Shoalhaven, or 0.5% of the Australian population.<br />
So there can be no more, and I suspect a lot less, than 75 Peters in the Shoalhaven who may want my services. And I already do work for three of them. I need to find the other 72 before someone else signs them up.</p>
<p>If your name is not Peter, I am prepared to consider doing work for you, or perhaps you would like to change your name.</p>
]]></content:encoded>
			<wfw:commentRss>http://midnightmuse.com.au/2007/11/14/is-everyone-called-peter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

