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.
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
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.
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).
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.
"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.
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."
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
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.
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!
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.
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!
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 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.
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)
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.
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.
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.
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
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!
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.
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.
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.
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.
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.
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.
16-18th October 2007, Waipuna, Mt Wellington
A web development community event not to be missed
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?
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
Big thanks to Michael Brandon at SearchMasters for opening my eyes to SEO.
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
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.
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.
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.
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.
As of February 2007 I have become a Profesional Member of the Web Developers
Association of New Zealand (WDANZ).
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.