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..

Tuesday, June 23, 2009

Day 6: The Day I Met Martin Fowler.

Dot .Net Dilemmas

I was pretty good with my reading over the weekend and managed to get through the first 4 chapters of Applying Domain-Driven Design and Patterns
Over the next day or two I will update this blog with the notes that I have made from each chapter. I am not sure how much use these will be to others but as much as anything else I want this to be an area where I can look back and see when and why I made certain decisions along the way.

This is just a quick update but as a start-up, I feel that these are two sites and services that I will use over the coming months.

Useful Websites:
  • 99Designs.Com: “Need a logo or a new webpage template designed? 99designs connects business owners with a thriving community of designers, who will compete to create the perfect graphic for you.” You basically start a competition with a small financial reward, where you describe your business idea to a community of graphics designers. You then, hopefully, receive dozens of designs from numerous designers and you choose one to be the winner.
  • UserTesting.Com: Low Cost Usability Testing. You get a video of a user speaking their thoughts on your site as they use it. You also get a written report describing the problems that they found while following your test requirements. Imagine how much more confident you will be on the day you go live, knowing that your design ‘works’ and has past all the Usability tests you set.

Useful Podcast:
Two (of many) Podcast that I have been listening to:

Finally, I purchased a new book today which I believe could be the bible of Web Usability and a MUST for anyone who plans to have a public facing web site or web based product

Friday, June 19, 2009

Day 2: Getting Started on the ‘Elevator Pitch’

Dot .Net Dilemmas

Last night I was reading up on how to create a good ‘Elevator Pitch’. I have to say that I'm not even 100% sure that I need one at this stage. I’m not looking for investment or help from anyone who I would need to ‘sell’ the idea to. However, I do think that it will be a good exercise for me to complete as it will force me to answer some very important questions about what the business should be. It may even have the effect of making me face up to the fact that my idea just won’t sell. I hope not or this could be the shortest-lived Micro-ISV of all time…

I have however, come to the conclusion that I would really like/need to get some help with the ‘Who is your Competition’ question. I know that I could go to Google of Bing and start searching on the web for all the companies and Micro-ISV that will be my competitors and that I will need to keep an eye on. Right now however, I just don't have the business knowhow to assess the success of a business just by looking at their website. I know that perfect person to ask, now all I need to do is get her to say ‘yes’.

I am going to be honest here, this is all very new to me and I am going to do all my learning and make all my mistakes in public so, if I am making stupid mistakes or asking stupid questions, please point them out and if you can, cut me a little slack to begin with.

Thursday, June 18, 2009

Day 1: BPD Micro-ISV

Dot .Net Dilemmas

For a long time how I have been thinking about and working towards starting up my own online business which, I have found out is called a ‘Micro-ISV’ . I don't think that I have a particularly brilliant business brain but, I look around and see that there are a lot of people who are just like me (and some that don't have the same skills that I have) running very successful software business. I think that there comes a time for most people when they would just like to work for themselves. Give it your best shot and see how it goes.
The great thing about having a full-time job is that, within reason, if the company has a bad month or you get sick, you still get paid the same as you did last month. On the negative side, when the company does really well and you’ve worked really, really hard, you STILL get paid the same as last month. I don't think that it takes a genius to figure out that, I will ever get ‘rich’ working for ‘the man'

Micro-ISV
I really don't like the term 'Micro-ISV' (Eric Sink is to 'blame'; he used it in an article for Chris Sells at Microsoft) but it does explain exactly what the business will be, a small Independent Software Vendor. And in my case a REALLY small Independent Software Vendor. To start with, it will be just me…. But that’s ok.

I have a number of ideas and products that I want to try and bring to market and I have settled on one as my first small footsteps into the world of online business. I won't go into what exactly it is that I hope to develop but, I have noticed a gap in the market in an industry that I have some background in and, I reckon I could help fill that gap (or at least make it a smaller gap).

Over the last few months I have been reading loads and loads of articles and listening to even more podcasts on how best to start an online business and what technologies I should use. However, except for that I honestly am at the very start of this journey and this is going to be my online journal of how I get on. The one thing that I keep hearing over and over is, 'Just get it out there', so that's what I plan to do. I hope to have version one of the product available in roughly 4 months.

This is day 1 – “Blank Page Day”. Hopefully, someday not too far into the future, I will be writing a blogs on how I have just made my first sale, my first year in business, version 2 of my product and hopefully (someday) being able to give up working full-time so that I can concentrate on my own million dollar business.

