<?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>Random Ramblings &#187; Programming</title>
	<atom:link href="http://blog.michaelmcneill.net/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.michaelmcneill.net</link>
	<description></description>
	<lastBuildDate>Mon, 07 Jun 2010 12:39:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New PC</title>
		<link>http://blog.michaelmcneill.net/2009/02/new-pc/</link>
		<comments>http://blog.michaelmcneill.net/2009/02/new-pc/#comments</comments>
		<pubDate>Wed, 04 Feb 2009 11:45:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://blog.michaelmcneill.net/?p=50</guid>
		<description><![CDATA[I recently purchased a new desktop.  My old one was 3 years old, just coming out of lease and is getting a bit slow and weary.  I have always been a big fan of Dell.  Their service is excellent and their products are just as good as the rest of them, if not a little [...]]]></description>
			<content:encoded><![CDATA[<p>I recently purchased a new desktop.  My old one was 3 years old, just coming out of lease and is getting a bit slow and weary.  I have always been a big fan of Dell.  Their service is excellent and their products are just as good as the rest of them, if not a little better.  So off I went to the Dell website.  I almost had one picked and purchased when I saw the new release Studio XPS Desktop and reading through the specs, I decided that it&#8217;s the one that I want.</p>
<p>It&#8217;s interesting that Dell have joined the Studio and XPS range in this unit.  The XPS range are usually aimed at the high end, gamers and people who want the best performing PCs.  The Studio range are targeted for those who want a media centre PC.  So with this release they have tried to bridge the two sectors of customers together and for the most part it seems like a good combination.</p>
<p>Now for the part that really matters (at least to me), the specs. Dell have chosen the new Core i7 range from Intel to power this machine.  Those of you (like me) who haven&#8217;t been paying attention for the past 6 or more months may not know there&#8217;s a new processor in town.  And not just new, it&#8217;s an entirely different CPU: Quad-core WITH Hyper-threading, built-in DDR 3 tri-channel memory controller and 8Mb of L3 cache (there is L2 cache for each core with the L3 cache shared between all cores).  It&#8217;s one of the first (that I&#8217;ve seen) Dell consumer PCs to also include Vista 64 bit edition as the only option.  No choice between the two. It&#8217;s 64 or no PC for you.  I guess it makes sense, the consumers of this desktop are likely to want more than 3Gb RAM and 64 bit is the only way to get this.  Be careful though, tri-channel means to get the best performance, memory size must be a multiple of 3.  I made this mistake and have purchased 4, but will upgrade this to 6 in the near future.  The base model video card is an ATI Radeon HD 4850 with 512Mb RAM.</p>
<p>With the desktop, I purchased 2 x 23&#8243; SP2309W widescreen monitors which I will use one of for each of the desktops, along with a 19&#8243; standard LCD.  I&#8217;ll talk about the 23&#8243; monitors in a moment.</p>
<p>The machine flies.  I haven&#8217;t used a computer this fast and responsive ever, even using XP.  Of course, having the 4Gb memory is probably responsible for this.  Reviews I&#8217;ve read have put the i7 at the top of the performance charts, even beating most (if not all) of the Core 2 Quad CPUs, and definately most of the AMD Phenom 2&#8242;s.</p>
<p>Dell have really taken to the piano glossy black, instead of the silver and black or even the glossy white my last desktop had.  They have hidden the drives behind flip down panels, and the memory card reader, front USB, firewire and audio ports are hidden by a slide up/down panel.  They also seem to favour white LED&#8217;s, using one for both of the power and HDD indicators.  The keyboard is very flat and sleek, the keys are similar in style to that of a notebook.  It has taken me a little while to get used to the keys, especially considering the Home/Insert/End/Delete/Page Up/Page Down keys aren&#8217;t set out like a regular keyboard.  The mouse is a laser mouse with a left and right side button as well as a button to control the speed of the mouse pointer, also in glossy black, and is relatively comfortable.</p>
<p>The one odd thing is that the motherboard and case are of an ATX design.  Dell were one of the pioneers of the BTX form factor, however for some strange reason they have reverted back to ATX.  Why I&#8217;m not sure but I guess they have their reasons.  The fan is variable speed, and in my use, even the slightest hint of CPU load will have it spin up which you can hear quite clearly.  But since my current CPU load averages at 1%, that doesn&#8217;t happen all too often.</p>
<p>On to the monitor.  Again, it&#8217;s the glossy black style with white LED&#8217;s.  Max resolution is 2048 x 1152 which is higher than Full HD.  Obviously they are marketing them as a TV replacement along with the Studio desktops, given that along with the VGA and DVI connector there is an HDMI connector.  I haven&#8217;t tested HD content yet, but I hope to shortly.  The power and menu buttons aren&#8217;t really buttons.  They seem to be touch sensitive regions on the side of the monitor, mounted vertically.  Using another object in the region does not make the &#8216;button&#8217; react.  The LED&#8217;s that point to the different regions also fade when not in use.  The bottom most menu lights up when an object is about 1cm away so that you know where it is.  There is also a high pitched beep whenever a button is pressed, but thankfully that can be turned off.  A webcam is also included in the top of the monitor and there are 4 USB ports (2 underneath and 2 on the left side).</p>
<p>Overall, I&#8217;m suitably impressed.  The performance seems to be available when needed and if I ever do decide to play a game or two, the video card will help me out. Although I went a little over budget, I think the extra expense will be worth it in the long run.  My only beef with the whole purchase is that one of the speaker options is a UK product code (and last time I checked it still is).  It just so happens that these speakers were included as part of the package when I ordered, but I have contacted Dell and they are fixing that for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelmcneill.net/2009/02/new-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Master Pages</title>
		<link>http://blog.michaelmcneill.net/2008/12/aspnet-master-pages/</link>
		<comments>http://blog.michaelmcneill.net/2008/12/aspnet-master-pages/#comments</comments>
		<pubDate>Thu, 04 Dec 2008 12:29:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.michaelmcneill.net/?p=36</guid>
		<description><![CDATA[Now that almost the whole of my working time is spent developing the new online system, I&#8217;ve been toying with a number of different structures for the pages. I first had separate pages for each function, which worked well, but made the the tree a little messy.  I then moved to having one individual page [...]]]></description>
			<content:encoded><![CDATA[<p>Now that almost the whole of my working time is spent developing the new online system, I&#8217;ve been toying with a number of different structures for the pages.</p>
<p>I first had separate pages for each function, which worked well, but made the the tree a little messy.  I then moved to having one individual page for each of the three user views (administrator, staff member, and client).  All of the controls and functions were contained within that single page.</p>
<p>This was also working well, until I had to create a control which dynamically loads another control (using the Page.LoadControl function).  For the postbacks to work and the events contained within the dynamically-loaded control, this had to be done in an OnInit method.  Which means every single time the page loads on postback (which just to get to that control from login was at least 3), this method must be called.</p>
<p>One of other goals of having the one page per user view idea would be to have a consistent look and feel in each of these views.  I noticed a friend&#8217;s tweet about Master Pages, and checked it out in my ASP.NET &#8220;bible&#8221;, and thought it should be easy enough to implement.</p>
<p>I set out to implement it as a test which again worked incredibly well.  But, I came across a need to access a property of the Master Page from the Content Page.  Yes, I could cast the call to Master (such as (MasterPage)Master.SomeCustomProperty), but there&#8217;s actually a directive in ASP.NET to automatically provide this cast to all calls to Master.</p>
<p>Simply add &lt;%@ MasterType VirtualPath=&#8221;~/path/to/MasterPage.Master&#8221; %&gt; to your content page and any call to Master will automatically be of the type specified in the VirtualPath property.</p>
<p>As part of the Master Page migration, I have created a Content Page for each of the areas within the user view structure, and I&#8217;m still contemplating whether to split these into the individual functions.  This means I will have come full circle from the first idea, but at least I&#8217;d have a consistent look and feel and will be able to easily modify the display.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelmcneill.net/2008/12/aspnet-master-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We have progress!</title>
		<link>http://blog.michaelmcneill.net/2008/11/we-have-progress/</link>
		<comments>http://blog.michaelmcneill.net/2008/11/we-have-progress/#comments</comments>
		<pubDate>Mon, 03 Nov 2008 13:15:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.michaelmcneill.net/?p=16</guid>
		<description><![CDATA[Since the last blog entry, I have been a rather busy bee doing all sorts of programming.  Here&#8217;s a summary of what I have accomplished in the past few months. I was able to finally place the main software into feature freeze, albeit about a month after I had initially hoped, and with some extra [...]]]></description>
			<content:encoded><![CDATA[<p>Since the last blog entry, I have been a rather busy bee doing all sorts of programming.  Here&#8217;s a summary of what I have accomplished in the past few months.</p>
<p>I was able to finally place the main software into feature freeze, albeit about a month after I had initially hoped, and with some extra features that have been well received by the users.  There is one change which is reported to be disliked however I am reluctant to change it unless more than 50% of the users actually do dislike it.</p>
<p>I have completed the rostering system, which has been deployed and I believe is working well.  We initially had some bumps with the email function, but I have sorted that.</p>
<p>The backup system is currently undergoing a pilot at one office which has picked up a few issues but I believe is ready to deploy in the next week.  I was originally going to use the <a title="SharpZipLib" href="http://www.icsharpcode.net/OpenSource/SharpZipLib/Default.aspx">SharpZipLib</a> .NET component, however I was unhappy with the amount of time it took to archive all of the files, and with no ability to retrieve feedback from the component as each file was added, I switched to using another component which I acquired thanks to the VB.NET Resource Kit offered in 2004.  Even though the component was built for .NET 1.1, it works happily (so far) in .NET 2.0.  I learnt how to use the BackgroundWorker object too, which works well.  There&#8217;s another part of this software, namely the media writing, but I&#8217;ll add that to another post shortly as I think it deserves it&#8217;s own post.</p>
<p>Which brings me back to the present.  I have revived the web project.  I had a bit of a play around with some javascript modal box components for the login .. wizard I guess you could call it .. but they didn&#8217;t really seem to play nicely, so I have shelved that for now.  It was only to try and make the interface look funky, but I&#8217;ll work on funkifying the project later on, once I have the process and function of the project working.  At this stage I think it&#8217;s still going to be a .NET 2.0 and AJAX 1.0 project, but that is subject to change if I ever feel like it.  I am about to start on the inter-user messaging side of the project so that I can have most of the easy stuff out of the way before I tackle the hardest section.  I find it better to concentrate on the easier items before moving on to the more difficult ones.</p>
<p>So there you have it.  I&#8217;ll shortly post about the media writing code, along with anything else I come up with along the way, but until then I&#8217;ll be head down in Visual Studio madly trying to get the web project well underway before something happens which causes us to shelve it again.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelmcneill.net/2008/11/we-have-progress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Reports in .NET?</title>
		<link>http://blog.michaelmcneill.net/2008/09/custom-reports-in-net/</link>
		<comments>http://blog.michaelmcneill.net/2008/09/custom-reports-in-net/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 23:58:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.michaelmcneill.net/?p=8</guid>
		<description><![CDATA[When I wrote my first incarnation of the student database back in January 2005, we needed some reports (receipts, student lists etc).  I used part of the ComponentOne Studio for .NET that I was lucky enough to acquire as part of the free VB.NET Resource Kit.  It worked well, but the report requirements for that [...]]]></description>
			<content:encoded><![CDATA[<p>When I wrote my first incarnation of the student database back in January 2005, we needed some reports (receipts, student lists etc).  I used part of the ComponentOne Studio for .NET that I was lucky enough to acquire as part of the free VB.NET Resource Kit.  It worked well, but the report requirements for that application were fairly small.</p>
<p>For our main office application, the requirements were much higher.  We&#8217;re a franchise of a national organisation and so twice a month need to provide the major franchise with reports on the number of clients served and the amount of money received.  Given that we have a large number of locations to report on, the report generally spans a few pages.</p>
<p>I had learnt about the Crystal Reports for Visual Studio .NET and how to use them after developing and deploying the student database, and as such wanted to use that package rather than ComponentOne, as the report I needed to do is something like Crystal&#8217;s Cross-Tab report.  The ComponentOne reporting component was rather primitive in this regard.</p>
<p>I did try the Crystal Cross-Tab, and although it almost worked for a small number of locations, the large number we have meant that it would fail to display correctly.</p>
<p>In the end, after some research, I found that I could extend the System.Drawing.Printing.PrintDocument class, override the OnPrintPage event and manually generate the table structure and output the data required, in the format I wanted.  It is a rather crude solution, but it works.</p>
<p>I have extended it in the past few months, because I wanted to be able to generate a PDF output with a particular filename, as the report viewer I was using wouldn&#8217;t allow me to do that without displaying a save dialog.  After searching for .NET PDF components, I eventually found one which did everything I wanted called iTextSharp (<a href="http://itextsharp.sourceforge.net/">http://itextsharp.sourceforge.net/</a>).  Again, the work I had to do behind the scenes to translate the calls to e.Graphics into outputs onto the PDF is crude, but it works well.</p>
<p>I bring this up after all this time, because I&#8217;m about to create my first new report using this format in the last few years for the rostering application.  I just hope I can remember how to do it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelmcneill.net/2008/09/custom-reports-in-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My blog 101</title>
		<link>http://blog.michaelmcneill.net/2008/08/my-blog-101/</link>
		<comments>http://blog.michaelmcneill.net/2008/08/my-blog-101/#comments</comments>
		<pubDate>Sun, 31 Aug 2008 07:21:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General Banter]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.michaelmcneill.net/?p=4</guid>
		<description><![CDATA[When trying to think of something, anything, to blog about in the past it has been a random hodge-podge of irregularly-updated posts about nothing and anything at the time. Considering over the next 12 months I will be embarking on a rather large feat to develop 3 new applications, one of which is a web [...]]]></description>
			<content:encoded><![CDATA[<p>When trying to think of something, anything, to blog about in the past it has been a random hodge-podge of irregularly-updated posts about nothing and anything at the time.</p>
<p>Considering over the next 12 months I will be embarking on a rather large feat to develop 3 new applications, one of which is a web app, and to continue maintaining the 2 applications that are currently deployed, I think I&#8217;ll use this blog to document that journey.</p>
<p>The applications we currently have deployed are:</p>
<ul>
<li>a customer database, trust account management and reporting system: almost all of the day-to-day functions for our offices involve this software in some way, shape or form (.NET 1.1); and</li>
<li>a student database: we run a course each year as a way of gaining our seasonal staff and their details and progress need to be tracked (.NET 2.0).</li>
</ul>
<p>These applications have been constantly updated and expanded (specifically the first one) to improve the workflow for our staff and have both been developed over the past 3 years.</p>
<p>The new applications are:</p>
<ul>
<li>a rostering system: the current rostering process involves updating an excel spreadsheet which can be rather cumbersome and has a somewhat messy format (.NET 1.1);</li>
<li>a backup system: backing up data to other PCs in the office, and to allow the backup to CD weekly (.NET 1.1/2.0); and</li>
<li>a web-based customer engagement application: to allow the organisation to seek clients who prefer to interact either outside of hours, or are more tech-savvy and prefer to interact with an organisation online (.NET 2.0/3.5)</li>
</ul>
<p>The first two aren&#8217;t terribly exciting.  I&#8217;ve already started on the first one, the basic UI is completed and functional, the next bit will be to implement the report generation.  The second is to replace the mostly manual process of backing up data to CD, and to once again regain a nightly backup process within the office.</p>
<p>The third is the most exciting.  I&#8217;ve been out of the web game for some time now.  I mean, our current website has still got a table-based layout, with some CSS for formatting only.  I want the application to be functional and useable without sacrificing the security of the client&#8217;s sensitive data.  I had intended to get this up and running by June/July of this year, but many delays brought me to concede it for another year.  I am still optimistic that it can be completed by June/July next year and given that I&#8217;ll be starting development on it in the next month, I hope that I can churn out something good quickly and work on making it better.</p>
<p>So, please join me on my path of discovery as I fumble through creating these applications, and learning more about what the web has to offer a developer.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelmcneill.net/2008/08/my-blog-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
