<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1381919930258925578</id><updated>2011-11-18T14:10:45.975-05:00</updated><category term='web development'/><category term='custom web development'/><title type='text'>Custom Web Development Ramblings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-2822855774051893605</id><published>2010-11-19T09:05:00.000-05:00</published><updated>2010-11-19T09:05:47.215-05:00</updated><title type='text'>Data Warehouse Company, Custom data warehouse development, data warehousing, custom data warehousing, cube development</title><content type='html'>This is a great website about custom data warehouse companies.&lt;br /&gt;&lt;a href="http://www.datawarehousecompany.com/"&gt;Data Warehouse Company, Custom data warehouse development, data warehousing, custom data warehousing, cube development&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-2822855774051893605?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.datawarehousecompany.com/' title='Data Warehouse Company, Custom data warehouse development, data warehousing, custom data warehousing, cube development'/><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/2822855774051893605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/11/data-warehouse-company-custom-data.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/2822855774051893605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/2822855774051893605'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/11/data-warehouse-company-custom-data.html' title='Data Warehouse Company, Custom data warehouse development, data warehousing, custom data warehousing, cube development'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-3453995498755684358</id><published>2010-10-29T08:58:00.000-04:00</published><updated>2010-10-29T08:58:41.631-04:00</updated><title type='text'>Custom Sharepoint Application Development</title><content type='html'>Check out this new site for custom sharepoint development:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.custom-sharepoint-development.com/Default.aspx"&gt;Custom Sharepoint Application Development&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-3453995498755684358?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.custom-sharepoint-development.com/Default.aspx' title='Custom Sharepoint Application Development'/><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/3453995498755684358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/10/custom-sharepoint-application.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/3453995498755684358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/3453995498755684358'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/10/custom-sharepoint-application.html' title='Custom Sharepoint Application Development'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-4066449235099316098</id><published>2010-10-20T09:18:00.002-04:00</published><updated>2010-10-20T09:29:20.768-04:00</updated><title type='text'>LINQ code to edit vs insert new records</title><content type='html'>Another post in the series: Things other developers do that drive me crazy&lt;br /&gt;&lt;br /&gt;Here's an example of someone else's code that I'm currently working with:&lt;br /&gt;&lt;br /&gt;&lt;div  style="text-align: left;font-family:courier new;"&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;PRODUCTGROUP AddProductGroup;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;if (ddlProductGroups.SelectedIndex == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup = new PRODUCTGROUP();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup.DateCreated = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   AddProductGroup = ProductManager.GetProductGroupByID(Convert.ToInt32(ddlProductGroups.SelectedValue));&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   AddProductGroup.DateModified = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   AddProductGroup.LastUpdatedBy = UserProfile.GetUserGuid(User.Identity.Name);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   AddProductGroup.ProductGroupName = txtProductGroupName.Text;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   if(ddlProductGroups.SelectedValue == "0") Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   Data.CurrentContext.SubmitChanges();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   ProductGroupID = AddProductGroup.ProductGroupID;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Ok it's not terrible. But there is one line that seriously bugs me. It's this one:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;if(ddlProductGroups.SelectedValue == "0") Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This code is written to handle new records being inserted and existing records being updated based on what is selected in the drop down list ddlProductGroups. Why do we need to check if the ddlProductGroups.SelectedValue is "0"? In the beginning of the code block there is already this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;if (ddlProductGroups.SelectedIndex == 0)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup = new PRODUCTGROUP();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup.DateCreated = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So just change it to this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;if (ddlProductGroups.SelectedIndex == 0)&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;font-size:85%;" &gt;   {&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup = new PRODUCTGROUP();&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;font-size:85%;" &gt;       AddProductGroup.DateCreated = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;font-size:85%;" &gt;   }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There, now you don't need that subsequent "if" statement. You can instance a new PRODUCTGROUP object, set the date created, and tell LINQ to InsertOnSubmit all in the same block of code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-4066449235099316098?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/4066449235099316098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/10/linq-code-to-edit-vs-insert-new-records.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/4066449235099316098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/4066449235099316098'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/10/linq-code-to-edit-vs-insert-new-records.html' title='LINQ code to edit vs insert new records'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-4097670591555024411</id><published>2010-10-16T11:33:00.000-04:00</published><updated>2010-10-16T11:33:17.894-04:00</updated><title type='text'>Customer Relationship Management Software</title><content type='html'>Just launched a new website for Customer Relationship Management (CRM). We build custom CRM software for companies in any industry.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.customerrelationshipmanagement-software.com/Default.aspx"&gt;Customer Relationship Management Software&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-4097670591555024411?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.customerrelationshipmanagement-software.com/Default.aspx' title='Customer Relationship Management Software'/><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/4097670591555024411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/10/customer-relationship-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/4097670591555024411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/4097670591555024411'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/10/customer-relationship-management.html' title='Customer Relationship Management Software'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-1458974870859719567</id><published>2010-10-14T23:07:00.000-04:00</published><updated>2010-10-14T23:07:18.298-04:00</updated><title type='text'>NJ Web Development, Custom Web Development, Custom Software Development, Business Edge Services</title><content type='html'>&lt;a href="http://www.busedge.com/"&gt;NJ Web Development, Custom Web Development, Custom Software Development, Business Edge Services&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-1458974870859719567?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.busedge.com/' title='NJ Web Development, Custom Web Development, Custom Software Development, Business Edge Services'/><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/1458974870859719567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/10/nj-web-development-custom-web.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/1458974870859719567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/1458974870859719567'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/10/nj-web-development-custom-web.html' title='NJ Web Development, Custom Web Development, Custom Software Development, Business Edge Services'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-6909915029760823843</id><published>2010-08-09T23:22:00.003-04:00</published><updated>2010-08-09T23:37:58.731-04:00</updated><title type='text'>Limit use of member variables in code-behind</title><content type='html'>I frequently come across code that looks something like this:&lt;br /&gt;&lt;br /&gt;private int memberVariable;&lt;br /&gt;&lt;br /&gt;private void StartHere() {&lt;br /&gt;   memberVariable=1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void RunFirst() {&lt;br /&gt;   memberVariable=2;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void PrintResult() {&lt;br /&gt;  int result = memberVariable*4; //&lt;--error on this line for example&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Let's say there is an error on the line marked with the comment above. In troubleshooting the issue, it might be helpful to know what the value of memberVariable is. If I look at PrintResult(), I see a variable named "result" which is being defined as an int. But then I see it using "memberVariable" which is defined outside of PrintResult(). Since I didn't write this code, it is difficult for me to know what exactly memberVariable is at the time PrintResult() gets called. Did StartHere() get called before PrintResult()? Did RunFirst() get called? If both were called, which ran last?&lt;br /&gt;&lt;br /&gt;It is much more desirable NOT to declare variables outside of the methods they are being used in. Of course there are some situations where you must do this kind of thing, but for the most part, you should be able to use variables inside methods by PASSING them to the method instead of relying on them being instanced and valued at some point before our method being called.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-6909915029760823843?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/6909915029760823843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2010/08/limit-use-of-member-variables-in-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/6909915029760823843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/6909915029760823843'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2010/08/limit-use-of-member-variables-in-code.html' title='Limit use of member variables in code-behind'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-5510219345769239526</id><published>2009-06-02T19:19:00.006-04:00</published><updated>2009-06-11T22:44:39.243-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='custom web development'/><title type='text'>Stuff that other web developers do that drive me crazy</title><content type='html'>Lately we've had a lot of custom web development projects where we are inheriting someone else's code, and we need to take over the project and make updates to it. It's been a bit crazy lately, and sometimes a bit frustrating. I just wanted to start keeping a log of things that other developers do that drive me crazy.&lt;br /&gt;&lt;br /&gt;1. Having a method call another method when that's it's only purpose, and the other method isn't called from anywhere else. Something like:&lt;br /&gt;&lt;br /&gt;public void RunCode() {&lt;br /&gt;DoSomething();&lt;br /&gt;}&lt;br /&gt;public void DoSomething() {&lt;br /&gt;int a=1;&lt;br /&gt;int b=a+1;&lt;br /&gt;..whatever...&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;If DoSomething() isn't called by anything else, what is it's purpose? Just put everything under RunCode(), no?&lt;br /&gt;&lt;br /&gt;2. Making a database call on each row of a repeater (or datalist or gridview or whatever) Something like:&lt;br /&gt;&lt;br /&gt;public void MyDataGrid_ItemDataBound(object sender, EventArgs e) {&lt;br /&gt;Label lblFirstName = (Label)e.Item.FindControl("lblFirstName");&lt;br /&gt;int userid = Convert.ToInt32(MyDataGrid.DataKeys[e.Item.ItemIndex]["userid"]);&lt;br /&gt;Member oMember = new Member(userid);&lt;br /&gt;lblFirstName.Text = oMember.FirstName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;This might look ok on the surface, but how are we populating the oMember object? We're making a database call right there in the constructor. This is not good practice because as the datagrid grows, every time it loads it will make a database call on every row. If you have many users hitting this page, your database activity could skyrocket unnecessarily. You should try to bind elements of your repeaters and datagrids to a single query that returns all the data you'll need to populate all of the fields, and don't make any database calls in repeating events.&lt;br /&gt;&lt;br /&gt;3. SQL Cursors. Ugh, this is a real sore spot for me. I see so many developers using cursors, and 90% of the time, I am able to rewrite the query using a set-based query. I don't know why people use cursors so much. If you are writing a SQL cursor, you should just think it through and see if you can use a set-based query instead.&lt;br /&gt;&lt;br /&gt;4. The Session object. This is perhaps the most widely abused object in all of web development. Every book I read about ASP.Net has at least a whole chapter devoted to the session object, its no wonder so many people use it. For one, using the session object causes the web server to have to allocate memory to EACH user who is using the website. When building web based applications, you want to minimize the amount of resources each user takes up on your web server so that you can grow without bringing the server down. People needlessly store variables in the session object so they can use them later instead of intelligently designing their application in such a way so as not to need the session object. On all of our web servers, we have the session object turned off right in the IIS settings and in 12 years I've never had the need to use the session object for anything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-5510219345769239526?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/5510219345769239526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2009/06/stuff-that-other-web-developers-do-that.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/5510219345769239526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/5510219345769239526'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2009/06/stuff-that-other-web-developers-do-that.html' title='Stuff that other web developers do that drive me crazy'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-6087434341255574205</id><published>2009-05-21T21:29:00.000-04:00</published><updated>2009-05-21T21:30:53.129-04:00</updated><title type='text'>Classic ASP vs. ASP.Net</title><content type='html'>Just what is the difference between the deceptively similar technologies of ASP and ASPX? What does it say about a website that still uses ASP pages versus one that uses ASPX pages?&lt;br /&gt;&lt;br /&gt;In speaking with people every day, it seems this is a pretty common point of confusion. Most people who aren’t developers figure that since “ASP” is so close to “ASPX” that the differences between the two technologies can’t be all that extensive. After all, ASP is technically 75% of ASPX, so upgrading to ASPX will only give 25% more in features or capabilities. When I tell them that the differences between the two technologies are pretty vast, they are often quite surprised.&lt;br /&gt;&lt;br /&gt;From a user’s perspective, it is hard to make the differences obvious. After all, a web page that ends with an .asp extension can look pretty similar to a web page that might end with an .aspx extension. The two pages might even have the same functionality and operate in much the same way. So then what is the difference, and why does anyone care?&lt;br /&gt;&lt;br /&gt;Back in 1996 (or thereabouts) when Microsoft came out with Active Server Pages (ASP), the web was still in its infancy. ASP was a new technology which solved a lot of the limitations of HTML and CGI, and was very easy to use. Because of this, ASP caught on and became hugely popular. ASP is a server based technology, where the server can perform some function and the client’s browser can just see the output. For example, an ASP page can ask you for some contact information in a form, once you press the Submit button, the ASP code on the server will gather your responses and send out an email, and then generate a message that gets sent to the user saying “Thank you for your submission”. The client entered the data and saw the thank you message, and the server did the work of gathering the data and sending the email.&lt;br /&gt;&lt;br /&gt;In 2001, Microsoft released the first version of ASP.NET. Web pages that end with “.aspx” are pages using this newer technology, whereas pages ending with “.asp” still use the older technology, commonly referred to as “Classic ASP”.&lt;br /&gt;&lt;br /&gt;One of the biggest problems with Classic ASP was that it was so darned easy to use, anyone with some basic knowledge could create ASP pages. Once ASP started to catch on, anyone and everyone suddenly became a “web developer” and was creating website code which was (and in many cases, still is) being used in production environments all around the globe. As a true developer, this was extremely frustrating, because my profession was being flooded with amateurs and websites were being created left and right using all kinds of poor coding practices.&lt;br /&gt;&lt;br /&gt;The other big problem with ASP was that for any task, there are an average of 10 ways to accomplish it. There are very few standards with Classic ASP. Whichever way the web developer felt like solving a problem, that’s how it was done without regard to programming standards, memory utilization, bandwidth, cpu cycles, scalability, etc. And with many ASP developers not being real “web developers”, the code that was being generated and put into production was many times poorly designed and completely inefficient. Out of the 10 ways to write a block of code, it was rare that the “best” option was chosen.&lt;br /&gt;&lt;br /&gt;So along comes ASP.NET, a new technology which is very impressive, and very different from Classic ASP. Perhaps the biggest difference between the two is that Classic ASP is an interpreted language, whereas ASP.NET is a compiled language. With Classic ASP, all you needed was FTP access to the web server, and you have all of the code for all of the features of the website. With ASP.NET, if all you have is FTP access, then it is possible you only have access to the front end graphics and web page html code, but none of the actual source code being used to provide the back end features of the site. ASP.NET effectively split the source code which runs on the server from the client code which is sent to the users browser.&lt;br /&gt;&lt;br /&gt;The other major advancement with ASP.NET is that it is harder to develop in. Many of those Classic ASP “web developers” were unable to make the transition to the more structured ASP.NET platform. ASP.NET is more of a true programming platform, it is fully object oriented, supports inheritance and delegation and remoting and all of those advanced programming features foreign to Classic ASP developers.&lt;br /&gt;&lt;br /&gt;Lastly, perhaps the most important concept regarding ASP.NET is simply that it is a current generation platform for websites. Classic ASP is part of the previous generation of web technologies and has dwindling support from Microsoft and is riddled with security flaws. There are many thousands of developers out there still coding web pages in Classic ASP and selling them to clients who don’t know any better. ASP.NET came out in 2001, which means that it is now 6 years old and for an internet technology, that’s a lifetime. If your programmer is still developing your site in Classic ASP, it’s time to ask him why. ASP.NET is quicker to program in, has much more company and community support, and has a virtually endless amount of 3rd party companies writing software to integrate and improve the features and capabilities of it.&lt;br /&gt;&lt;br /&gt;If your website is still using Classic ASP, it is now time to upgrade. If your developer is still suggesting Classic ASP over ASP.NET, it is time to get a new developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-6087434341255574205?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/6087434341255574205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2009/05/classic-asp-vs-aspnet.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/6087434341255574205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/6087434341255574205'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2009/05/classic-asp-vs-aspnet.html' title='Classic ASP vs. ASP.Net'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-3486678900644963844</id><published>2009-04-09T16:02:00.003-04:00</published><updated>2009-04-10T11:21:55.661-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><title type='text'>Outsource Your Web Development.... to an American Company</title><content type='html'>&lt;strong&gt;&lt;span style="color:#990000;"&gt;Outsourcing doesn't necessarily mean foreign countries&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;When choosing an approach for your web development needs, certainly one of the major issues to evaluate is outsourcing. If you are looking to outsource because of a lack of in-house talent or because you are looking to save money or for other reasons, there's a lot to consider. Here we explore some of these issues with some specific recommendations on how to keep the money right here in America.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reasons to Outsource:&lt;/strong&gt; There are many reasons to outsource, the top 5 that I've heard are below:&lt;br /&gt;&lt;br /&gt;1. You do not have the web development talent in-house to accomplish your needs. This is the traditional reason most companies rely on consultants to perform projects that require a higher level of skill than they might have in-house.&lt;br /&gt;&lt;br /&gt;2. You are looking to cut costs. Sure consultants may be expensive, but they are usually only used for short periods of time which makes them cheaper than hiring employees.&lt;br /&gt;&lt;br /&gt;3. You are looking to cut staff. Maintaining staff can be very costly. Hiring a web developer to work for you full time will cost more than just his/her salary. You have to factor in the cost of the payroll taxes, healthcare, training, plus the cost of managing this person and making sure they grow and are happy and so forth.&lt;br /&gt;&lt;br /&gt;4. You are looking for more stability. If you have someone in-house, what happens if they quit? How do you transfer their knowledge to someone else, especially if you don't hire someone new right away.&lt;br /&gt;&lt;br /&gt;5. You don't have enough work to keep someone occupied for 40 hours per week.&lt;br /&gt;&lt;br /&gt;Whatever the reason, in a lot of cases outsourcing can make a lot of sense. Now comes the enlightening part, you don't have to outsource to a company in a foreign country. There's plenty of talent here in the USA and more often than not, its better than what you would get from a foreign country.&lt;br /&gt;&lt;br /&gt;If you are looking at foreign companies for outsourcing, consider the following points:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Distance DOES matter.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;When the people you are dealing with are far away, they might not be working at the same time zone as your own business hours. This might mean that if you have a problem, you have to wait until the next day to get it resolved if you are communicating via email. This can become increasingly frustrating when they don't get it right the first time, because now you have to wait even longer for something to be changed or fixed.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Language barriers can hurt your project.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It is important for the technical people who are working on your website to speak your language fluently. If they don't, miscommunications can occur fairly easily and impact your project's budget and timeline. The other reason language is important is because the developer will most likely be the person typing in the content for your website. One of the most overlooked pieces of content is your site's error messages. If your user mistypes their password, you want them to get a friendly, readable error message, not something like "User input not password" (actual example). These are often overlooked as clients are proofreading their website.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Price is cheaper, but...&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Don't forget the old saying that you get what you pay for. Also, you are usually going to be paying an hourly rate, so if it takes them 4 times as long as someone who is in your same timezone and speaks your language and has your same cultural background and will do it right the first time, then you're really not saving much if anything at all.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Contingency? What contingency?&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You need to be prepared for the possibility that the project won't go the way you intended and that you will now have to turn to another company to finish the work. So now the money you saved is now completely obliterated and you have now lost money.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fortunately, outsourcing doesn't necessarily mean that you have to deal with these issues. You could outsource your web development to an American company and avoid just about all of the issues associated with working with people overseas. Outsourcing allows you to expand and contract based on your needs, without having to hire or lay off people. If you do choose to outsource your web development to an American company, make sure to ask if they use developers from overseas. Also, make sure they have been in business for a while (over 10 years is recommended), and make sure they fully understand your business and guarantee their work.&lt;br /&gt;&lt;br /&gt;If you're looking for a recommendation, Business Edge Services &amp;amp; Technologies is a New Jersey based corporation specializing in Microsoft centric web development and has been in business for over 12 years. Check them out at &lt;a href="http://www.busedge.com/"&gt;http://www.busedge.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-3486678900644963844?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/3486678900644963844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2009/04/outsource-your-web-development-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/3486678900644963844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/3486678900644963844'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2009/04/outsource-your-web-development-to.html' title='Outsource Your Web Development.... to an American Company'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1381919930258925578.post-560719190910330455</id><published>2009-04-03T21:32:00.000-04:00</published><updated>2009-04-03T21:34:31.238-04:00</updated><title type='text'>Do YOU GotCrowd?</title><content type='html'>I created this cool video/media sharing website. We have investors and a few partners and it will be the next big thing (hopefully!). If you have a talent, you should really check it out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gotcrowd.com"&gt;gotcrowd.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://hubpages.com/hub/Do-YOU-GotCrowd"&gt;Do YOU GotCrowd?&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1381919930258925578-560719190910330455?l=busedge.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://busedge.blogspot.com/feeds/560719190910330455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://busedge.blogspot.com/2009/04/do-you-gotcrowd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/560719190910330455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1381919930258925578/posts/default/560719190910330455'/><link rel='alternate' type='text/html' href='http://busedge.blogspot.com/2009/04/do-you-gotcrowd.html' title='Do YOU GotCrowd?'/><author><name>Brandon Spilove</name><uri>http://www.blogger.com/profile/03453921151997503324</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
