AlwaysMoveForward.com - Software http://blog.alwaysmoveforward.com/Blog/software/BlogPosts en-US AnotherBlog RSS Monolith has a tax as well http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2015/7/15/Monolith_has_a_tax_as_well 7/15/2015 7:09:00 PM Arthur Correa Lately everywhere I look I read about the Microservice "tax".  Meaning when you implement microservices there are new dynamics involved that your company may not be accustomed to dealing with such as Additional operations overhead - Rather than just focusing on keeping one or two farms of servers up and running to a reasonable SLA you have to instead worry about as many farms as you have microservices.   Communication between services is slower than in process communications and have a higher risk of failure. Data consistency between services I completely agree with those problems, my problem isn't with the industry recognizing that there are differences with how your Microservices impact your business.  My problem is using the term "tax" to say that.  I can't think of a single instance where a "tax" is a good thing in any way shape or form.  From the time that we first understand what a tax is, we are conditioned to think that taxes are bad and somethin Microservices and Monoliths http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2015/6/16/Microservices_and_Monoliths 6/16/2015 12:00:00 AM Arthur Correa One thing I've had to do a lot over the years is deal with a Monolith .  In some cases it was not a bad experience, in others it was pretty horrific.  Often Monoliths aren't an intended outcome, but unless you take explicit actions to isolate functionality as the code grows the code base will gradually grow into a Ball of Mud.  A codebase starts off as something small and focused, but then over time, it grows organically as new user stories are added to it.     As these new user stories are added the code is extended in a tightly coupled way and the Monolith can be an advantage to an organization.  It enables any of its people with the right skill set to make changes in any areas of the system.  This gives the organization a lot of flexibility in how it staffs projects, and speed in how it can effect change on its codebase.  it lets a company focus on getting the right solutions in front of i JSON or XML http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2015/6/7/JSON_or_XML 6/7/2015 10:21:13 PM Arthur Correa Recently I was discussing about whether to use JSON or XML as the data exchange format for a web service.  I was surprised to hear that in today's environment my coworker wanted to use XML instead of JSON.  As for myself I pushed for JSON for a number of reasons. Now back when I first started coding years ago XML was just gaining in popularity.   At the time flexibility provided by the data structure was something new and incredibly useful.  Couple that with its ability to have defined schemas and transformations and it was a very interesting and powerful tool to use.  The first time I implemented web services in production I used XML for the requests and responses, and it worked very well.  After that I moved on and worked some SOAP services and again the XML worked really well. Then about a decade or so ago I was introduced to the idea of using JSON instead of XML.  I admit, at first I was resistant.  Why change?  XML worked we C# getting optional parameters http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2010/4/2/C%23_getting_optional_parameters 4/2/2010 6:35:40 AM Arthur Correa Scott Guthrie just posted about a few new features in C# 4.0.  Optional parameters are now part of the language.  These are something that I've missed since I made the switch to C# from C++ back in 2001 (Dont' get me wrong, it wasn't the end of the world, its easy enough to work around when you dont' have them, but its nice to have them back). He also shows an example of how you could use them with ASP.Net MVC.  All in all, like usual, he has some good info so check it out.  Android is catching up to iPhone http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2010/3/30/Android_is_catching_up_to_iPhone 3/30/2010 5:59:47 PM Arthur Correa Admob recently postest the latest Mobile operating share number latest numbers, and its not good for the iPhone.  The Android is rapidly catching up to the iPhone in terms of US market share, to the point where its looking like the Android will pass the iPhone in the use sometime within the next month or so. Is this really a big surprise?  I've always thought this was inevitable.  The iPhone is only on a single carrier (currently), and only has a single vendor that makes and sells the hardware for it (Apple).  Android on the other hand has multiple hardware manufacturers making phones for it (HTC, Motorola, Acer, Dell, amongst others), and is available on a number of different carriers.   Android is just setting themselves up to have a bigger market right out of the gate.  On top of that, if one phone maker screws up and makes a bad phone, no big deal, there is another phone maker making a great Andr Long over due post about NHibernate http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2010/1/13/Long_over_due_post_about_NHibernate 1/13/2010 9:04:19 AM Arthur Correa So back in August I mentioned that I was being slow in posting because I was making the switch to NHibernate.  Well I finished that conversion about a week after that post, so what's my excuse now? At any rate lets talk about NHibernate.  First of all.  I used it in conjunction with Castle's Active Record project.  It was a really quick and clean implementation.  I converted over from LINQ2SQL in about a weekend with the worst of the changes being some minor tweaks to my Repository classes over some LINQ object naming quirks.  The fact that I had placed a Repository layer between my Services and my data store really helped with this since I had a logical place to store all my CRUD logic that was independant of my ORM classes. From a development point of view everything worked out great, a few attributes and my data was loading and saving cleanly.  Now as I mentioned I'm using a Repository pattern in my Data Layer and you may have noti Agile development doesn't always mean Scrum http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/10/9/Agile_development_doesn%27t_always_mean_Scrum 10/9/2009 1:35:54 PM Arthur Correa I've noticed an interesting trend lately.  Whenever people talk about Agile development or Scrum they use the two interchangeably.  Like one always means the other, and there is no other Agile process other than Scrum worth mentioning.  Why do I think this is an interesting trend?  According to recent surveys (for example here) Scrum is the most popular Agile process in use today so why not just equate the two words?  It definitely isn't a horrible idea.  Then again is Scrum really the most popular?  I can also find evidence from just a year ago that Extreme Programming is the most popular Agile process (here), but for some reason Scrum wins out, why is this the case? Ok, we'll get to that, but first what are the other options out there?  Maybe looking at those other options will give us an idea why Scrum seems to be so widely known.  Scrum is a very good process for most software projects, but that doesn't mean its a good fit f Agile Development - Scrum http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/10/8/Agile_Development_-_Scrum 10/8/2009 1:41:47 PM Arthur Correa Ok, so you've heard about Scrum and want to know what all the fuss is about.  What does it mean to say that you are following a Scrum methodology?Well Scrum is one particular way to do Agile Development.  For example there are a set of practices that are common to Scrum projects such as.The team is self-organizing.  That is there is no project manager that plans the order of work, or give guidance on how to fulfill the iteration goals.  Instead the team has the authority an dresources to make all of these decisions on their own.A Scrum cycle, which is called a sprint, is 30 calendar days (unlike most Agile methodologies the Scrum guidelines are fairly specific on this.  This is actually a practice that a lot of Scrum teams ignore and generally end up with sprints that run anywhere from 2-4 weeks).Once all the features to implement have been selected for a sprint they don't change for that sprint.  The team focuses on getting those features working, if anything else comes along they go Agile Development - Extreme Programming http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/10/7/Agile_Development_-_Extreme_Programming 10/7/2009 1:43:35 PM Arthur Correa From what I can tell Extreme Programming (XP) is the most misunderstood Agile methodology out there.  For example one time I was giving Extreme Programming (XP) as an example of Agile development, and one person's response was "Extreme Programming?  I don't want to talk about just how you plan to write the code, I want to talk about how you're going to run your project." *SIGH*I think its name helps to tie into this sort of thing.  Some people hear the word "programming" and just shut down because they think they're going to start hearing about something technical.At any rate, I digress.  So what is Extreme Programming (XP)?  Like all the other Agile processes it focuses on frequent releases to promote the gathering of feedback and incorporation of that feedback to create a stable product that meets the customer's needs. Like other Agile methodologies XP has a set of core principles that it focuses on for success.  The team must deliver customer satisfactionThe team must deliver custom Agile Development - Unified Process http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/10/6/Agile_Development_-_Unified_Process 10/6/2009 1:45:15 PM Arthur Correa The Unified process is yet another method of Agile Development.  One of the key strengths of this process is that it encourages its users to tweak and change it so that it meets their needs.  Activities and artifacts in this process are considered optional and can be done or not as the team decides.  Even the order in which steps are done are up to the project team.   As a result there are a number of different variatons on this including the Agile Unified Process, the Rational Unified Process, the Enterprise Unified Process, and I could go on.  At its most simple and basic the Unified Process (UP) has a number of key practicesDevelop in short timeboxed iterations. This is a common theme in all Agile processes.  Deliver quality software in short, frequent cycles.  Gather feedback, iterate, and improve upon it.Develop the high-risk/value elements early (for example get the core architecture in place). This is something that isn't called out explicitly in other Agile processes, and I thi Took some time to convert to NHibernate http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/8/20/Took_some_time_to_convert_to_NHibernate 8/20/2009 2:08:57 PM Arthur Correa I know I haven't posted in a while.  I took the last month or so to convert my DAL over to use NHibernate instead of LINQ to SQL.  Why the change?  Well, when I first started this project the idea was that I would use this as a vehicle to try new technology.  NHibernate was one of those things on my list to try.  On top of that I started using it on another project at work, and honestly found I liked it a little bit better than LINQ to SQL.  More details to come, I just wanted to get some sort of post up here since its been so long (and also test out that my insert code still worked after the switch). Displaying Error messages in ASP.Net MVC http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/6/12/Displaying_Error_messages_in_ASP%3B%3BNet_MVC 6/12/2009 8:01:33 PM Arthur Correa Ok so as I implemented my blog software for this site I had to figure out a way to display error messages to the user.  For example if I had a required field that the user didn't fill in I wanted to alert the user to fill in that field. My first thought was that MVC should have something to handle this, so I was going to start there.  Unfortunately, after looking around a lot online, I realized that at the time MVC didn't have that.  So what to do? Well I have a base class for all of my Models, can I put something in there?  Just about every screen might have a need to return an error message so why not?  Ok, I had a place to put my errors, but how would I actually implement them?  I decided upon using a Dictionary to hold the messages.  The key to the dictionary would be the name of the control that the error message was associated with, and the value was the error message itself.  Then in my page code I checked that dictionary for IIS7 Injector null reference error on GoDaddy http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/5/27/IIS7_Injector_null_reference_error_on_GoDaddy 5/27/2009 6:28:05 PM Arthur Correa When I first launched this blog I found I was frequently getting the following error. Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [NullReferenceException: Object reference not set to an instance of an object.] IIS7Injector.InjectedContentStream.Write(Byte[] buffer, Int32 offset, Int32 count) +146 System.Web.HttpWriter.FilterIntegrated(Boolean finalFiltering, IIS7WorkerRequest wr) +265 System.Web.HttpResponse.Filter Implementing ASP.Net MVC Plugins - Storage http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/5/3/Implementing_ASP%3B%3BNet_MVC_Plugins_-_Storage 5/3/2009 10:23:32 PM Arthur Correa So I had my infrastructure in place for allowing plugins on this blog, now I wanted to add some sort of storage mechanism for those controls. My first thought was they could just connect to the database and add tables themselves, but there were a few things I didn't like about that. I wanted the blog site to just grab the plugin and be able to immediately use it.  However that would require allowing the control to add tables to the database.  Which means I'm writing code that uses a connection with db admin level permissions.  I didn't like that at all.   Now maybe if I had a separate database for plugins this could be an option, but still a poor one, but a separate database wasn't an option anyway.  So for security purposes if the plugins wanted to add data access they would need to do a separate step to run a db script.  Pfft. I also didn't like that granting the plugins data access would potentially allow them to manipulate the core blog data Implementing ASP.Net MVC Plugins Part 2 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/5/2/Implementing_ASP%3B%3BNet_MVC_Plugins_Part_2 5/2/2009 6:06:13 PM Arthur Correa Okay so I had found a way to do MVC plugins, but it didn't work in my environment.  So now what do I do? Well I still wanted to work in the MVC framework somehow.  Maybe not for showing my plugin control, but I did want to somehow handle form submissions cleanly.  Mainly for administering my control (configuring it as neccessary).  So what did I do? Well I went back to the way I've done plugin architectures in the past.  I defined an interface that would get used by my site to interact with the plugin.  The interface looks like public int ExtensionId - Uniquely identifies this plugin. public virtual bool IsBlogSpecific() - Is the control configured differently for each blog, or the same configuration for the entire site? public virtual ExtensionDisplay ControlDisplay - How to display the control on the page and handle its submissions. public virtual ExtensionDisplay AdminDisplay - How to display and admin UI and handle its submission Implementing ASP.Net MVC plugins http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/5/1/Implementing_ASP%3B%3BNet_MVC_plugins_ 5/1/2009 7:28:19 AM Arthur Correa So my blog software was pretty much fleshed out.  I could write posts, have tags, have a calendar of posts, an archive links.  Multiple blogs, mutliple blog writters per blog, File uploads, WYSIWYG text editing.  All in all I was pretty pleased. Now though I was starting to get into personalizing my blog with some controls that only I may care about.  Since I'd like to share this software with others and let them use it I thought it would be better if I made these features optional plugins.  No problem I've done plugin architectures in Win Forms, and in ASP.Net, how bad could it be in ASP.Net MVC?  Unfortunately it was conceptually easy, but ended up being prettty technically challenging.  I started off thinking that I'd do it like any other sort of plugin architecture.  I'd define an interface for my plugins, and then anythign that implemented that interface I could dynamically load and integrate, but the more I thought about it, the more Microsoft is Open Sourcing MVC http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/4/2/Microsoft_is_Open_Sourcing_MVC 4/2/2009 2:13:10 PM Arthur Correa I thought it was pretty interesting to hear that Microsoft is releasing this new .Net technology under the Microsoft Open License.  It was announced on Scott Gu's blog (no big surprise there, he is the source for all the best information about ASP.Net MVC)I think this is a great move on Microsoft's part.  It puts them on the same playing field as other MVC technologies that are making headway into the developer market.  From talking to some of my friends it works a lot like Grails and Ruby right down to the file layout.  Sure all three have some differences, but overall they sound pretty similar.Having become such a big fan of MVC I'm hoping that this move makes this new Microsoft Release successful. My MVC Experiement - Calendar http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/3/24/My_MVC_Experiement_-_Calendar 3/24/2009 2:02:50 PM Arthur Correa Ok so I had the basics of an ASP.NET MVC blog site up and running.  I had my data layer written using LINQ, I had my business layer defined with Services and Entities, and I was starting to build my MVC code on top of those.  I had figured out how and where I wanted to do Ajax, and how to page my result sets.  Now I decided I wanted to implement a calendar. Now if I was doing a Web Forms project I'd just grab a Calendar control and drop it onto the page.  Then tell it what dates to highlight server side.  Unfortunately I didn't have that option. The first thing I did was go out and look for some sort of open source/freeware sort of control that did what I wanted it to do.  I managed to find one provided by Yahoo here.  I started to use it, and it was sort of working.  I got it on the page, I managed to start styling it with CSS, and I was starting to set the dates on the calendar. I found it a little bit more than I needed though.  It's a pretty powerful calendar, and I'm sure it works My MVC Experiment - Paging http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/3/21/My_MVC_Experiment_-_Paging 3/21/2009 5:47:16 PM Arthur Correa Ok so I had the basics of an ASP.NET MVC blog site up and running.  I had my data layer written using LINQ, I had my business layer defined with Services and Entities, and I was starting to build my MVC code on top of those.But now I was finding that I needed to page a number of things such asUser lists when administering siteBlog lists when administering siteBlog entries Tag managementAnd I'm sure there are a few other things that I'm forgetting about right now, but those are the bigs ones I recall.So how did I do it?  Well at first I was thinking about writing my own control, but then I decided I'd do a little research first and see what other people were doing.  It was definitely possible that something already existed in the MVC framework that I didn't know about.Well after searching for a while I came to the conclusion that there wasn't anything in MVC yet, but there were some alternatives.  In particular I found this and this.  I ended up going with the first one that I found on My MVC Experiment Part 9 Ajax http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/3/11/My_MVC_Experiment_Part_9_Ajax 3/11/2009 12:00:00 AM Arthur Correa Something nice for the user experience.What do I mean?  Well take the login section for example.  That little login section up above to the right gave me some problems.  How could I have an mvc submission for a login action, but still get sent back to the same view? My first thought was that I could just get the name of the current view and just return that from the controller action.  Nope, I couldn't find anything that gave me that information.Now what?  Well the easiest thing is to just do an AJAX submission to just submit and refresh that section of the page.  Okay, MVC has some support for AJAX so lets look into doing that.   using (Ajax.Form("SendMail", new AjaxOptions { UpdateTargetId = "resultDiv" })) {    Your form elements here } using (Ajax.Form("Login", new AjaxOptions { UpdateTargetId = "loginDiv" })) { } Pretty basic, define a form with some controls to submit via ajax and update a specific div with the return results.  Okay this sort of worked, but I actually wanted to My MVC Experiment Part 8 - Route Mapping http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/19/My_MVC_Experiment_Part_8_-_Route_Mapping 2/19/2009 12:00:00 AM Arthur Correa So I've finally gotten to start working on actually MVC portions of the Blog code.  Lets see how does this stuff work?  Hmm ASP.Net looks at the url coming in and determines the controller and action from the url pretty straightforward. So just as an example here I am at http://www.alwaysmoveforward.com/software/Blog/Post/2009/2/19/My_MVC_Experiment_Part_8_-_Route_Mapping.  How does MVC use this url? Well it starts off by ignoring the first part of the url that contains the site.    Then, by default it looks next for the controller portion of the URL.  It takes that portion of the Url (in this case it says Blog, and looks for a Controller class called BlogController.  ASP.Net will then instantiate an instance of that Controller and try to do something with it. But what does it do?  Well it has to figure out what Action to execute on the BlogController class that it created in the last step.  To do that it looks again at the URL, wh My MVC Experiment Part 7 - Fun with ViewData http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/11/My_MVC_Experiment_Part_7_-_Fun_with_ViewData 2/11/2009 12:29:20 PM Arthur Correa Okay so I'm actually going into my MVC details now.When I first started using ASP.Net MVC I dumped everything into the ViewData dictionary using ViewData[""].  I had noticed the ModelContainer class that is created for you when you first create an MVC project, but honestly why bother?  You can just dump whatever you want into the ViewData at will so why create a bunch of properties on a class?Uhm ok, but lets take the opposite approach.  Why NOT create a bunch of properties on the class.  My opinion was that you'd very frequently have a lot of properties that were on the ModelContainer that weren't used all the time.  As a result a ModelContainer interface that was clutttered with junk whenever you used it.  Sure if you had stuff that was used all the time then it might make sense, but I hadn't yet come across enough commonalities in my code to justify it.So I went on my merry way.  I liked using ViewData[""], but I found it a pain in the view because it wasn't strongly typed.  Having My MVC Experiment Part 6 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/10/My_MVC_Experiment_Part_6 2/10/2009 1:46:38 PM Arthur Correa What has gone before-I had problems installing blog software with my host, so I decided to write my own.  I sort of force myself to do ASP.Net MVC, and was pleasantly surprised at how much I liked it.  I decided to do it as a multi-blog site just to make life interesting, and then used LINQ and realized that it made life pretty easy. So now that I've described to you the underpinnings of my site.  Here is where I get into the MVC stuff.  There were a few areas that I'll dive into such as How I used ViewData - Essentially it was the debate do I use ViewData[""] or create model classes and pass everything back that way? How I mapped my Routes - Which was largely based around how I wanted to target my different blogs. Where, when and why I used Ajax and how I used it - I tried using the MVC Ajax stuff, but I really didn't care for it.  It didn't feel all that easy to use. How to page my results in my web UI (again, I'm used to Web Forms power What to use f My MVC Experiment Part 5 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/9/My_MVC_Experiment_Part_5 2/9/2009 7:57:55 PM Arthur Correa myself to do ASP.Net MVC, and was pleasantly surprised at how much I liked it.  I decided to do it as a multi-blog site just to make life interesting, and then used LINQ and realized that it made life pretty easy. Ok, so I need some place to put my core business logic and my data access code.  Well I'm using MVC so I could just put my business logic in the Controller, but in my last post I explained why I didn't like that.  So I want to put my business logic in a Manager class.  First I define a Service layer.  Essentially it decouples entities from the Input Interface (whether that be Web app, web service, client app, another internal object, whatever needs to call into that domain logic to do work).   An important thing to note is that these Service classes are stateless. Ok, those are definitely staying.  I need my Business Logic after all.  But what about my Gateway?  The purpose of the Gateway is to encapsulate al My MVC Experiment Part 4 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/5/My_MVC_Experiment_Part_4 2/5/2009 4:02:22 PM Arthur Correa What has gone before-I had problems installing blog software with my host, so I decided to write my own.  I sort of force myself to do ASP.Net MVC instead of ASP.Net Web Forms, and was pleasantly surprised at how much I liked it.  Then I went to create my schema and decided to make my life more difficult for myself by having a multi-blog site. So how to architect my system on top of the LINQ generated layer.  Hmm well I'm using MVC.  I could just throw my business logic in the Controller classes.  Its the way they're described as should be done, but I dunno.  I'm not feeling it.  I'd like to be able to have my Business rules completely separate from my UI layer so I can put any kind of interface on top that I want.  WCF Web Service, Windows Form, Silverlight, whatever.  So if I put my logic into the controller, well I'm kind of rooted in the MVC stuff. So lets see, can I use designs I've used in the past?  Why not, should work.  Some minor problems upgrading to MVC RC http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/5/Some_minor_problems_upgrading_to_MVC_RC 2/5/2009 8:06:31 AM Arthur Correa Yesterday I ran into a couple of problems when I went to upgrade to the release candidate for MVC.  The first had to do with a custom autorization filter I had created for this site.  The second problem had to do with request validation suddenly being enabled. The AuthorizationFilterSome quick background for those not familiar with this method.  I wanted to do my own flavor of request authentication.  So I created a class that derived from FilterAttribute, and from IAuthorizationFilter.Deriving from FilterAttribute allowed my class to function as an action filter (i.e. it can be associated with a controller action and executes when that action executes).  In this case it allowed me to easily added this filter as an attribute in the code as well as allowing the custom authorization filter to execute just before my method was executed so that I could ensure the current user was allowed to execute the method. Implementing the IAuthoriztionFilter interface meant that this filter would run My MVC Experiment Part 3 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/3/My_MVC_Experiment_Part_3 2/3/2009 12:19:33 PM Arthur Correa What has gone before-I had problems installing blog software with my host, so I decided to write my own.  I sort of force myself to do ASP.Net MVC instead of ASP.Net Web Forms, and was pleasantly surprised at how much I liked it. Ok, so I'm writing my own blog software using MVC.  Sounds good, first lets get a schema going..Ok, blog entry table, a table for tags, a table or comments, throw in a users table, what else?  How about a role table for user roles.  Hmm I guess that's all I techincally need.  Its not much really when you get down to it.  Pfft you know what.  I want to learn more about the ins and outs of MVC and LINQ.  Honestly I don't think five tables are going to really push the envelope there now is it? Tell you what.  Lets make this blogging software that can support mutliple blogs, that's a bit more interesting. Was it neccessary? No, would I just willingly add complexity in my daily job?  Most definitely not.  I p My MVC Experiment Part 2 http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/2/1/My_MVC_Experiment_Part_2 2/1/2009 12:39:48 AM Arthur Correa What has gone before - I had some problems installing my blog software so decided to write my own.  Now what do I do?Well my original idea was to implement this using ASP.Net Web Forms, couple that with a little Ajax action, some LINQ, man this will be so sweet I thought.I started playing around with it, and in my travels of reading up on LINQ I came across some MVC stuff.  Hmm interesting, what is the new ASP.Net thing they're talking about.  Looks interesting.  I kind of like the way the files are laid out and how the pattern implementation ties them all together.Wait a second.. Where are my Web Forms?  I'm used to Web Forms, this UI code looks like plain old HTML.  Bah who wants to do plain old HTML I thought.  The heck with that, I'm sticking with my web forms site that I started, couple it with a little Ajax action, some LINQ, its going to be soo sweet.Wait a second, what's that?  MVC is the way of the future?  You mean its not just some fly by night thing that Microsoft is going My MVC Experiment http://blog.alwaysmoveforward.com/Blog/software/BlogPost/2009/1/31/My_MVC_Experiment 1/31/2009 11:09:05 PM Arthur Correa So I wanted to start blogging, no particular reason, I just finally decided I wanted to do it.  I go to my hosting provider, and click on the link to add some blogging software to my site.  You are not authorized to install that... Hmm, let me check.  I have basic hosting, I have the correct hosting platform type, it says I should be able to install it. So I try again. Nope. *Sigh* okay.  Email tech support, "Ok let me take a look" Mr Support responds cheerily.  "It looks like it needs a database instance to exist to install.  Create a database instance and you should be all set." Great ,lets do it!  I create the database, click the link to install Nope. *Sigh* okay.  Email tech support.  "What am I doing wrong."  I ask. Mr. Support cheerily responsds.  "Your blog software needs a database instance.  Make sure you have one created."  "Uhmm, ok" I say, "but I do have an instance." "Well then that must be the