Dave Bartlett.Net

ASP.NET & SQL Server Developer, based in New Zealand. My clients are in New Zealand, Australia, UK, Norway & France and I welcome new business from anywhere in the world.

Professional Software Services

Microsoft Specialist
Web and Mobile Applications
Web Back End Solutions

Software design & build services, web & mobile, backend applications, integrating technologies to work together. Delivering not just software solutions, but true business results.

4th February 2013
Why do we Test Software?

Why do we test software? What purpose does testing serve? To find all the bugs right? Well, thats only part of the picture, and it is completely the wrong way to look at software testing.

In engineering terms, when a design is produced to solve some problem - lets say a bridge - we verify the design by testing the design with the aid of models and computer simulations. We then refine the design and produce new models for testing, and so on. We may even find places we've overengineered the design and we could cut back to something simpler and cheaper that would perform just as well in our tests.

Software is no different. The reason we test software is not to catch the programmer out on his/her failings to produce perfect code, as if the programmer is like a builder who occasionally makes an incorrect measurement.

The reason we test software is to verify the design. In the bridge building example, we adjust the design of the bridge when we find things in the testing/modelling phase that could be done better.

Jack Reeves article 'What is Software Design' first raised some of these ideas in 1992.

23rd December 2011
Domain Driven Design

I have been reading Eric Evans book on Model Driven Design and from a software developer's point of view, this is a real page turner! Eric Evans is widely credited as the father of Domain Driven Design (DDD), and after reading his book I can understand why his ideas have been so influential in software development and design in recent years.

Evans has managed to distill his hard won knowledge of software design for the "real world" down into a set of principles and a concrete language that DDD practitioners can use to communicate otherwise ethereal concepts.

If you are a developer, you need to read this book. If you don't have time, here is a summary of the key concepts and terms: DDD Patterns (PDF).

22nd November 2011
Facebook is the new Microsoft

I think "Facebook is the new Windows" would be more accurate. In other words, the new consumer desktop is the social network, and the monopoly this time belongs to Facebook, for better or worse.

However, rumors of Microsoft's demise have been greatly exaggerated. The reduced market share that Windows is seeing today was inevitable, and Microsoft have diversified themselves considerably over the last 20 years or so, to go from being a consumer desktop OS maker, to having a finger in just about every software and internet related market you can imagine.

Here's a quick rundown of just a few of Microsoft's business activities in 2011:

  • Databases - SQL Server
  • Software as a Service - Hotmail, Office Live, Sharepoint Live
  • Home Entertainment - Xbox, Kinnect
  • Cloud Application Hosting - Windows Azure
  • Smartphone OS - Windows 7/8 Mobile
  • Software Development Tools - Visual Studio, Expression Blend, Team Foundation Server
  • Desktop Operating Systems - Windows
  • Enterprise Server Operating Systems - Windows Server, Small Business Server
  • Web Server - IIS
  • Productivity - Office
  • ERP Systems - Dynamics
  • Web Framework - Silverlight
  • Productivity - Office
  • Telephony/IM - Skype acquisition
  • Enterprise Content Management - Sharepoint

This list is by no means comprehensive, and these are all very substantial revenue streams.

5th October 2011
Steve Jobs Quote

"Rembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart."

Thanks Steve, you have taught us all that there is no limit to what we can achieve if we put our heart and soul into it.

24th June 2011
What makes a good programmer?

One of the most well known and successful figures in the world of software development in the last 20 years is Joel Spolsky. Joel is a former paratrooper and ex-Microsoft employee, as well as a very knowledgeable programmer, businessman and entrepeneur. If it sounds like I'm a fan, its because I am. Joel runs Fog Creek Software in New York, and is a key figure behind the hugely successful StackOverflow and StackExchange group of Q&A websites. At Microsoft, he was a program manager on the Excel team back in the 90's when Microsoft was running second to Lotus 1-2-3 in the spreadsheet software game. Needless to say Microsoft won that little battle, in no small part due to Joel's contribution to Excel.

Joel is also very experienced at hiring and spotting good developers, so I thought it might be worthwhile to share the following quote from Joel on the subject of what makes a good programmer.

