Tuesday, January 21, 2014

NJ Web Development

As an NJ Web Development company, we are constantly building new web applications for our clients. About half of the work we do is public facing website applications, and the other half is internal business applications. We also create companion mobile apps for many of the web applications we build as well.

Here are some examples of the work we've done as the best custom web development company:

nj web development
This is a screenshot of the admin site for one of our best custom ecommerce software suites called EdgeCommerce. As an NJ Web Development firm, we have built dozens of custom ecommerce sites for clients all over the US.






This is a screenshot of the admin site for a custom web application we built that scrapes images from Facebook, Twitter and Instagram and publishes them on a beautiful new website for DavidYurman.com. As a leading NJ Web Development company, we have built many custom web applications for high profile fashion companies and other retailers.




nj web development
Here is a screenshot of a custom scheduling web application that we built. This is one of our best software applications and uses the SaaS (Software as a Service) model and customers can sign up for different packages to use the software. As an NJ Web Development company, we've built hundreds of custom web applications for clients in many different industries.




This is an example of a custom financial application that we built. It contains calculations for actual billings, plus an algorithm for projections for future billings. The application is used internally and is a key component in the company's software systems. As a custom NJ Web Development company, we have built dozens of internal business applications that are critical to the operations of the companies that use them.


nj web development
Here is a sample of a custom call center application for patients. It contains functionality for generating calls based on complex logic that takes into account previous fill dates, length of therapy, patient age, and many other factors. Since we are an NJ Web Development company, we are able to build sophisticated web applications for clients in the healthcare industry.



nj web development
This is yet another example of a custom web admin tool that we built as a Content Management System. Our CMS is user friendly and robust enough to handle all of the types of content that the users need to publish on the front end website. Business Edge is a NJ Web Development company that has been building custom CMS solutions for businesses for many years.



When looking for a web development company, there are many companies to choose from. Business Edge Services & Technologes is a custom web and mobile app development company that specializes in complex functionality, custom databases, and companion mobile apps. We have been the best web development company building custom software and web applications since 1997 and we are growing quickly. Contact us today to find out more about our services and if we can help you and your business.

Still using Session State?

Is there anyone out there still using Session State? I know there are because I inherit code from other development teams all the time, and more often than not it is littered all over the place with variables being stored in the session.

A little background on me. I have been developing web sites and web applications in ASP.Net since 2001, and Classic ASP before that. I have literally built hundreds of applications personally, plus hundreds more through my web development company, Business Edge.

Here are a few reasons why using Session is a bad idea. For one, it takes up memory on the server for each user that has opened up a session with their browser. Applications that use Session are far less scalable than ones that don't, simply because of the memory requirements on the server. Another reason is that the code is harder to follow. When I have to read someone else's code and I see a reference to a session variable, it is difficult to determine if that session variable contains the value I expect, because it could have been set (and re-set) multiple times in the call stack. Third, those session variables are volatile, and time out after their configured time is up. And finally, if you go to a load balanced environment, additional considerations need to be taken into account in order to make sure that session state is handled by the load balancer and your front end web servers correctly.

But how do I do what I need to do without using session variables, you ask? Off the top of my head, there are 6 other viable alternatives to using the session to store variables. You can store data in cookies, query string variables, hidden form fields, the http context, the database, or the view state. In all of my years building web applications, I think I can count on one hand the amount of times where I had no other choice than to store a variable in the session state. All other times I was able to store data somewhere else that didn't require additional, per user, memory on the server.

So please, if you can avoid it, don't use Session State. I know that every book on ASP.Net contains a full chapter on Session State and how great it is, but take my advice and avoid it as much as possible.

Thursday, March 29, 2012

Custom Web Development - It should be free!

We are a custom web development company, and as such, we are constantly building new websites and new user interfaces for clients that have not been done before. That's the whole point of our existence - it is custom, not prefab.

The problem arises when clients ask us to build something and so we go through all of our motions of documenting, wireframing, recurring meetings, development, testing, etc. We do our best to make sure that what we are building is what was promised and quoted. We also try to make sure it will be easy to use. But inevitably, something that we built one way could arguably have been implemented in a different way. The original way it was built is not wrong, and is certainly usable. But now, after the site is built and everyone is using it and the client is starting to get some feedback it has now become apparent that if we had only implemented that feature differently it would be better.

This is very common and happens all the time. How many times has Yahoo or YouTube changed functionality on their sites to make things easier or more streamlined for users? Of course this is all par for the course in the world of custom web development.

