Monday, September 14, 2009

Day 94: A Writer's Retreat….

Dot .Net Dilemmas

Quite a lot has happened to me since my last blog entry. Some good (I finally passed my driving test – Better late than never), some not so good (both Bohemian FC and Sydney FC have forgotten how to win), and some that I just can’t talk about on a public forum. Overall I am pretty happy how things are starting to work out. As for Project Something, Something well, it hit a bit of a brick wall as I had so many other things going on that I simply couldn’t fit any more hours in to the day to get stuck in to it. But that hasn’t stopped me thinking about it almost every spare moment that I have. I have gone past a lot of the technical questions that I had and now the thing that seems to occupy my mind most is, finding a domain name that explains the product I will provide which hasn't already been registered. It now makes perfect sense why web based companies have names like Yola and Zoho that have no real relevance to the service they provide. Today I watched a DVD called 'Aardvark'd - 12 weeks with Geeks', a documentary about 4 interns working for Fog Creek Software and given 12 weeks to design, develop, debug and deploy the product that became Copilot. They loved the name Copilot but of course the domain name was taken and they ended up paying $10,000 to secure the name. No matter how good a name is, I would never even consider paying that type of money. My brother Philip is the creative one in the family so, I am going to give him the details of my idea and see what he come up with. No pressure mate....

Over the last few days I have really been lucky with ‘finding’ somewhere I will be able to churn out all the lines of code that I need to finally get a working demo that I can show people and (hopefully) get them interested.

My girlfriend and her parents are going overseas for a month and I was asked to housesit their amazing place and look after their two dogs while they are away. So, I am typing this, sitting by the pool in 29 degree Sydney heat while looking out over the most beautiful gardens. I really have struck gold and have no excuses for not locking myself away and with every spare moment hammer out some real solid code and show some progress for all the big noise that I have been making….

I guess for the next while, my blog is bound to get more technical, This is to be expected as I will be nose deep in code for the next 3 months. I have made a commitment to have a shippable product by November 12th and although even at this stage I am not sure if that is realistic, I am certainly going to try.

Thursday, August 27, 2009

Day 77: < Insert Witty Title Here >

Dot .Net Dilemmas

There is a sure feeling that summer is on the way in Sydney. The A-league has kicked off again and Sydney FC look like they may just challenge for honours this season. Sydney FC will never replace Bohemian FC in my heart but I guess it’s like a heroin addict just 'getting by' on methadone. The warmer evening make you feel like you should be doing something with your time (other than working full time and working on Project “Something Something”) so, On Monday night I attended my first Sydney Alt.Net “Lightening Talks”. I knew that there was an Alt.Net group in Sydney but for some reason (which I can not explain), I thought that it was invite only. It isn’t so, on the advice of friend I went along. The meeting was held in Thoughtworks offices on Pitt Street and my first impressions were very positive. It’s a big bright open office, good sized monitors with comfortable chairs at each desk, a well stocked kitchen and work space environment conducive to getting things done. The fact that there was beer,soft drinks and pizza on offer too didn’t hurt when it came to forming my opinion.

Since coming to Sydney,I have found it pretty difficult to find other .NET developers in my general circle to bounce ideas off so, to be in a room with 30 or so likeminded people was a good experience. To date, all the decisions on what technologies that I am using for my product are based on my own personal preference, experience and research so it was exciting to see that some of the choices that I have made were somewhat validated as most of the talks were on ASP.NET MVC, Fluent NHibernate, IoC and JQuery. Of particular interest to me was Damian Maclennan’s 10 minute talk on ‘Making ASP.NET MVC simple with Fluent NHibernate with StructureMap’ and James Crisp’s ‘Securing your ASP.NET MVC site against code injection and x-site scripting’. Largely, I think that the type of people that go along to user group meetings are those that have a real interest and passion for what they do, so to hear them discuss and share their positive experiences of the technologies that I am using gave me much needed and timely encouragement to stay on the path that I am on. At the moment I am working my way through the SportsStore web application created by Steven Sanderson in his new book ‘Pro ASP.NET MVC Framework’. When I have it finished, I plan to migrate it to the Azure Cloud as I think that it will be an excellent exercise to ensure that the Frameworks and technologies that I am using work in the cloud. If there is interest, I think that I will offer to present my finding to a future Alt.Net meeting.