"The difference between a tolerable programmer and a great programmer is not how many programming languages they know, and it's not whether they prefer Python or Java. It's whether they can communicate their ideas. By persuading other people, they get leverage. By writing clear comments and technical specs, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it. Absent this, their code is worthless."

29th March 2011
The Intranet Landing Page IS The Intranet

The landing page is going to leap out at every staff member every time they open their web browser. When staff members talk about “The Intranet” they are talking less about all those documents, applications, training materials and forms, and more about the home page.

That’s why the landing page really counts. You already have the documents, applications, training materials and forms – the trouble is finding and accessing them. The landing page is like Google is to the web - a veneer over the top of all this that will make or break it. The landing page is THE page that everyone comes too. It should be the most dynamic page on the whole Intranet, updated frequently with the most important information.

I have published a brief whitepaper discussing the corporate Intranet and the significance of the landing page (home page). Read it here: The Intranet Landing Page

28th March 2011
Surf the web faster

Microsoft have released a new version of Internet Explorer: version 9 (IE9). This version is a major leap forward from IE8, with support for HTML5, and a huge boost in speed thanks to Microsoft's cunning use of your graphics card to accelerate web graphics. IE9 screenshot Microsoft have put a huge amount of work into usability and performance, trimming the browser back to a lean, mean machine. It looks as though Microsoft may have gained a momentary lead in the browser wars with this release, but competition is so fierce between Google Chrome, Firefox, Safari and IE, that we can be assured IE9 will be leap-frogged before long.

IE9 is 100% free. The only catch seems to be that if you are on Windows XP or earlier, you wont be able to run it - if thats you, maybe its time to move to Windows 7!

3rd March 2011
Watch IE6 Die... Slowly

Internet Explorer 6 (IE6) was a great browser.. in 2001. But ten years have gone by (and thats web-years, which I believe is more like 70 years in real world years!). IE6 continues to hold market share for 2 main reasons: 1) it shipped with Windows XP, and 2) most people never consider changing or upgrading their web browser, which is fair enough.

IE6 market share Today IE6 hangs in with something like 10-12% market share. The main problem with IE6 holding onto this slice of market share for so long is that web developers need to support IE6 - its still to big a slice of the market to ignore. This is holding web development back by years - instead of using the latest browser features, web developers often end up building for the most widely supported set of features; the "lowest common denominator". The result is most of the websites you see on the web are crippled by the need to support a 10 year old web browser.

Even Microsoft see IE6 as an obselete product needing to be put to rest. Microsoft have even gone so far as to build website dedicated to the demise of IE6!

26th January 2011
The myth of “The Business”
Unless you have a single user, who is also the CEO paying for the development, there is no “the”. It’s an amalgam of people with different backgrounds, skills, and goals – there is no homogeneity. Even if no software was involved, many business organizations are dysfunctional with conflicting goals, policies, and politics.
Udi Dahan

Udi Dahan is a .NET consultant/architect who is very well respected in the .NET community, so I always have time to listen to what he has to say on his Blog. He posted this comment as part of a Blog post on the CQRS architecture pattern. I think his point cannot be understated on software projects - people have a wide variety of different expectations of software, and will pull in many directions, often pulling software projects in opposing directions at once. I suppose the lesson is that we need to consider as many points of view as possible, but ultimately reign them all in under a guiding vision so that these contradictions can be ironed out.

14th October 2010
Visual Studio 2010 Express

Visual Studio 2010 Express One of the best kept secrets on the Microsoft stack is that you don't actually have to pay to have good tools to develop with. Microsoft have quietly been releasing 100% free versions of Visual Studio at the same time at the full versions. The "Express" version of Visual Studio 2010 blew me away when I first tried it, having moved from Visual Studio Professional 2008. It had basically all the features I needed for web application development, fully supported MVC 2.0, and it was fast, and familiar to use.

After developing a full blown ASP.NET MVC application with Visual Studio 2010 recently, I was starting to think that I would not have to pay for Visual Studio Professional ever again. It did not fail to deliver - perhaps the only feature I missed was a design surface for Entity Framework, but I am swinging towards NHibernate as my preferred ORM (Object Relational Mapper) anyway.

24th September 2010
Application Templates