Although the aim of the business is (and should be) to make money (and lots of it), I hope that I learn a lot along the way. I plan to use a host of new ideas and technologies (new to me anyhow) and maybe some of the things that I learn and mistakes I make along the way will help others who are thinking along the same lines. If nothing else it will be an experience and it should be an exciting one.

Books
Ok, I am currently reading 3 books:
  1. Micro-ISV: From Vision to Reality by Bob Walsh (forwarded by the legend who is Joel Spolky)
  2. Neuro Web Design: What Makes Them Click? by Susan M Weinschenk
  3. Applying Domain-Driven Design and Patterns: With Examples in C# and .NET by Jimmy Nilsson
So, my plan is, by the end of June 2009, I will read all of ‘Neuro Web Design’ which is a very short and easy to read book. I will move my ‘Elevator Pitch’from my head onto paper and finally, I will be reading 1 chapter a day from Jimmy Nilsson’s book, so in 12 days, I will have the book finished and notes on each chapter on here.. All this, and working full-time, meaning that it will be in the evenings and the weekends..

Wish me luck…

Wednesday, April 29, 2009

Visually Impaired? Here, let's try and make this a little more difficult for you.

Dot .Net Dilemmas

I get the need for CAPTCHA on a website but, I really don't like it as a solution to preventing automated site attacks. I see it as real barrier to purchasing online as more often than not, it takes a number of attempts to get the word(s) entered just how the software wants to see it. Unless I really want something, I hit the 'X' in the top left hand corner of the browser. Now I'm a web developer and I find it tricky and annoying so I can only imagine how frustrating it is to someone who is simply trying to purchases tickets online for the first time, to see Celine Dion live in concert.

Now think about how much more difficult the whole process is if you are visually impaired. Recently I was trying to purchase tickets online (not to Celine Dion, I promise) when before the application would even let me know if there were any tickets still available I was hit with this:


I wasn't 100% sure what the words were (even after clicking 'Try another' a few times) so, I had a look around for some help. There right under 'Try another' is 'Vision Impaired' see it?


Don't get me wrong, it is a good idea and anything that helps people with a disability access to the web is a good thing; but just look how small it is... If you are visually impaired and can not see or make out the words in the Security Check, how on earth are you meant to see the tiny 'Vision Impaired' text?

Moving on, let's pretend that I am visually impaired and I have someone who is able to tell me what I should do next close by. I click on 'Vision Impaired' expecting to see the words displayed over the whole page in letter so big that you can make them out from space but no...
What you get next is an even smaller screen, that plays an audio of some numbers (that you are meant to type in to the text box provided) over the tops of some ghost like moaning and whispering.

So, if you are visually impaired, you first have to be able to find the 'Vision Impaired' link. If you some how miraculously find it and click on it, you have to find the play button and then hope that your PC or laptop has a sound card. If it does, you had better hope that your hearing isn't also impaired (it would explain wanting to see Celine Dion in concert) and than you are able to make out the numbers from the ghostly bingo caller.

As I said, I really don't like the CAPTCHA approach (I understand that it is easy to criticise and I haven't come up with anything better) but surely this is an idiotic solution to a very simple problem. If you are expecting people who are visually impaired to use your site, make it so easy for them. Just make the letters and words BIGGER...

Monday, April 27, 2009

It's my party and I'll... keep listening to my iPod if I want to.

Dot .Net Dilemmas

Why do offices (usually HR) insist on having employee birthday celebrations? Ok, I'll admit, I am a bit of a strange one when it comes to forced celebrations (hey, it's your birthday, you HAVE to be happy today... Did you hear me? BE HAPPY!!!!!). However, I can think of few things worse than looking up from my work and having to take my headphones off as the whole office stand around my desk, arms folded with a look on their face that falls somewhere between boredom and pure pain just to wish me a happy birthday.

It's happened in almost every company I've worked in and there is just no need for it. None!!!! It is pointless and simply a management exercise in touchy feely. The majority of people that I know hate it, really, really hate it. Granted, most people I know in a work environment are programmers and they aren't too fond of any social interaction. The worst thing about it all is that I have NO say whatsoever in it happening. It's suppose to be MY birthday yet, I sit here all day feeling slightly ill knowing that at any moment I am going to be surrounded by some people who never really speak to me, but are now going to sing to me...

So, it's my birthday today and I am sitting here writing this and waiting... Waiting and trying to take my mind of what's to come. I now believe strongly that it's not the getting older as to why most people hate their birthday it's waiting, like a man on death row, for the forced office 'celebration' to begin.
Time for my happy face... Tick, tick, tick....