a web design blog.

Thursday, June 25, 2009

Subversion (SVN) Repository Hosting: The Quest

Recently, we decided to started shopping around for the best Subversion (SVN) hosting. If you are not familiar SVN, it is a way to collaborate and increase productivity by creating a common and shared location of a project as it is developed. Often times, this type of hosting is referred to as repository hosting.

Like a public library, you can check-out the latest version, but so can other people collaborating on the same project. Then, when changes are made, and they are "committed" back to the server, the software manages the updates and combines them. It is really nice for multi-member collaboration, as you can all be working on the same project simultaneously and not have to worry about destroying each other's work.

NOTE: If you work with Visual Studio, check out VisualSVN integration.

Most Subversion (SVN) hosting companies offer nice features like daily backups, access through SSL, and some type of tracking system log for reviewing what changes were made, and who made them. PLUS: You can "rollback" to previous version of the file if there are problems.

We did a lot of shopping around and found one solution that, in our opinion, is the best: repositoryhosting.com.

Why, you may ask?

Trac Projects: Unlimited
Subversion Repositories: Unlimited
Git Repositories: Unlimited
Users: Unlimited
Bandwidth Transfer: Unlimited
Storage: 2GB
Storage (additional): $1/GB

PLUS:
SSL: Yes
Private Projects: Yes
Public Projects: Yes
Scheduled Backups: Yes
Backup to Amazon S3: Yes
Hourly Snapshots: Yes
30 Day Free Trial: Yes


All for $6 a month. Craziness.

This is not a shameless plug. It is an independent assessment and opinion.

Good luck in your quest for Subversion (SVN) Repository Hosting.

Labels: , , , , , , ,

Bookmark and Share

Thursday, June 4, 2009

Web Design Pitfalls: #1 Attempting to Monetize Your Site

A short intro: Sometimes I see websites of other design firms and think wow, that's a cool and innovative idea, and other times I wonder...WHAT THE HELL are they thinking? ...

As a web designer, one of the most erroneous decisions you can make is to attempt to monetize your website.

  1. These content-targeted ads will display advertisements for competing companies on your website, and from a business stand-point...dumb. The amount of money one could potentially make displaying those ads would never compare to actually landing a new client.


  2. It looks inprofessional...that's right, inprofessional. I think you get the point.


  3. It only works for blog-style websites that serve changing content on a regular basis. People do not come to your company's website to read about 3rd party offers or services. Think about it.

That concludes this issue of Web Design Pitfalls.

Bookmark and Share

Tuesday, June 2, 2009

Why I like Microsoft's new search engine, BING.

I am pleased with Microsoft's revision of MSN Live Search to the recently-renamed BING. The main search page has interesting daily images with short facts, and I unwittingly find myself spending 15-20 minutes at a time, reading about things that are completely unrelated to the topic that warranted my initial visit... LEARNING IS GREAT.

Also, the other really neat thing about BING are the result pages. The layout is very simple and intuitive, but the biggest improvment is the little page summary displayed on hover, which is found on the right side of each result. It displays a summary of the page content and extracts phone numbers, email and postal addresses.

It also displays your search history on the far right side. Kinda neat as well.

It's not a HUGE leap in search technology, but I like it overall. And the name is an improvment over the previous name (MSN Live Search).


Bottom line: I like it.

Labels: ,

Bookmark and Share

Thursday, May 21, 2009

Microsoft Windows 7 RC

Just wanted to take a quick minute and mention that Microsoft Windows 7 RC (Release Candidate) is very nice. If you have some extra hard drive space, and you are comfortable with creating a primary partition on which to install the FREE download, I strongly suggest doing it (see bottom for download link).

NOTE: "The RC will expire on June 1, 2010. Starting on March 1, 2010, your PC will begin shutting down every two hours. Windows will notify you two weeks before the bi-hourly shutdowns start. To avoid interruption, you’ll need to install a non-expired version of Windows before March 1, 2010." -Microsoft

It had ZERO problems identifying and installing the drivers for all of my components. Seems 100% stable, as I have not had any crashes. And it runs about 20-30% faster than Vista (general estimate)...even on my high-end machine I could see a substantial difference in performance. Boot-up was about under 20 seconds.

I installed several applications, including Google Chrome, Adobe CS4 Web Premium, and Outlook 2007. All seem to run flawlessly.

One nice thing is that the new OS will come with both a 32 and 64-bit version on the same disc.

For more information on Windows 7, including history, features, and release dates visit the Wikipedia article here. And for in-depth information regarding the editions that will be released, click here.

The Windows 7 RC download can be found here --> DOWNLOAD LINK

Labels: , , ,

Bookmark and Share

Monday, April 6, 2009

Adobe Fireworks CS4

We recently purchased Adobe Fireworks CS4 for website layout designing and prototyping. I had worked with Macromedia Fireworks 8.0 in the past and was very eager to explore and utilize the newest version of the somewhat little-know gem that is Fireworks. So far, I have been pleasantly surprised with both the added features and the redesigned user-interface. If you have yet to try Fireworks for yourself, you can download a trial version at www.adobe.com/products/fireworks. Check it out!