Template 1 I have created a set of application templates that provide a lot of the core functionality you would expect from a modern web application. I've used ASP.NET MVC, but we could equally apply these themes to ASP.NET Web Forms, and EPiServer sites. The template I have on display uses JQuery UI and CSS to create an attractive theme.

I am happy to use these templates to kick start your next web application - this means you get all the advantages of the baked-in functionality that has already been developed so we can get straight to work on your core business problem, and not waste time on the application's basic infrastructure.

4th August 2010
EPiServer Blog

EPiServer Blog I have started a blog on EPiServer. This is a way for me to give something back to the EPiServer community, and at the same time, hopefully get noticed by people looking for EPiServer developers, wherever they may be in the world.

If you are wondering what EPiServer is, it is a Web Content Management System based on the .NET platfrom. It is produced by Swedish company EPiServer AB. I have found EPiServer to be an excellent product, and I have decided to focus my professional development around specializing in EPiServer development and design.

While the blog is named EPiServer Developer, the content will be covering a broad range of subjects of interest to the EPiServer community, including developers, editors, site owners, administrators etc. Its also a place for me to jot down interesting bits of information that I come across in my pathway of learning more about EPiServer.

20th July 2009

Most software, and in fact any "new thing" built in the engineering sense, starts out as a prototype. This prototyping phase is recognised in engineering as a step in its own right. We build a protoype so that we can make mistakes in a controlled way and learn lessons from them before we invest larger amounts of resources into building the real thing, assuming the prototype holds some promise.

In software development, the lesson of prototyping has not yet been fully learnt by the wider industry. Whether you recognise it or not, the first application built to solve any reasonably complex problem will be a prototype. So you have two choices: start building the prototype with the intention of putting it into production, or build a prototype that never sees the light of day, and then build the real thing.

The implication of doing this is not that software is going to cost more, but that the true cost of developing quality software needs to take into account the prototyping phase. So you can either go in "eyes open" and take into account the cost of the prototype from day one, or find out some time later that your production application is only good enough to be called a prototype, and requires a re-write to perform the way you intended.

23rd June 2009
My First EPiServer Site (and another CMS rant)

I have now completed my first ever EPiServer site in conjuction with Cadmium, a web design shop based in Lorient, France. The developer experience with EPiServer is generally very good, and a good developer experience leads to fast delivery. My only complaint is the slowness to get from code change to seeing that code running. Every re-compile requires 30-60 seconds wait time while the site starts up again. Maybe I just need a faster PC, but my development machine is generally quite fast with ASP.NET development.

That aside, EPiServer is still the most powerful Content Management System I have come across - it is in fact the only CMS I would consider recommending. There are far too many small market share CMS's that lock naive website owners into a single vendor or small pool of vendors, and this is a major problem in the website industry at present. If you become dissatisfied with the service from your website vendor, there are often few or no alternatives. This situation is very common because website vendors strive for your initial business, but have little interest in ongoing support.

Because EPiServer sites are ASP.NET applications, ASP.NET developers can quickly make the transition to EPiServer developer. When you need to modify your EPiServer site, not only do you have the full power of ASP.NET at your disposal, but you can choose from literally 1000's of development shops and contractors that specialise in ASP.NET and/or EPiServer. No more lock-in!

15th May 2009

EPiServer I've recently completed EPiServer developer training, so I'm pleased to be able to offer EpiServer development services. EPiServer is a web Content Management System in a league of its own. The product is very mature, having been around since 1997, and is based on ASP.NET 2.0 technology. The beauty of this CMS is that it gives all the power of an ASP.NET application to the content managed site. The result is that the client gets a content managed site with very easy to use features like right-click to edit page content, and they get the option to add community oriented features such as blogs and discusion forums, whilst leaving open endless possibilities for customisations using ASP.NET.

23rd March 2009
Sharepoint Musings

It occurred to me recently that Microsoft's Sharepoint is not something anyone in the Microsoft space can afford to overlook any longer. The core of Sharepoint, WSS 3.0, is free assuming your organisation has a Windows 2003 or 2007 Server. And for that price tag you get an entry level Enterprise Content Management (ECM) system that can scale up with your organisation. You can add MOSS (Microsoft Office Sharepoint Services) to integrate MS Office applications with Sharepoint for a price, but this is not essential.