Finally, if you are developing a ASP.NET MVC web application, you will no doubt know the importance of the whole concept of Routing URLs. So, if for no other reason than it's like getting your homework done for you, you should read Chapter 5 of Pro ASP.NET MVC where Sanderson ‘gives’ you a full unit test for both inbound and outbound route mappings that you can simply plug into your own unit tests... Excellent..

Thursday, August 6, 2009

Day 50: Project Something Something Meets BizSpark

Dot .Net Dilemmas

Day 50!!!! I can not believe how quickly the time is going by. I am now really starting to understand why a lot of people who are looking to start their own company, save up a few months salary and take time off before embarking on the ISV adventure. It is not easy to have a full time job (especially when you are on the run-in to a major product release) and put in the time that is required to get a project of this scale up and running. Anyhow, that’s the reason for me not having time to update my blog but not an excuse for not continuing work on my project (which I have a working title of ‘Project Something, Something’ – Don’t ask…)

So one very important thing that I have done since the last update is, I have applied and was accepted to participate in Microsoft’s early stage startup program, BizSparks. I have to admit that this is one of those offers that may seem too good to be true and I spent more than a few hours looking for the ‘catch’ in the offer but I don't think that there is one. As they say themselves, it is Microsoft’s program that provides Software, Support and Visibility for Software Startups. You can expect to get;
  • Software. Receive fast and easy access to current full-featured Microsoft development tools, platform technologies, and production licenses of server products for immediate use in developing and bringing to market innovative and interoperable solutions. There is no upfront cost to enroll.
  • Support. Get connected to Network Partners around the world — incubators, investors, advisors, government agencies and hosters — that are equally involved and vested in software-fueled innovation and entrepreneurship who will provide a wide range of support resources.
  • Visibility. Achieve global visibility to an audience of potential investors, clients and partners
  • As a Microsoft BizSpark member, you’ll be tapping into a rich, vibrant ecosystem of peers, partners and support resources around the globe, helping you grow and succeed. Microsoft BizSpark is the quickest way to get your Startup fired up.
There are a number of conditions of acceptance into the program; your business needs to be:
  1. Developing software - Check
  2. Privately held – Check
  3. Less than 3 years old – Check
  4. Making less than US $1 million annually – (regrettably) Check.
You also have to have a company URL. I was a little worried about this because as yet, even though I have a number of domain names registered, I do not have a business website or even a landing page.

Up step Bob Walsh of 47 Hats. On one of the recent Startup Success Podcasts, Bob suggested that anyone who was looking to get involved in the program and had any questions to simply drop him a line with a brief outline of your startup idea and he would help in the BizSpark sign up process. So, 20 minutes after I completed the email, in which I described my product and explained my concern regarding the lack of a company URL and sent it off to Bob, I got a very prompt reply. Bob is a man of his word.

Two really good things to come out of the correspondence with Bob are. He showed me how to create a very professional landing page using a service call ‘Launch Splash’ until you have your own site up and running. He also thought that my idea was an ‘excellent focus for a Micro-ISV’. He could also see the same potential that I can for future projects based on this one idea. I can’t tell you how much confidence that gave me, as Bob as been very successful with his own Startups and I would say as seen thousands of startup ideas over the years. He has also written a number of books on the topics including ‘Micro-ISV from Vision to Reality’ and his latest offering ‘The Web Startup Success Guide

Two things that you should know about BizSpark; even though it is a Microsoft program you do not have to develop your software using the Microsoft development stack (but the free software may change your mind about that), it is open to anyone who meet the criteria. Also, the program is only open to new startup for 3 years at which time you are no longer part of the program and have to pay $100 exit fee. Hopefully by that stage, $100 will be less than a minute’s work for you.

