The
asp.net MVC 2 RC 2 was made available on February 4, 2010, you can download it
here.
This new release has some cool features such as the following:
Areas:
The Areas were first introduced with the MVC 2 Preview 1 release. However, I've decided to include some information about areas since the ASP.NET team has made some changes to this feature since its release.
Areas allow developers to partition large projects into smaller more manageable smaller units that are referenced to as
areas. Each area has the same structure as an
asp.net MVC project, and within an application you can have many of these MVC structures called areas. This new feature helps manage the complexity when dealing with large projects and facilitates multiple teams working together in separate
areas of an application.

After you add an Area, Visual Studio will create a folder labeled Areas and within this folder you'll have your new RSVPS area with the necessary folder structure that allows you to separate the files and the functionality of an specific area of your application:

Model Validation:
This new release uses Model validation instead of Input validation as the previous versions did. This means that now MVC runs all validators on an object, as long as that object has at least one value bound into it during model binding. It also uses Data Annotation for validation
which allows you to add validation rules declaratively to Model and ViewModel classes within an application.

Read
Brad Wilson's blog for details about this change.
The above are some of the new features that I really like and use with ASP.NET MVC 2 RC2. If you want to upgrade your existing MVC 1 projects to MVC 2 RC2 you'll need to do the following:
Upgrading an ASP.NET MVC 1.0 Project to ASP.NET MVC 2 (as described in the ASP.NET MVC 2 RC2 Release Notes)
To upgrade an existing ASP.NET MVC 1.0 application to version 2, follow these steps:
1. Make a backup of the existing project.
2. Open the project file in a text editor (the file with the .csproj or .vbproj file extension) and find the ProjectTypeGuid element. As the value of that element, replace the GUID
{603c0e0b-db56-11dc-be95-000d561079b0} with
{F85E285D-A4E0-4152-9332-AB1D724D3325}.
When you are done, the value of that element should be as follows:
<ProjectTypeGuids>{F85E285D-A4E0-4152-9332-AB1D724D3325};{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}</ProjectTypeGuids>
3. In the Web application root folder, edit the Web.config file. Search for System.Web.Mvc, Version=1.0.0.0 and replace all instances with System.Web.Mvc, Version=2.0.0.0.
4. Repeat the previous step for the Web.config file located in the Views folder.
5. Open the project using Visual Studio, and in Solution Explorer, expand the References node. Delete the reference to System.Web.Mvc (which points to the version 1.0 assembly). Add a reference to System.Web.Mvc (v2.0.0.0).
6. Add the following bindingRedirect element to the Web.config file in the application root under the configuraton section:
7. Create a new ASP.NET MVC 2 application. Copy the files from the Scripts folder of the new application into the Scripts folder of the existing application.
8. Compile the application and run it. If any errors occur, refer to the Breaking Changes section of this document for possible solutions.
The above instructions are from the Release Notes document included in ASP.NET MVC 2 RC2.
Good Luck!
SimpleProject is a web based project tracking application which I intend to use in my consulting business and in my wife's tax preparation business. If everything goes as expected this is also an application that I will be offering to other solo entrepreneurs and micro and small businesses.
Last night I finally completed the mockup of all the main pages and the navigation, and I am very happy with the results. I want to mention I used
balsamiq to create these mockups and I absolutely love this product, it is easy and simple to use and with a little practice you can really create nice looking mockups.
The next step is completing the database schema, I am probably 60% done with it so I should be able to start coding (finally) this weekend... wish me luck! I have decided to use
asp.net web forms for this project instead of MVC... my decision was based on the fact that I have much more experience with webforms than I do with MVC and this will allow me to move faster... I also have invested time and money on some third party controls that I might end up using for this web application.
About office space...
I am still reluctant about getting a shared office space, it is not cheap, and I know I will only be using it maybe for a few hours every other day or so. You see, I have a full time job and also run a small software consulting business from home on the side and I am very responsible about not using but my free/personal time to work on this startup. I have the idea that having a space where I can do work for my startup is going to help me to think of this as a real business and not only a hobby... but then again I don't know if I can stretch myself (and wallet) by getting a shared office space where I'll have to drive to and also pay a monthly amount for it... I asked a question
here and got some real good answers... but I haven't made a decision yet.
If you have any suggestions please share them with me. And if you have some free time and would like to participate in the beta test for SimpleProject, please sign up
here.
Creating our applications for our users and not us, this is nothing new and it seems logical right? as a software developer we create applications for our users, to help them resolve some sort of issue or facilitate some manual process, etc. This is what software developers do. And in many cases we just open our
SDK of preference and start creating this much needed applications using only our own instincts and preferences.
If it was just this easy, we'll all be making a fortune selling these much needed applications to a lot of businesses out there. The need for software applications to resolve problems and/or enhance existing manual procedures is real. However, my opinion is that most software developers, systems architects and the like spent too much time talking about what framework to use, what programming language, or how to incorporate that new cool language feature that everybody is talking about instead of spending time asking real users what is it that they really need. I know, in many cases we might work for a large company and have the middle man, the business analyst or project manager who tell us what to do, and in most cases this works, however when you are running a Micro-ISV you don't have the luxury of counting with all those people which in many cases, the less people that are involved in a software project the better - I'll be writing about this specific topic in a coming post.
As software developers, we tend to have these endless discussions about the latest tools, technologies, patterns, etc, and most of the times we do enjoy engaging in these discussions, it is fun and sometimes we learn one thing or two. However, this is an activity that does not mean anything to the end user of our applications, in fact, the user can care less what tools the software architect or the developer chooses to build an application, they only care about having the application do what it needs to do and to have it ready for use sooner than later.
For example, let's say we are developing some application that we know a lot of users will be interested on, we have received some feedback from users and have an idea on what it is that they need and want. Now, we have used our wisdom (and experience, etc) to decide we are going to develop this application as a web based application. This is great! no problems there, the issue comes when we start over thinking and arguing about what web technology, framework to use. Maybe we like PHP and MySQL, after all it is free and open source, or maybe we like the Microsoft platform,
asp.net, SQL, etc... and that is OK too. The problem exists when we start wasting time arguing with our team or with ourselves about what technology is better, and often we are bias when making our decision, we usually decide to use what we like and not what we know is better for the specific application and the user base. Most of these discussions are based solely on what we prefer, it is based in our own ideas of what's better and more often than not it has nothing to do with what the users want, we do not make these decisions based on what's best for the user. There are some exceptions, so please calm down and don't get too mad with me just yet.
The truth is that the user does not care about all these details that we as developers care too much about, the user does not have a preference regarding the framework or the programming language, I know is a shocker for most of you... but it is the truth, they are the normal ones, we are the geeks and they don't care about the tools we use. As a developer myself, I love to try new things all the time, but I reserve the use of these new frameworks and technologies for my own little projects, samples, etc... I try to avoid the use of new frameworks and technologies when developing a new application that will be used by real people and in a production environment, I know by experience that trying a cool new control, tool or a new feature is not what's best for my users. It is always possible to use the newest and greatest, it is just that doing this will require more time, will more likely have more bugs and this is not what your user wants, we all should know that by now.
I am building my new
Micro-ISV with this mindset, create software that it is simple to use and simple to manage. My main goal is to build applications for my target audience which is micro businesses and solo entrepreneurs, you can learn more about it
here. I am doing my best to make sure that I create something that adds value to my users, software that helps them do their job and at the same time I am doing this by using the tools that make the most sense for the type of application I am building. After all, the goal is to create something useful, even if that means I will be using tools that aren't too exciting or new for me or my developers... the important thing here is to help my users and if I succeed at that, I'll be happy.
Next time you are creating a new application for a user, or are working in a team that is about to develop a new application, think of the user, think of what is better for them and try not to start developing your product solely based on your own technology preferences.
Good luck!
A week ago I released a new version of my
business website, then I asked for feedback about the overall design of this website using LinkedIn questions. I didn't realize I'll get so many opinions and valuable feedback! It was an eye opening, many people provided very valuable feedback, with details that you usually get only when paying a web designer or design firm.
I have been a member of
LinkedIn for some time now; In the past, I've used it to share knowledge and experience by answering web development questions, and to look for business and job opportunities. It was just now that I thought about using it to ask a question myself and see what kind of feedback and answers I will get. So I posted
this question and needless to say, I was very impressed, the quality of most of the answers I received was very good, some of them even providing detailed information that I used to fix and make changes to my business website right away. All of this just by asking a simple question.
The power of professional and personal online networks is real, I can see how these networks will help me and my business succeed by using its valuable resources such as people's experiences and knowledge.
Are you a
LinkedIn member yet? if you are not, consider creating a profile and if you are already there, then please consider
adding me to your network.
Ricardo.
A few days ago my main machine running Windows XP died on me. Thankfully I bought a small HP box with
Windows Home Server on it to backup all my home computers and also to use as a media server. I am glad I did this.
I decided to get the Windows Home Server because I was afraid I didn't have any real backup solution for all of my computers at home. There are 3 workstations, all running Windows XP, a MAC workstation and three laptops running Windows Vista, Windows XP and one is a MAC.
Up until a few months ago I was doing manual backups, saving them to a shared folder located in one of the workstations. It was time consuming and painful... and then I discovered Windows Home Server. This neat little server allows me to do full backups of all my computers, and it also provides a central location to store all the photographs, video and music which used to be stored across all of the other computers before.
So everything was fine until a few days ago, my main machine, which I use for software development didn't want to start again after I added some software and applied some updates. Needless to say, when I realised the computer wasn't going to start I just stared at it for a very long time, I was a little shocked since the last time I had a similar problem was a very long time ago.
So after trying the usual stuff, booting from a Windows XP cd, doing the repair option, executing chkdks, fixboot and fixmbr multiple times without success, I decided to just restore my computer using a backup from a night before using the Windows Home Server.
I downloaded the
Home Server restore cd files and then burned a blank cd with the contents of it. Then I went to boot from this cd and I was happy to see the Windows Vista like background showing me all of the network and hard drive drivers it found. This step is very important, if do not see any drivers for your network card, make sure you get them before trying to restore as you need to connect to the Home Server in your network to do this. If you don't have the network drivers, you can get them from your Home Server, just go to another computer with access to the Home Server, insert a USB drive and open one of the backups from the Home Server console, it needs to be one of the backups that belong to the computer you are restoring, once you open the backup file, you'll see a folder that has all the drivers in it. copy them to your USB drive and then go back to the computer being restored and upload these drivers. There is an option to search for drivers in a USB drive in the restore wizard, you won't miss it.
I did see the network drivers and all of my hard drives in this page so I just continued to the next step, the wizard asked me for the Home Server password, I typed it and then clicked on the next button. This is where I then realized that I should have tested the restoring option before, when all my computers where up and running to avoid surprises such as the one I got...well too late for that. The problem I encountered is the reason I am writing this blog and I hope someone with the same problem runs across this blog and finds the solution.
After I entered the Home Server password I received the following message:
"
An unknown network error has occured during PC Restore...Please verify that your network conntection is active and that your Windows Home Server is powered on."
Yikes! the first thing I did after that was restart my computer, boot from the cd and do it all over again... nothing, same error. I know that the connection existed since the wizard was able to see the home server, it showed me the name of it.
I tried restarting the Home Server, the computer to be restored, etc... no luck. Then, after searching for about an hour... I came across
this post that gave me the answer...
"Try disconnecting the network from the Internet and trying again; it's name resolution that's the problem."
Yes, I did that and it worked flawlessly, the restore took approximately two hours and then I was able to log on to Windows and all of my files and programs where there, like nothing had happened. The problem seems to be the way some ISPs and/or routers are configured, it causes a problem with the name resolution.
Lesson learned, if you are having the same problem and are receiving this error:
"
An unknown network error has occured during PC Restore...Please verify that your network connection is active and that your Windows Home Server is powered on."
Make sure your Home Server and affected computer can communicate, they need to be connected to the same switch, hub, etc... however, make sure that there is no connection to your cable modem or any other internet service, otherwise you might see this error and it will prevent you from restoring your PC.
Good luck!
Lately I have been trying to use
ASP.NET MVC on new web projects. One main reason is just to get familiar with it and understand it as I understand
ASP.NET web forms. Below, is a very simple tutorial that walks you through the necessary steps to create an
ASP.NET MVC application with Create, Read, Update and Delete (CRUD) capabilities. This sample application also uses Linq to SQL and takes full advantage of data scaffolding.
First, if you haven't already, you need to download and install
MVC 1.0, you can do this
here or better yet, you can download it using the
Web Platform Installer, which you can use to download and install
MVC 1.0 and many other tools such as MS SQL Express, and many toolkits to help you with your development.
Once you have installed
MVC 1.0 in your computer, let's go ahead and create our
MVC web application.
Open Visual Studio, Create New Project, select Web and then
ASP.NET MVC Web Application from the list of templates.
After you click OK, Visual Studio asks you if you want to create a Unit Test project. This is a new feature, and you should take advantage of it since one of the main reasons to use the MVC pattern is that it is easier to unit test than the web forms pattern.
If you want to create a unit test project for your new MVC application (recommended) just click OK.
After your application is created, you'll see a solution with two projects, one is the MVC application and the other is your test project.
asp.net MVC creates the following folder structure by default, you can change it if you want:
If you open the Controllers folder, you'll see two files, AccountController and HomeController. These two files are created by default and they are intended to give you a head start with your MVC application. In the Views folder, you'll also see three folders (Account, Home, Shared) with aspx files in them. These are View files that Visual Studio created by default.
The
asp.net MVC application template is ready to run as it is, as simple as it seems, it already has Membership functionality so your users can register, log in, change password, etc... Of course the application is not very useful yet since it doesn't have anything for your users to see or do other than register.
Let's see what this sample application looks like, hit Ctrl-F5 to run the application. This is what the sample MVC application looks like. It has two pages (Home and About) and a link to Log On which will take you to a registration form, fully functional!
Our next step is to add a database so we can then create controllers and views to view and manage this data.
Locate the App_Data folder and right-click on it, then select Add | New Item. The Add New Item window open, select SQL Server Database and type the name of your new database. For this sample, I used a very creative name "mvcappdb". Click OK.
After adding our new SQL Express database to our project, we need to create some tables. You can do this from within Visual Studio, just double-click on your database file and you'll see your database objects in the Server Explorer window. I created two tables, Customers and Projects, now I'll show you how to create LINQ to SQL classes to access our database.
This is what my database looks like after I created the two tables:
Next, I am going to add LINQ to SQL classes for our project. LINQ to SQL let's you create CRUD ready applications very easily and it integrates very nicely with the MVC framework.
To create the LINQ to SQL class, right-click on the Models folder and select Add | New Item. Select Data from Categories and then LINQ to SQL Classes. Type a name for it (I am using the name MvcApplication) and then click Add.
Now, let's create our data classes, to do this we just drag our tables from Server Explorer onto this design (yes. it is that easy!), see below:
Now we need to make some changes to the properties of our LINQ to SQL classes. Open the Properties of the MvcApplication.dbml file and change the values so it looks like the image below, this is important because we are going to call this classes from our code using these names:
Save the MvcApplication.dbml file and close it.
The Controller, we are going to create two controllers. One for each one of our database tables. This will allow us to create the necessary views for our application.
Locate the Controllers folder, right-click and select Add | Controller. A new window will open, make sure you name your controller as it is shown below and then add another controller for the Projects table.
When creating your controller, notice that Visual Studio asks you if you want to add action methods for Create, Update, and Details scenarios. In our example we will check this box because we are creating a CRUD application and these methods are necessary.
After creating the two controllers, one for Customer and one for Projects, you'll see two new classes in your Controllers folder, these classes contain public methods to access and manage your data (remember we checked the box to add action methods? this is it).
Everything looks good so far, however, we still need to add some code so we can interact with our database using LINQ to SQL.
First, we need to add a reference to our LINQ to SQL model, add "using MvcApp.Model;" to the top of your class file. Now, let's modify the Index() method in our Customers controller so we can actually return some customer data and view it.
The Index() method is going to be used to create the default (Index) view of your Customer data, it will display a read-only list of your Customers.
Locate the Index() method in your CustomersController class. We are going to replace the existing code with the following:
public ActionResult Index()
{
var db = new DB();
var view = db.Customers;
return View(view);
}
What we are doing is instantiating our LINQ to SQL class and then returning the Customers table. Build your application, we need to make sure everything is Ok and also we need to do this before we go to the next step.
That is all the code you need to display a data grid of your Customers data. However, we still need to have a View to do this. To accomplish this will let Visual Studio create the View. Right-click anywhere inside the Index() method we just modified ans select Add View.
The following window opens, make sure you check/select the options as shown below:
Visual Studio adds a new folder labeled Customers under the Views folder. Also, a new Index.aspx file is created in this new folder, this is your list view for the customer's table. Hit Ctrl-F5 to see this page.
Once the default page is loaded, just add "Customers" to the end of the URL. You now have an empty data grid with all your Customer table columns in it. Not very helpful, but we are getting there.
You'll notice that MVC adds some action links to the grid (Edit, Details) and the page itself (Create New). If you click on any of those, you'll get an error because we have no implemented any of those views (Edit, Details, Create).
Let's go ahead and create the code and the View for the Create action so we can start adding some data to our Customer's table.
Go to the CustomersController file and locate the Create method, and make sure you go to the one that uses POST and not the GET method. It is best practices to use GET and HEAD only for retrieval purposes and nothing else. GET and HEAD are considered "safe".
Replace the existing Create(FormCollection collection) method with the following code:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Customer customer)
{
if (ModelState.IsValid)
{
try
{
var db = new DB();
db.Customers.InsertOnSubmit(customer);
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View(customer);
}
}
else
{
return View(customer);
}
}
The above code creates an instance of our database object and then it uses LINQ methods to insert our new customer object and then it submits the changes to the database. Finally, it redirects the user to the main page (the list view) and if it fails, it also redirects the user to the starting point, the list view page.
The line "ModelState.IsValid" validates our customer object before we do anything else. If any of the data is not valid, the view will display error messages. When Visual Studio created the views based on our controller(s) it also adds client validation to the views.
Build the project.
Let's create (or better said, let Visual Studio) a view to create records in the Customer table. Right-click anywhere inside the Create method and then select Add View. In the window that opens, make sure the following options are selected:
Click on Add, the new view opens. Before we run the application again to see if our new view works, we need to modify it a little bit. Visual Studio and MVC are smart when creating these views, however, it doesn't know if your primary key is set to increment automatically (auto number). In this example, our database is set this way so we need to remove this field from the Create view or the view will not work correctly. You need to remove the CustomerId controls from this view, see image below, I removed the highlighted text.
It looks like we are ready to test this, hit Ctrl-F5 and then add Customers to the URL. Once you are in the Customers list view page, go ahead and click on Create New.
The new Create page opens up and you should see a nicely formatted form with labels for each one of our table fields (excluding the CustomerId) and text boxes. Let's fill those up with some test data and then click the Create button to save it to the database. You'll be redirected to the Customer view list where you should see the new records you just created.
Finally, we are going to add the necessary code to add the Edit view to our application.
Replace the existing code for both Edit methods with the following:
//
// GET: /Customers/Edit/5
public ActionResult Edit(int id)
{
var db = new DB();
var customer = db.Customers.SingleOrDefault(x => x.CustomerId == id);
return View(customer);
}
//
// POST: /Customers/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection collection)
{
var db = new DB();
var customer = db.Customers.SingleOrDefault(x => x.CustomerId == id);
try
{
UpdateModel(customer, collection.ToValueProvider());
db.SubmitChanges();
return RedirectToAction("Index");
}
catch
{
return View(customer);
}
}
Build the application and now let's create the Edit view. Right-click anywhere within the second Edit method ans select Add View. Make sure the window that opens have the following options selected:
Once the new view opens, let's go ahead and remove the textbox that was created to modify the CustomerId value, we don't want/can't change this value. We also do not need the validator for this field, we'll just leave the label for now:
I just removed the "Html.TextBox" part from it and the validation.
Hit Ctrl-F5 and then add Customers to the URL and then click on Edit. This is what the new Edit view looks like:
At this point, our application can view, add and edit records. We only need to add the delete functionality to it and we'll have a fully functional CRUD enabled ASP.NET MVC application.
ASP.NET MVC does not add the Delete function by default, so we'll have to code this ourselves using our LINQ to SQL object, it is pretty straight forward. Following the same structure as the other methods in our CustomersController, I've added the two new Delete methods. See below:
//
// HTTP GET: /Customers/Delete/1
[Authorize]
public ActionResult Delete(int id)
{
var db = new DB();
var customer = db.Customers.SingleOrDefault(x => x.CustomerId == id);
if (customer == null)
return View("NotFound");
return View(customer);
}
//
// HTTP POST: /Customers/Delete/1
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Delete(int id, string confirmButton)
{
var db = new DB();
var customer = db.Customers.SingleOrDefault(x => x.CustomerId == id);
if (customer == null)
return View("NotFound");
db.Customers.DeleteOnSubmit(customer);
db.SubmitChanges();
return View("Deleted");
}
With the code above, we are basically doing the same thing as we did with the Update methods. We query our Customer's object, get the one record we are about to delete and then save our changes to the database.
If you want to prevent unauthorized users from deleting records, you can add the attribute "Authorize" which prevents unauthorized users from deleting any data. This is an example of the attribute:
[AcceptVerbs(HttpVerbs.Post), Authorize]
Also, if you want to specify an specific role to authorize a certain action in a view, you just need to specify that in the attribute as well. For example, if you just want to allow users with the role "Administrator" to be able to delete records, then you'll just add the following right above your second Delete method:
[AcceptVerbs(HttpVerbs.Post), Authorize]
[Authorize(Roles = "Administrator")]
Build your project. Let's create our Delete view, right-click on the second Delete method and select Add View and then select the following options:

