Fremus.co.za

Demistifying Life and Web Development

Archive for June, 2010

Trying to turn a new development leaf

I’m not sure development teams do the testing they are suppose to do, or follow the advice of what proponents of testing say you should do. As a matter of fact I know that most teams do not practice any form of formal testing, or rather make testing a key component of their development. Test Driven Development in an Agile scenario prescribes that you write code, write test code, test it and iterate if necessary. Essentially TDD forces you into a discipline of making sure your code works, which incidentally is one of the key objectives of an agile development methodology – you must always have a working portion of your code. In other words if you have to release code immediately then there should be code of sufficient working quality available to make everything work. That is my understanding anyway.

The reason I am looking at using agile as a development methodology is because I want to develop a commercial product using ASP.NET MVC and as Phil Haack says in this article:

Notice that at this point, we’re focusing on the behavior of our app first rather than focusing on the UI first. This is a stylistic difference between ASP.NET MVC and ASP.NET WebForms. Neither one is necessarily better than the other. Just a difference in approach and style.

And from that I gather that ASP.NET MVC was designed to work well as a unit testing platform as well. I started about 3 weeks ago to formalise my development process and I started out by defining agile to have the following steps:

  • Start off by Planning a work item
  • Do a requirements analysis of the work item and identify what you will need to do to get it working correctly
  • Design the code/program
  • An iteration then begins:
    • Write the code
    • Write a unit test
    • Do an acceptance test

I am having to change my development process though, because I intend to use Team Foundation Server (TFS) as my source control system, and I was thinking that maybe I need to consider using MSF (Microsoft Solution Framework) to drive my development process. MSF is integrated into TFS, and it essentially means that you can build applications and do source control within a development methodology. I started off looking for stuff on MSDN and searched for this and came across this presentation. From this presentation I understood that the agile process is structured a little differently to what I did in my initial process definition. Each iteration in a MSF consists of:

  • Envision
  • Plan
  • Build
  • Stabilize
  • Deploy
  • Continuous

Iterations occur at various steps and its up to the project manager to determine how many iterations occur. MSF also promotes a daily work cycle, which essentially makes sure that your code is of an acceptable standard. Essentially you check-in each day, make a build, make sure its an acceptable build and then you continue the develpment process within an iteration. This process repeats daily. Within the iteration cycle there are several other iterations which aim to achieve a pre-determined level of quality, based on planning of feature sets. The iterations also act as a mechanism to correct a project plan if there are deviations. The iteration is broken up into iteration cycles, with iteration 0 consisting of a project setup plan followed by a first iteration that involves planning, developing, testing and getting feedback followed by an nth number of iterations that involve planning, developing, testing and feedback. The last iteration is a set of nth iterations that involve developing, testing and releasing the product. You have to view these iterations as a set of ‘refinement’ iterations, each iteration is intended to refine the solution. You also have to view these iterations in relation to the iteration steps mentioned above. In the powerpoint presentation they present a very cool view of the iterations as they happen.

Iteration 0

At the top they start off with the envision stage that includes the writing of a vision statement and the identification of personas within your system. Once that is defined you have to determine an iteration length. At the planning stage of the iteration you have to access/assess project progress, which is a continual thing I assume. Within the build stage you must start off by creating a scenario through brainstorming. You must also create a Quality of Service scenario through which you create a QoS. At this stage you must also refine the personas. The scenario that you created previously requires that you prioritise the scenario list, each with a scenario description. You need to prioritise QoS as well and write a QoS requirement. From the scenarios that have been written you need to create a solution architecture that partitions the system. You also need to storyboard the scenario, and develop a performance model. You also have to identify the security objectives, and then you need to test the scenario by defining a test approach.

On the next level you have to determine the interface. Does this mean the actual UI? You also need to plan an iteration at this stage by estimating a scenario or QoS. Then you need to develop a threat model. On the next level you need to plan an iteration around scheduling a scenario. From this you can develop an architectural prototype. You also need to plan an iteration around QoS and then create a infrastructure architecture. At the next level/step you plan an iteration around dividing the scenario into tasks, that make up a dev task which is then costed, and the same strategy is applied to QoS.

From the diagram in the powerpoint I assume that you can repeat as many iterations as you want.

Iteration 1

Iteration 1 includes writing a QoS test and writing a validation test for testing your scenario. It also includes doing a code check-in to your source control. It contains stages/levels that require you to write code for a development task, as well as creating an update of a unit test. It also covers fixing bugs:

  • Reproducing the bug
  • Locating the bug cause
  • Deciding on a bug fix strategy
  • Reassign the bug
  • Create of Update unit test
  • Code the fix
  • Perform unit test