Sharepoint is incredibly understated when you think about it. In fact I suspect there's a great many organisations with Windows 2003/2007 that don't even realise that it is free, and that they could be using it today. Sure, it is a 'commoditisation' of content management, but thats what Microsoft are good at. It doesn't claim to cater to all the fringe cases, it just does the basics really well, in a way that anyone can understand. It also happens to be scalable and extensible is a way that puts it clearly in the ECM space.

Where I find Sharepoint most interesting is as a platform to develop enterprise applications from. As Sharepoint uptake and awareness spreads, there will be huge opportunities for sharepoint software development, when people look to integrate their existing line of business applications with Sharepoint. It is also an alternate platform to deliver software products into the enterprise, including Software as a Service. Sharepoint development is done in ASP.NET and uses the Web Parts programming model, so ASP.NET developers are basically already Sharepoint developers. Food for thought.

19th September 2008
How To Succeed on ASP.NET Projects

ASP.NET I've had the priviledge to see inside a number of ASP.NET projects over the years. While some have been very successful, some have been outright disasters. Sometimes I've come in to help sort out a mess, or because the previous developer has left in a hurry. I've thought a lot about why ASP.NET projects go wrong, and here are some of the top reasons.

#1. Don't hire a student or inexperienced developer

Students are often keen, willing, cheap, and seem to be technically capable. But lack of experience really shows in software development projects. Important architectural design decisions needs to be made early on in any software project. When the wrong decisions are made, the project is lauched into a direction that can be extremely costly to change later on. Students and inexperienced developers need to operate under the guidance of a software architect. You wouldn't go to a builder without a set of plans and ask them to build you a house would you?

#2. Respect OO Priciples

When you are developing in ASP.NET you are developing an object oriented software application - not a website, but a software application. Developers need to understand object oriented software in order to write good, maintainable ASP.NET applications. ASP.NET is not an extension of ASP, its a whole new way to build web applications. ASP Classic skills are not transferable to ASP.NET any more than PHP skills are.

#3. Use a Tiered Architecture

It is often tempting to write your whole ASP.NET web application in the aspx page's code behind. Don't! Especially with data-driven applications. No data-driven ASP.NET application worth developing can be without a business logic layer (BLL), and a data access layer (DAL), in addition to the user interface (UI) layer code. I guarantee your project will be more open to future changes, and code will be of a higher quality if you use a layered architecture. Resist the temptation to use the ASP.NET datasource controls and databind declaratively.

#4. Use Master Pages

ASP.NET has had Master Pages since 2005. Master Pages make it easier to keep a consistant look and feel across all the pages in a web application. When you want to change the layout, there's only one place to change it and all pages are changed. Its basic stuff, but its no joke when you have to retrospectively attempt to add Master Pages to a web application where every single page has subtle differences in the layout. Do it right from the start and use Master Pages and you will save a lot of time.

#5. Avoid DataGrids or GridViews

These controls are great for quick mock up applications when you just need something going quickly. For any real-world scenario they should be avoided. Experienced developers tend not to use them because they are aware of the pitfalls (lack of flexibility, slow, extremely large page sizes due to ViewState), while the inexperinced seem to pick them every time, for every problem. Experienced developers use DataLists and Repeater controls. These are far superior in terms of the control you get over layout, and performance. For example you can display hierachical data in a tree-like manner using nested Repeaters - try doing that with a GridView.

#6. Use User Controls

ASP.NET provides a powerful way to make user interface components re-usable within a project. E.g. you may need a drop down list to select a customer in your application. There's certain logic and code associated with the process of populating that drop down with data from the database, validating it, displaying it, and so on. Now consider that your application may require the user to select a customer in 6 different places. User Controls allow you to encapsulate that code and re-use it. A common mistake is to end up with 6 copies of the same code which end up being 6 different versions of the same thing. Thats a big problem because when we want to change the way a customer is selected, we need to change code in 6 places.

#7. Use Membership

ASP.NET Membership allows you to build in role based security with practically no code. Don't re-invent the wheel, let Microsoft write your application's security layer. If you need to link actual users into data in your database, consider using the Profile to store linkage data.