Yes, we don't have a Delete option under view content, however we have the Empty option which will create a blank view for us.
Once the new view is opened, add the following html/tags to it:
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Delete Confirmation: <%=Html.Encode(Model.FirstName) %>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Delete Confirmation</h2>
<div>
<p>
Please confirm you want to remove this Customer from the database:
<i> <%=Html.Encode(Model.FirstName) %>? </i>
</p>
</div>
<% using (Html.BeginForm()) { %>
<input name="confirmButton" type="submit" value="Delete" />
<% } %>
</asp:Content>
This will complete the Delete view. Let's test it now. Hit Ctrl-F5 and then add the following to the URL:
"customers/delete/1"
This is telling the MVC application to go and find the customer with id 1 and delete it.
"customers" = customers object
"delete" = action
"1" = id
If you want or need to add the same functionality to the other controller, just repeat the steps above for each one of your controllers and actions desired (list, create, update, delete).
This is a very basic tutorial, I hope it helps you understand ASP.NET MVC a little more by trying this practical approach where we created an application that has CRUD capabilities.
Good luck!
Ricardo D. Sanchez
There are many ways and venues to learn and build your professional software development skills. Not all of these are free or as good as they appear to be. If you are a beginner, or want to brush up your skills I recommend you take a look at ramp up.
What is it?
Ramp up is a free, online, community-based learning program that helps you build professional software development skills. The ramp up program was created by Microsoft, and all of its content is created by well known people, who are experts in the different Microsoft technologies. These experts include, well known authors, MVPs, and developer community leaders.
One of the most interesting things of this program is that the content is created and maintained by software experts, such as:
- Scott Allen
- Dino Esposito
- Sara Rea
- David Leblanc
- Tom Kinser
and many more, click here to view the full list.
What is the format?
This program is divided into various tracks, and you can sign up for as many as you want, it is free. The available tracks as of October 2009 are:
- Move from ASP to asp.net
- Learn asp.net: for PHP Developers
- Web Development with asp.net
- Develop Windows Mobile 6 Applications
- SharePoint for Developers (part 1 and 2)
- Visual Studio 2008
- Developer Basics
- Java Developer: Learn .NET
- VB 6.0 Developer: Learn VB 2005
- VS 2002/2003 Developer: Learn VS 2005
You can sign up for and complete as many of these tracks as you want. Once you sign up for one of the tracks, you will have access to a page with a summary, links to the learning material and all the steps required to complete the track. The learning materials are composed of the following:
- Word documents
- Videos
- Labs
As you read and complete each one of these training materials, you click on a button to mark that step as completed and then move to the next step. The Ramp up website has a very useful page to help you keep track of your learning resources.
How to start?
Well, as I mentioned early, it is a free program so all you have to do is sign-up for it and start completing the tracks that interest you. You learn at your own pace.
There is also a Ramp up forum where you can find answers to your questions about the Ramp up program or any other questions related to the topics in the program tracks.
Summary
Ramp up is a cool program, it has quality content, experienced people behind it, well chosen tracks and it is also free, it is great!
Last Tuesday,
Scott Guthrie announced in his blog the new Microsoft AJAX content delivery network (
CDN), this is great news to all of us using AJAX in our commercial and non-commercial applications.
What is it?
First of all, a CDN is a Content Delivery Network which is composed of multiple servers strategically placed across the globe. In the case of the Microsoft AJAX CDN servers, the jQuery and ASP.NET AJAX libraries are cached across multiple web-sites around the world and they are available to you now. If your website loads these AJAX libraries from the Microsoft AJAX CDN servers, your AJAX enabled pages will load faster than when loaded from your own server.
What are the benefits?
Think about it, right now you might have several websites (or one) that utilizes the jQuery or ASP.NET AJAX libraries, every time a user opens your AJAX enabled page, this library or libraries need to be loaded from your own server. In some cases depending on where the website user is located geographically, these files will have to travel through the wire from a few hundred miles to thousands of miles (if you have people from across the pond looking at your website) making your page slower to load. The new Microsoft AJAX CDN will help you improve the performance of your website by serving the requests for these files directly from a nearby “edge cache” server.
Also, these files can be cached across multiple websites, meaning that users accessing your website won’t need to re-download these files if they have visited another ASP.NET AJAX enabled website that uses the CDN, and you know that speed is king when loading websites.
How do you use it?
One of the main benefits I see with this (other than my web pages loading quicker) is that you can implement this to new and existing AJAX enabled websites very easily. Below is an example on how to use jQuery from the Microsoft AJAX CDN, you just need to add a script tag to your page using the URL below:
<script src="http://ajax.microsoft.com/ajax/jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
When your page opens, the browser will request the script file from one of the closest CDN servers to the end-user loading your page quicker and saving bandwidth since the Microsoft AJAX CDN server pays the bandwidth cost.
Also, in ASP.NET 4.0 the ScriptManager includes a new property (EnableCdn). If you want to use the Microsoft AJAX CDN all you have to do is set this property to “true”, see example below:
<asp:ScriptManager ID="ScriptManager1" EnableCdn="true" runat="server" />
By setting the EnableCdn property to true, your application will retrieve all the JavaScript files from the CDN instead of downloading them from your server, which in many cases will probably take longer and you are also paying for the bandwidth, and remember that this service is free of charge, for commercial and non-commercial applications, sounds like a good idea to me :).
How do you use the ASP.NET AJAX Preview 5 with CDN?
It looks like the AJAX team at Microsoft has been busy this month, in addition to the Microsoft AJAX CDN, the team also released the ASP.NET AJAX Preview 5 a few days ago. This is available in
CodePlex now.
Or, you can also use the CDN to load files from ASP.NET AJAX Preview 5 by using the following scripts:
<script src="http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjax.js"type="text/javascript"></script>
<script src="http://ajax.microsoft.com/ajax/beta/0909/MicrosoftAjaxTemplates.js" type="text/javascript"></script>
Note the directories in the URL “beta/0909” which specifies that you are requesting the files from the beta version released on 9/2009 – ASP.NET AJAX Preview 5.
I believe this is a great solution and there is no reason not to start using it now, of course I recommend you do all the testing required to make sure everything works the way you like. I have been using jQuery a lot more than the ASP.NET AJAX libraries lately, I am so interested in this jQuery library because of all the power it has in such a compact package, and the fact that Microsoft is supporting it is yet another reason for me to continue using it. I already started changing some of my scripts to use the CDN and will be doing some testing to see how much faster my pages load – I am sure any speed gain will be enough reason for me to use it.
While trying to create a new Facebook photo album I got the following error:
It is probably just a network hiccup or maybe the network guys at Facebook were having too much fun in a Friday ; )
hkbvr5u64m
A few months ago I wrote about Y Combinator, they specialize in funding early stage startups. Their focus is in funding software and web related companies or ideas ;).
In this economy many people have chosen to create their own business, and I don't blame them, many said that recessions are the best time to start a new company, some people also say that most startups are too small to fail, according to Jason Cohen. So, if you are interested in launching your new software/web business you should really take a look at Y Combinator, it seems like a good program and since it is run by technology people they actually prefer and are more interested in finding out how smart you are and your idea instead of a formal business plan – isn't this great?! Most of us software developers don't know or don't want to know much about the business side of things… in this program, Y Combinator provides business, legal and accounting advice for your new company.
They are accepting applications to their program now and until October 26, 2009 at 10 pm PST, the sooner the better because they will have more time to read and review your application, as it says in their website.
If you are interested, and are ready to apply, I suggest you look at this before you apply and also read this.
This is a good idea if you are looking for great advice from people who have achieved success in this industry, and also some cash to help you get by until you launch your product or service and start getting boatloads of cash ;) (ok, maybe just enough to support yourself and your business).
Good luck!