Implementing a development task covers the following:

  • Create of Update Unit Test
  • Write code for dev task
  • Perform Unit Test
  • Perform Code Analysis
  • Refactor code
  • Integrate Code Change

After this stage there has to be a build and an accepted build. In the build there will be:

  • Start a build
  • Verify a Build
  • Fix a build
  • Accept Build

An accepted build will revolve around testing scenarios and in particular:

  • Conducting an exploratory test
  • Select and run a test case
  • Open a bug
  • Share/Bookmark
Tags: ,
posted by fr3dr1k in ASP.NET MVC,Application Development and have No Comments

Windows Live Writer

Microsoft come in for a lot of flack from the OSS world and the Mac users think they are better than everyone else when it comes to software. But I was surprised again today by how good Windows Live Writer integrates with my WordPress Blog, to such an extent that I will in all probability not use the WordPress WYSIWYG editor in the browser, for which I have a reason or two. Firstly, the WYSIWYG editor runs in the browser and I find quite a few things annoying:

  • When I create a blockquote it adds a lot of spacing around it for some reason
  • When I update a post or page the scrollbar will go to the top, instead of staying where I last edited
  • The working area is relatively small

Compare this to what Windows Live Writer offers:

  • Seemless integration with the blog engine. It was so easy to setup and it detects everything, from your theme to all your posts
  • When you write a post you can edit it directly on a themed page, or you can do it in source view. You can also preview it perfectly
  • You have access to ctrl + b, ctrl + i. A total lie on my part. I was using the HTML view here and not the Visual View! WordPress does support ctrl + b and crtrl + i.
  • You dont lose scroll position
  • Publishing is easy and seemless

So in my view Microsoft have really done well with this free piece of software, it just works, and it works better than some Firefox plugins I have used as well.

  • Share/Bookmark
posted by fr3dr1k in Software,Wordpress and have No Comments

Why use .NET as development platform?

The purpose of this post is to make it clear to myself why I use .NET as a development platform. The need to make it clear has arisen because I have noted a trend lately that saw at least two .NET developers moving to other platforms, and it made me wonder why I still choose .NET as a development platform at the moment. I have been reading up a bit on Ruby-on-Rails, because it seems to be the next big thing in terms of web development, and I haven’t found a compelling reason to dump .NET. If I had to think of reasons why I would not drop .NET it would be something like the following:

  • Operating System familiarity. Yes I know Mac OS X and Linux are potentially more stable and more superior. But superiority comes at a price. Everything I need works in Windows, from networking, office suites, wireless devices, development environments and file management. A Windows network is easy to setup, as is file and print sharing, and Microsoft Office is still the de facto desktop Office Suite. There aren’t many wireless devices that can NOT connect to a Windows-based system, which makes Windows almost ubiquitous.
  • Having stated that I like to do my development in a Windows environment because of the familiarity it provides, the next important thing relates to the skill sets I have acquired over of a period of time. The skill sets I have acquired over the last 4/5 years have been acquired doing development on Windows-based systems. My development environment allows me to retain a core set of skills that are applicable across a wide variety of devices. The CLR (Common Language Runtime) remains the same in the way it runs and executes whether it’s on a mobile device or a desktop application or in a browser. Class libraries might change and you might add new references, but at the end of the day the code you write still compiles to that same IL code. I can thus retain the knowledge I have of the CLR and focus on learning the nuances of a particular implementation, such as focusing on aspects of SOA when developing WCF Services, or focusing on the intricacies of WPF when developing desktop applications. At the end of the day you are still writing code and your activities should be targeted towards a better understanding of your development environment, and ensuring that your code is of a great quality through tried-and-tested practices. Developing software is all about achieving a business objective.
  • Continuing from the previous point, I believe that all software development follow the same structured and disciplined approach. The platform on which you do it is irrelevant, it is more important that you follow best practices, and for this reason I believe you can write great quality software on the .NET platform, and if you do things right you could probably write that software on another platform too
  • From the second point I can also create an architecture that flows from end-to-end with total and complete integration. In other words I could develop an Intranet application that connects to web services from a web application and allows me to transmit information between the two without having to do any manual file copying. I can thus design processes around the activities in one area to interact with processes in other areas and create measurable and timely information. I could for instance allow a group of sales people to directly interact with customers from an intranet to a production website using the same technology with its various subsets.
  • I have not reached the pinnacle of what I can achieve on the .NET framework in terms of personal and professional development and I believe I can learn and apply the same practices elsewhere, but I still need to learn those best practices. Whether I learn them on the .NET framework or in a J2EE or Ruby-On-Rails environment, it’s not that relevant.
  • Share/Bookmark
posted by fr3dr1k in General and have No Comments

Finding the “sticky”