Labels: , , , , ,

Bookmark and Share

Wednesday, April 1, 2009

Pro Bono Web Design Work

Recently, I was approached by a friend about doing a pro bono website for a local church. We had considered the possibility of doing charity work before, and pro bono work is really a win-win situation in most cases -- we get a chance to practice our skills, display our work, get some recognition, and know we are doing something for a good cause. The way I see it; as long as the client you are working for does not expect a corporate-style website with crazy amounts of back-end programming, why not. The only possible stipulation is that the website would require hosting indefinitely. In this case, I find it acceptable to simply ask that the hosting be paid for, and perhaps at a discounted amount.

What do you think about doing pro bono web design work? Feel free to post your comments.

Labels: , ,

Bookmark and Share

Friday, September 5, 2008

Sending Error/Exception Reports via Email in ASP.net and C# (C-sharp)

I noticed we were getting a few keyword hits on error/exception report generation and sending error reports via email, so I have decided that today's entry will be just that. Below, you will find the code necessary for generating an email containing an error (exception) report using global.asax.

Firstly, enter this code in to the appropriate area, within global.asax file:
NOTE: Sorry about the poor formating (Blogger doesn't seem to handle code very well).


void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();

System.Text.StringBuilder sbMessage = new System.Text.StringBuilder();
sbMessage.Append("<dl style=\"font-face: Arial; font-weight: normal; font-size: 13px; line-height: 16px;\">");
sbMessage.Append("
<dt style=\"font-weight: bold;\">Source:</dt>");
sbMessage.AppendFormat("
<dd>{0}</dd>", exception.Source);
sbMessage.Append("
<dt style=\"font-weight: bold;\">Date and Time:</dt>");
sbMessage.AppendFormat("
<dd>{0}</dd>", DateTime.Now.ToString("MM/dd/yyyy h:mm tt"));
sbMessage.Append("
<dt style=\"font-weight: bold;\">Message:</dt>");
sbMessage.AppendFormat("
<dd>{0}</dd>", exception.Message);
sbMessage.Append("
<dt style=\"font-weight: bold;\">Stack Trace:</dt>");
sbMessage.AppendFormat("
<dd>{0}</dd>", exception.StackTrace);
sbMessage.Append("
</dl>");

using (System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage())
{
mailMessage.From = new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailWebsite"].ToString());
mailMessage.To.Add(new System.Net.Mail.MailAddress(ConfigurationManager.AppSettings["emailInformation"].ToString()));
mailMessage.Subject = "[ERROR] Unhandled Exception from the Website";
mailMessage.Body = sbMessage.ToString();
mailMessage.IsBodyHtml = true;

System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient();
smtpClient.Host = ConfigurationManager.AppSettings["mailServerOutgoing"].ToString());
smtpClient.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings["emailWebsite"].ToString(), ConfigurationManager.AppSettings["emailWebsitePassword"].ToString());
smtpClient.Send(mailMessage);
}
}



Once this is completed, and modified to specification, we must add the following definitions to the web.config (in the appSettings element):


<appsettings>
<add key="mailServerOutgoing" value="mail.your-server-address.com">
<add key="emailWebsite" value="mailer@your-server-address.com">
<add key="emailWebsitePassword" value="your-mailer-password">
<add key="emailInformation" value="receiving@your-server-address.com">
</appsettings>



This allows us to keep important information, such as email accounts and passwords, separate from the codebehind file, and is thus moderately more secure.

And that is all there is to it! All we ask is that if you use our code, just take a few moments and digg this entry using the addThis panel below. Thank you.

...

Bookmark and Share

Thursday, September 4, 2008

Google Chrome: A few thoughts, and maybe a rant or two

I have read many blog posts and news entries on the topic of Google's new web browser, Chrome, and much to my surprise -- the majority of them were quite negative. Google, the company that has brought so much innovation and so many extremely useful products to the world, is now being shunned for it's attempt to offer a FREE alternative to the clutches of Microsoft and its web browser, Internet Explorer.

Now, don't get me wrong, I do not detest Microsoft at all. However, in recent years IE has not really been what I would consider, a "Top Performer." IE is characteristically slower than most browsers, largely cumbersome, and plagued with frequent crashes which leave users with no way to resume their previous musings.

I must also note that I am a big fan of Mozilla's newest version of Firefox (version 3), Opera's latest release (version 9.5), and even Apple's Safari (version 3.1). I have installed all of them because they each offer something a little different. Heck, I have even installed IE8 (beta 2), though I'm not impressed with it, thus far.

It is true that Internet Explorer continues to dominate browser usage, with IE 6 and 7 combined topping the 50% mark, but with Firefox coming in second at a little over 43% (source: w3schools.com)

A side note: Many people have screamed MONOPOLY since IE was included as the default browser in the Windows operating system, but I can certainly guarantee that any other company would do the same thing. Furthermore, there is absolutely nothing wrong with a company trying to offer a complete solution to the end-user.

Now where was I, ah yes...
So why has Firefox been able to gain so much ground in this "Browser Battle?" Simple. By offering better features, faster loading, quicker HTML and Javascript rendering, etc, etc. Likewise, if Google Chrome offers advantages over other browsers, why not use it? If Chrome has a quicker Javascript engine, has better support for the latest web technologies, prevents total loss of progress during crashes, and is stable to the point where crashes are unlikely to occur anyway, what's the downside?

Well, some critics seem to think that Google (with it's eyes set on global domination) has already crossed over to the "dark side," and is secretly tracking EVERYONE; reading their emails, and logging all of their movements. Though that may be true to a fraction of a degree (but strictly for personalized advertising), this new browser is a good thing.

From a web design and developer's perspective: As tedious as it may be to test sites with yet another browser in order ensure cross-browser compatibility, it seems like a small price to pay for better web standards. Plus, a move like this will certainly push competing web browser developers to adopt better standards.

Any new browsers that promote strict standards, increase efficiencies, and force competition to adopt better practices...has my vote! It is also certainly worth mentioning that Chrome is also 100% open-source, which will undoubtedly promote new feature developments.

So, my initial inspection of Google Chrome yields very positive results: quick, clean, and intuitive is a great way to go. Now, let us see what becomes of it.

Labels: , ,

Bookmark and Share

Wednesday, September 3, 2008

Internal Domain Redirects with ASP.net and C# (C-sharp)

Here is nice little piece of code for issuing an internal domain redirect. Simply insert the code into the global.asax file, which should be found in the root web (www) directory. A commented line explanation is included within. ...and please excuse the improper code structuring.

In this case, we are setting up a redirect from abwebsitedesign.com to www.abwebsitedesign.com in order to ensure proper indexing by search engines.

void Application_BeginRequest(object sender, EventArgs e)
{
//if the requested domain contains this
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://abwebsitedesign.com"))
{
//then return this header response
HttpContext.Current.Response.Status = "301 Moved Permanently";

//and then replace the requested address with the newly defined address
HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace("http://abwebsitedesign.com", "http://www.abwebsitedesign.com"));
}



This also works nicely for telling search engines where a new page can be found (in case you change files, paths, or page names).


void Application_BeginRequest(object sender, EventArgs e)
{
//if the requested address contains this
if (HttpContext.Current.Request.Url.ToString().ToLower().Contains("http://www.abwebsitedesign.com/oldpage.aspx"))
{
//then return this header response
HttpContext.Current.Response.Status = "301 Moved Permanently";

//and then replace the requested address with the newly defined address
HttpContext.Current.Response.AddHeader("Location", Request.Url.ToString().ToLower().Replace("http://www.abwebsitedesign.com/oldpage.aspx", "http://www.abwebsitedesign.com/newpage.aspx"));
}



Pretty simple, yet very necessary for properly, and effectively maintaining SEO.

...

Bookmark and Share

Custom Error Handling in ASP.net C# (C-Sharp)

There are several methods being used to provide users with helpful 404 error pages, but just because it looks helpful to the user, doesn't mean that it is benefiting your SEO. It is essential, for the prosperity of your website, to be certain that proper server header responses are being sent.

We have taken a somewhat different approach to implementing error handling. We have included a "switch" statement in order to provide multiple errors and server header responses through one page.

Here is a sample from our "errorhandler" codebehind file:


protected override void Page_Load(object sender, EventArgs e)
{
if (Request.QueryString["m"] != null)
{
switch (Request.QueryString["m"].ToString())
{

case "404":
Response.Status = "404 Not Found";
this.Page.Title = "404 Error: File Not Found | AB Web.Design";
mvError.SetActiveView(viewNotFound);
break;

case "500":
Response.Status = "500 Internal Server Error";
this.Page.Title = "500 Error: Internal Server Error | AB Web.Design";
mvError.SetActiveView(viewInternalError);
break;

default:
Response.Status = "404 Not Found";
this.Page.Title = "404 Error: File Not Found | AB Web.Design";
mvError.SetActiveView(viewNotFound);
break;

}
}

else
{
Response.Status = "404 Not Found";
this.Page.Title = "404 Error: File Not Found | AB Web.Design";
mvError.SetActiveView(viewNotFound);

}
}


In the .aspx file:


<asp:Literal ID="ltrError" runat="server" />
<asp:MultiView ID="mvError" runat="server">

<asp:View ID="viewNotFound" runat="server">
<br />
<h1>404 Error: File Not Found</h1>
<br />
<p>We're sorry, that page was not found on this server.</p>
</asp:View>

<asp:View ID="viewInternalError" runat="server">
<br />
<h1>500 Error: Internal Server Error</h1>
<br />
<p>We're sorry, our site has experienced an error. The site administrators have been informed.</p>
</asp:View>
</asp:MultiView>


We have removed some of the other server header responses such as 401, 400, etc..., but as you can see, it is a simple way of covering all of your errors in one page. Plus, it will return the proper response, and prevent unwanted indexing by search engines.

We also tied in an error (exception) reporting feature using global.asax, which we will cover in an upcoming blog entry. It basically generates and sends us a detailed report email every time an error message is displayed to a user.

I hope you found this useful! If you like it, digg it!



Bookmark and Share