I just hope that my BizSpark membership will entitle me to discount Azure rate, now THAT would be cool.


Wednesday, July 22, 2009

Day 35: My Shiny New Azure Account.

Dot .Net Dilemmas

During the week I signed up to join the Microsoft Windows Azure CTP (Community Technology Preview ). Just now, I received an Invitation Code from Microsoft for a Windows Azure account. I feel quite excited about it to be honest and can't wait to get started..

Apparently I have the following limits attached to the agreement:
  • Total Compute Usage: 2000 VM hours
  • Cloud Storage Capacity: 50GB
  • Total Storage Bandwidth: 20GB/day
I was also informed that Microsoft reserve the right to suspend my account activity if I exceed these limits..

I can live with that.. Now onwards and upwards to the cloud....

Monday, July 20, 2009

Day 33: I Have A Dream....

Dot .Net Dilemmas

The approach that I want to take in designing my software is to simply come at it with the end-user clearly at the forefront of my thoughts at all times. The users needs must be in my mind with every design decision that I make. My whole philosophy on software design is that it should be clean and simple, especially at the UI level. Applications that do ‘too much’ may look great and wow people at the start but it can lead to a complexity that can get old very quickly. This complexity can ultimately lead to unmaintainable software. Unmaintainable software is something that I can not have in my design as I plan to have continuous updates and releases to add value for my clients. In my experience users of any software application repeat the same tasks over and over and these basic tasks should be clean, crisp easy to use and above all solid and reliable. You can add the bells and whistles at a later date when your application is rock solid and you have delivered to your clients exactly what it is that they use and need. In a sentence, ‘Everything we do needs to make our product less annoying.’

Seth Godin said...
I hope that my software will be used on a daily basis and for this to become a reality; I have to have it become an essential and intuitive application for the user. My hope is that it is a piece of software that they could (no doubt) survive without but nonetheless software which makes their live so much simpler that, they wouldn’t want to. To paraphrase the marketing guru Seth Godin , ‘what we are selling is ‘Hope’. If people invest in using our software it will give them hope of a better business. The magical thing about selling hope is that it makes everything else work better, every day get better, every project work better.’
Read the actual article here What Marketers Actually Sell.

Putting Myself In Your Shoes... Phew!!!!
The way that I plan to achieve my simple design is:
To think hard about the people who will use my software and put myself in their shoes when I am designing the front-end. I need to stop thinking like a developer and start thinking about it like a user. I will think about each task and try to make the completion of that task a simple and enjoyable experience for the user, be it a 22 year old computer graduate or a 65 year old grandparent.

Years ago while I was taking a driving lesson my instructor told me that you should always drive like you have your mother in the front seat (unless your mother is Sarah Connor from Terminator) . Personally I think that designing a public facing user interface should be handled in much the same way. Think about what issues your mother or grandmother would have if they had to use your application and solve it from their point of view.

Worried that simply user interfaces won’t show off your talents or hook potential users? Well, tell that to Twitter who basically have one text field and an update button. Anyhow, when was the last time you heard of someone not using say, a website because it was two easy to use?

Wednesday, July 15, 2009

Day 28: Dizzy My Head is Spinning!

Dot .Net Dilemmas