And so it always strikes me as odd when a client comes back to us and says this: "The functionality you built should have been implemented differently and therefore it should be considered in-scope (i.e. free), since it was built wrong initially through your own short sightedness." Ok it doesn't exactly happen in those specific words, but you get the idea. We built something that didn't exist previously, and now that the client is actually using it, they have different ideas about how things should work than they did initially.

When this happens we grudgingly proceed down the path of meeting with the client and showing them the wireframes and the initial documentation that the client signed off on, and explaining that if they wanted it to work differently they should have said so much earlier in the process. This is usually met with something like "well you're the experts, I can't be expected to anticipate what problems users will have."

Let me try to put this in terms that perhaps will be more familiar to people. If I hire a contractor to build me a custom house. I meet with the architect and get everything laid out and designed how I want it, and I sign off on everything before construction begins. I make regular visits during construction and do my walk throughs and confirm that everything is going as planned. After the house is built, I move in and realize that the window in the family room is in a bad spot because it faces south and the glare from the sun makes the TV hard to see. The window needs to be moved, obviously! So I go back to the architect and the carpenters and tell them that obviously that window is not in a good spot since the glare from the sun makes the TV hard to watch, and obviously I can't move the TV since the couch I have is a sectional and obviously it can't go anywhere else. So it is very obvious that the window needs to be moved, and I'm not an architect, so how was I supposed to know we would have this problem, so the window need to be moved and I shouldn't have to pay for it. Yeah right, I'd like to see anyone pull that one off and get that window moved for free.

This is the point I am making. With custom web development, we actually do anticipate many things and build as much as we can so that it is intuitive and user friendly. But those things go unnoticed, it's only the specific features that appear to function "wrong" that stick out and make clients think it should be changed for free.

Custom web development is not cheap, you need healthy budgets in order to build something that will be successful, and something that you can afford to change around after users start using the site and you get some real world feedback. Honestly, a custom web development budget should include room for usability testing, focus groups, test marketing, soft launches and reworks. But more often than not these things are not included in the budget and clients expect the web developers to anticipate these things and build something that won't need to be changed.

Before I get flamed for not using an Agile methodology, let me just say that we give our clients a choice between Agile and Waterfall. The problem is that Agile costs more, and the clients that I am specifically talking about in this article (the ones who want free changes after launch) are not usually willing to pay for Agile. They want a fixed price up front with a fixed scope so that they know exactly what they are paying for.

I don't really have a solid conclusion here. Most of it is just venting, but a small part of me hopes that this is read by someone who will treat their web development endeavors more carefully, and budget appropriately.

Wednesday, October 20, 2010

LINQ code to edit vs insert new records

Another post in the series: Things other developers do that drive me crazy

Here's an example of someone else's code that I'm currently working with:

PRODUCTGROUP AddProductGroup;

if (ddlProductGroups.SelectedIndex == 0)
{
AddProductGroup = new PRODUCTGROUP();
AddProductGroup.DateCreated = DateTime.Now;
}
else
AddProductGroup = ProductManager.GetProductGroupByID(Convert.ToInt32(ddlProductGroups.SelectedValue));

AddProductGroup.DateModified = DateTime.Now;
AddProductGroup.LastUpdatedBy = UserProfile.GetUserGuid(User.Identity.Name);
AddProductGroup.ProductGroupName = txtProductGroupName.Text;

if(ddlProductGroups.SelectedValue == "0") Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);
Data.CurrentContext.SubmitChanges();

ProductGroupID = AddProductGroup.ProductGroupID;

Ok it's not terrible. But there is one line that seriously bugs me. It's this one:

if(ddlProductGroups.SelectedValue == "0") Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);

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:

if (ddlProductGroups.SelectedIndex == 0)
{
AddProductGroup = new PRODUCTGROUP();
AddProductGroup.DateCreated = DateTime.Now;
}

So just change it to this:

if (ddlProductGroups.SelectedIndex == 0)
{
AddProductGroup = new PRODUCTGROUP();
AddProductGroup.DateCreated = DateTime.Now;
Data.CurrentContext.PRODUCTGROUPs.InsertOnSubmit(AddProductGroup);
}


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.

Saturday, October 16, 2010

Customer Relationship Management Software

Just launched a new website for Customer Relationship Management (CRM). We build custom CRM software for companies in any industry.

Customer Relationship Management Software