14th June 2008
On Linq

One of the most interesting peices of technology to come out of Microsoft recently is Linq. Linq is a language for querying just about anything (XML data, SQL Databases, Lists of objects). Regardless of the type of data you are querying, Linq works the same way, meaning developers only need to learn one API to query many data sources.

For developers of data-centric software, Linq is of huge importance as it offers an entirely new way to interface application software with a database. For n-tier architectures built using rapid application development (RAD) techniques, you cannot afford to overlook Linq - it essenitally offers the option to elimate writing a data access layer (DAL), saving huge amounts of development effort. Linq can return strongly typed data objects from database queries. From there you can build your business objects, or bind the data directly to user interface controls.

4th February 2008
Visual Studio 2008

I've taken the plunge & upgraded to Visual Studio 2008. The experience was painless & upgrading 2005 projects has proven to be very easy. I look forward to taking advantage of new .NET 3.5 features like LINQ to reduce coding effort.

1st December 2007
New Client PDSL Ltd.

I would like to welcome PDSL Ltd. as a new client. PDSL has many excellent solutions for the Human Resources market & together we will be developing software tools to streamline the delivery of these services over the web.

5th October 2007
WDANZ Auckland Conference

16-18th October 2007, Waipuna, Mt Wellington

A web development community event not to be missed is the WDANZ Auckland Conference. This is 3 action-packed days with great speakers, networking opportunities, training seminars and much more.

Anyone can register on the WDANZ website above. Why not take to opportunity to join WDANZ while you're there and receive a free ticket?

18th September 2007
This site is ranked #1 by Google

for "ASP.NET Developer" in New Zealand. This is a great result and has only come about in the last few days, probably since this site has now come out of the Google sandbox. Ranking #1 for "ASP.NET Developer" was my goal in setting up this site earlier this year. I've got to think of a new goal now! I've achieved this through some basic techniques that any website owner can employ, getting good, relevant links into the site, and Search Engine Optimisation (SEO) on this page, which involves having a suitable page title, meta description, <h1> heading, opening paragraph, and original body text.

  • Fact: 92% of websites fails these SEO basics
  • 62% double traffic in 6 months upon implementing SEO basics
  • 47% triple traffic in 6 months upon implementing SEO basics
Source: WDANZ
Big thanks to Michael Brandon at SearchMasters for opening my eyes to SEO.

24th August 2007
Don't Make Me Think!

Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition If you're looking at ways to improve the way people experience your website, I recommend this book highly. It's a quick and easy read, and I guarantee it will change the way you think about the way people use the web.

"Get rid of half the words on each page, then get rid of half of what's left."
Krug's Third Law of Usability

14th May 2007
The Content Management Blues

I've been getting a vibe from website owners that their Content Management Systems (CMS) are frequently failing to deliver on the promise of having a great website for users & owners alike. I have come to agree wholeheartedly. There's many reasons why large complex software projects fail, and I intend to write an article on the pro's & cons of CMS very soon.

My belief is that CMS systems are either low-cost + low-flexibility or high-cost + high-flexibility. Neither of these cases is desireable. In many scenarios, I believe website owners would be better off with a well architected web-application, tailored to their exact needs.

8th May 2007
BuyBigPrints - E-Newsletter

I've just added an E-Newsletter application to the BuyBigPrints.com site. This application allows targetted Newsletters - eg. Photographers get a Newsletter with information & special offers likely to be of interest to them.

27th April 2007
Radical Surgery

This website has had a facelift! I've changed the default colour scheme from a black-based theme to a white-based theme. Thanks to ASP.NET Themes, this is very easy to do.

2nd March 2007
Calling Web Designers

I am looking to align myself with web designers & graphical designers to provide services that complement traditional web design. For example, I can take care of database interaction for an otherwise static html site, or I can set up a Content Management System (CMS) behind a web site. Basically I can take care of the back end work and help free up web designers to focus on what they do best.

23rd February 2007

As of February 2007 I have become a Profesional Member of the Web Developers Association of New Zealand (WDANZ).

12th February 2007

This website is brand new as of early 2007. This site has been developed by me, in ASP.NET to showcase my skills. Have a look around & feel free to contact me.