“Finding the sticky” is a phrase I have heard a few times recently and it has been mulling in my head. It refers to a brand’s ability to find a foothold in a specified target audience. Think of a lollipop that you unwrap and lick and how sticky it is then, and if you stick it to a wool jersey or to material how it sticks. A brand can be seen this way, and thought of in this way. Your brand must “stick” with those that get into contact with it. Finding the key to making it stick is a journey in itself because in today’s modern world of mass communication we are constantly bombarded with information, at an unprecedented rate, which makes it tough if you are a company or organisation seeking to create brand awareness with a specific target audience. I’m not sure if brand uniqueness alone will suffice, because novelty is something that dies off quickly. Yes, its important to create a fresh and appealing look, but beyond that you must be more.

  • Share/Bookmark
posted by fr3dr1k in General,eMarketing and have No Comments

Is Content Management Subjective?

Sometimes I get the feeling that using and developing a content management system is and can be very subjective, depending on the situation. I have found that dealing with the Marketing agencies that specialise in SEO and e-Marketing services in South Africa, was almost like trying to buy a meal at Spur without the onion rings, you can do it if you want to but it kinda is part of the meal. What I mean by that is that the majority of marketing companies in South Africa will try and push their development teams as part of their offering, which makes sense, but I know of at least one instance where a development company withheld source code, and then expected further development costs for any iteration to the website. To me thats kind of louzy, in fact its a downright rip off. Why would a development agency want to retain the source code of a paying client, the operative word being paying? I also find that some of these development companies tend to have a hashed-together content management system, a system consisting of regularly-used scripts, and a system that is sometimes not very flexible. Which brings me to the title of my post, is content management a subjective thing? Yes it is, because no two organizations have the same need, and I feel that most development companies try to offer you some flavour of content management, and although they profess to have your requirements close to the heart, they often persist with said content management system.

  • Share/Bookmark
posted by fr3dr1k in SEO,eMarketing and have No Comments

Kudos to Quirk

After I wrote yesterday’s post I sent I communicated with Rob Stokes via Twitter and I got an immediate response, first from him and then his colleagues. They promptly responded and I am much happier for it! Thanks Rob and thanks to Quirk. Hope I didnt cause too much damage to you in terms of ORM.

Here is why I want to work with Quirk:

  • I like their newsletter. I have been subscribing to it for a while now, 2+ years maybe, and I love the approach and the feel of the newsletter. Its informative, and they have a few quirky ways of saying things.
  • I loved the emarketing seminar I attended.
  • They are a progressive and innovative company, SearchStatus and BrandsEye come to mind.
  • They give away a free ebook!
  • Share/Bookmark
posted by fr3dr1k in SEO,eMarketing and have Comment (1)

Understanding the local (South African) SEO scene, and the people who provide services

I attended an e-marketing seminar hosted by Quirk, and presented by Rob Stokes (CEO of Quirk), in 2008. Before that I approached Quirk to give my site an audit, and sadly nothing came from it, and the feeling I got at that time was that they were too busy. In this week I sent an email to them from their website and also had a colleague of mine phone them, and again unfortunately they did not respond. I’m not sure what the reason for this unresponsiveness is but my initial impression of them was that they are a progressive and forward-thinking e-marketing and SEO company. I follow Rafiq on Twitter, and Rob Stokes, and I can remember Rafiq appearing on Carte Blanche a while ago, and if memory serves me correct he works/worked for Quirk. I can also remember someone from Quirk approaching me after I wrote an article on the need for content management, so it kinda baffles me why they are so sluggish in responding. I rated them highly, in the same category as Purple Cow, maybe better. And I mention Purple Cow because they have responded. I mean how come do Quirk appear on the top of the organic search for “e-marketing services south africa”. Strange. I mean my opinion of Quirk is becoming more and more tainted and disjointed. Are they a snobbish company only seeking to help those whom they think are good enough? I’m not sure.

So with this in mind I am trying to gauge the local South African market, in terms of who provides what services, and how good they are. I follow quite a few on Twitter so maybe a good place to start is by creating a list on Twitter. At the moment there are about 11 people on that list.

Just to give some background as to what my current needs are. I am involved with a B2C startup that aims to provide e-learning with the use of content from key strategic content partners. The content partners are World Class and have been around for a long time and their content has proven very successful. Our current need is to work closely with someone who can provide SEO and eMarketing services. We are developing our web-presence from scratch, and the idea was to incorporate key emarketing and seo objectives from the get-go. They key deliverable is to achieve first page SERP, since we believe our ROI will be closely linked with where we appear in search engine result pages. I have already contacted two companies from the Twitter listing, so we will see how it goes. I would have loved to get more than just the input of one company.

  • Share/Bookmark
posted by fr3dr1k in SEO,eMarketing and have No Comments
Get Adobe Flash playerPlugin by wpburn.com wordpress themes