There are a number of questions that I have that just keep going around and around in my head so, I have decided that I will write them down, post them on my blog and hopefully over the next few weeks solve each one of them.
Some of these are business process problems and some are application design issues. I have just lumped them all in together and put then here in no particular order.
  1. I plan to provided my software using a SaaS deployment model. I simply don't have (or need) the resources or infrastructure to host the applications for potential clients. I don’t think that it is practical (or advisable based on previous experience) to use a traditional hosting setup so I am looking to the ‘cloud’ to host my applications and services. As yet, I have no idea how to code against the cloud or how much it could potentially cost. I need to decided if I should use Amazon Elastic Cloud EC2 or Microsoft’s Azure (apparently Azure is the colour of the sky on a bright clear day). There may even be other providers that I have, as yet not even considered. I think I heard that you need to write Proprietary Code to use EC2 which would tie me into using it the future. This would be a huge negative. Something that I have heard is, because it is such a new ‘technology’ that you really can not afford to get tied to one provider as they may just pull the plug on it. So, as much as you need an entrance strategy to get onto (into?) the cloud, you equally need a very good exit strategy
  2. It may be a bit down the line but I now need to consider as I move forward with my application design and development, which architecture I will use to to architect my services? Should I use a Mutitenancy or Multi-Instance architecture? If I use Multi-Instance (which I have read is the best way for security and performance) is it as simple as just setting up a virtual directory for each client? Does the cloud even use the concept of IIS and virtual directories? How difficult is it then to manage multiple application instances?
  3. For argument sake, let’s assume that I go down the multi-instance road and that when a new client signs up to use the services, I simply configure a new virtual directory in IIS for that client and copy all the latest code into the folder and away they go. Now I am left with the question of, how do I manage software updates and bug fixes? Again I ask, how do I manage multiple application instances? Is it necassary to take the applications offline and write a script to update all the folders at once? If so, what are the implications of this downtime to my clients?
  4. Equally, if each client has their own database schema, what is the best way to manage code updates or table/field structures changes across all schemas? How do I create daily backups to ensure that my client’s data is backed up and safe?
  5. Do I need to build my admin application to manage and track to best serve my clients?
  6. There will be two distinct but explicitly linked parts to the application that I will offer. I am still not sure of this means that I need to develop 2 separate applications that share the same data or create one application and base its behaviour on the status of the currently logged in user. For example, if a user logs in as the owner of the site, will they just see additional views/fields and have additional functionality? I am not sure if this would lead to an overly complicated design and compromise the security of the site?

I have to say just writing these questions out like this is a great exercise in getting your thoughts clear. Suddenly each of the issues have a bit of structure to them and don’t seem half as daunting as they did 45 minutes ago. Excellent!
I hope to constantly update this list with issues as they arise, solutions as I discover them and decisions as I make them.

Monday, July 13, 2009

Day 26: The More I Learn... The Less I Know.

Dot .Net Dilemmas
A few things that I have learnt since I started this project and of which I am sure will come as no surprise to anyone are;
  1. It really is very difficult to have a fairly stressful full-time job and start a one man project/business (hence the reason that it has taken me so long to update this blog).
  2. Don’t believe all those books and websites that tell you that getting a product to market on the web is simple…. It’s simply not. In fact, this leads me to one other thing that I have found out and that is….
  3. THE MORE I LEARN, THE LESS I KNOW!
I now have a pile of books almost as tall as I am that I either need to, or would like to read but being totally honest, I could spend the next 2 years reading books and still not feel like I am ready to start. That is why I have now got to change the habit of a lifetime and stop procrastinating. I need to actually start producing something and just get it done, get it out there and get some early feedback from the people who may actually want to use it.

In fairness, all the reading and “thinking” has not gone to waste. I do feel that I have the right idea for a product and have identified my potential market. I also think that I have managed to come up with the right pricing structure to get potential clients interested. It’s going to be free. Yes FREE! However, I will explain how I am going to do that at a later date…

Another decision that I have made is, whether this micros-ISV is a success or not, the very least, I want come away from all is having learnt a lot of lessons that I can use in future projects (or if it comes to it, in my next employment.) In my opinion, ‘learning’ is never a waste to time. But just in case I am wrong and learning is in fact a waste of time, I have decided to pick technologies that I have an interested in. So, my application will be developed using the following technologies;
That should keep me pretty busy for a while. You may notice that I haven’t mentioned which database I will use. I plan to make this decision much further down the line when I need to. I am hoping that by implementing NHibernate, not only will it relieve me of the task of writing the mundane CRUD code; I will also me to switch between databases via the application config file but as yet, this is something that I need to look into..