You Say Goodbye WebHost4Life, I Say Hello Arvixe
Well, I guess I'm the one saying goodbye to Webhost4life. Yes, they had a decent run but all in all their service is not as good as I thought it was. Bar not being able to use the new control panel for months the site was slow and I was itching to convert the new Intrepid Studios to .NET 4.
I made the decision to switch to Arvixe after I couldn't get sub-domains to work on the new Webhost4life platform for the life of me. Their control panel was just abominably slow and didn't allow the control I needed.
I googled "top rated asp.net web hosts" and Arvixe was one of the top on the list. I searched other rating sites just to be safe. While their site was nothing much to look at in terms of design, their feature list was quite impressive (ahem, multiple MSSQL databases? Score!). It took me about 5 minutes to setup my account, another 5 to backup and restore my database to their server without a hitch, and not very long to transfer all my existing files over via FTP. I set up my mail accounts (and I use POP3, so I didn't worry about losing any mail) and pointed my domain's DNS name records to their server. All done in the span of a couple hours.
I must say, I am pretty pleased with the experience. Not only that, my site is way faster… and will be even better once I release the new site (it's coming soon!).
No host is perfect and I'm having some trouble setting up password protected folders but for now I use Forms authentication so it's not too big of a deal.
MinneWebCon 2010 – Informal User Testing
I just finished up with attending this year's MinneWebCon. I was excited because it was my first time being apart of a presentation at such a large event and I hope it's not the last. Our topic was about informal user testing and how that helps drive design and creating a usable application. The main speaker was my old supervisor, Zach Johnson, and then those of us who currently work at Student Unions & Activities: Ken Loomis, Ethan Poole, and me.
Presentation
New Version of Intrepid Studios En Route [Stay Tuned]
Jumpstart Your .NET Web Application Development - $12 [Marketplace]
I've been exploring the CodeCanyon marketplace for a little while now and I am pretty impressed. It's an opportunity to monetize some ideas I've had and to gain some portfolio work and possibly more customers. I've been a proponent of free software (I provide some on this site) so I won't be selling everything I make, but I think it's nice to put some product out there as a web designer.
I've just released my Web Application Template package for .NET web applications (and it's only $12). It's basically what I would prefer to start with every time I work on a new web site… in effect, a "Web App in a Box."
It supports .NET 3.5 and .NET 4 and offers a slew of features (ELMAH integration, compression/minification of CSS and JS, etc), the to-do list ever growing. You can be sure I'll keep it updated because I will be using it myself! I'm already using it for a new version of Intrepid Studios (not a total redesign, more enhancement-like).
I was sick and tired of all my projects using different file/folder/solution layouts and having to duplicate code across them all the time. I wanted a way to easily get started without spending time configuring everything. While I was working on it, I thought it would be useful for other developers. Will it really save you six hours? Well, it took me a solid 6+ hours of development time to set it up… and then some. Six is a safe bet, possibly more if you aren't that familiar with some of the components I integrated.
As always, let me know if there are bugs and improvements you think of.
You can also check out my previous CodeCanyon release, Google Picasa Gallery + API.
Making UrlRewritingNet Ignore URLs [Fix]
I recently updated the Intrepid Studios site back-end to include ELMAH, the error reporting module. ELMAH is great and works great, except that it doesn't play nice with UrlRewritingNet.
There is a StackOverflow discussion about this with a workaround that ended up not using UrlRewritingNet at all unfortunately. In addition, there's a detailed post about doing some voodoo and mixing potions to get UrlRewritingNet to work. Note that you can simply remove the defaultPage attribute on the urlrewritingnet config section to solve this, but it may cause other unintended consequences.
I thought to myself, there's gotta be a better way! And there is (well, it's a hack so I suppose it is not entirely the best, but it is the simplest so far). I simply added in a few lines of code to the UrlRewritingNet source code to allow you to ignore URLs. Without knowing much about how the component works, this is an easy "patch."
Download the Modified Binaries
For those that don't care how I did it, I have uploaded the modified binaries you'll need to replace in your application. See below for an explanation of how to use it.
- Download the modified binaries (v0.1) – 3/26/2010
Getting the Source
Head over to the Downloads section of UrlRewritingNet to get the source code.
Extract the files to a directory of your choice.
I opened and converted the solution with VS 2010, but you can use anything you wish.
Modifying the Files
We will modify 3 files. Follow along below.
In WebRewriteOption.cs, add another value to the enumeration like so:
[Flags]
public enum RewriteOption
{
Application = 0x00,
Domain = 0x01,
None = 0x02 // KR: Ignore the URL
}
In WebUrlRewriteModule.cs, around line 212, add the following underneath if (rewrite.IsRewrite(requestUrl)):
//KR: ignore url
if (rewrite.Rewrite == RewriteOption.None)
{
rewritten = true; // sure, we totally "rewrote" it, heh.
break;
}
In urlrewritingnet.xsd, change the xs:simpleType for RewriteOption to be:
<xs:simpleType name="RewriteOption">
<xs:restriction base="xs:NMTOKEN">
<xs:enumeration value="Application" />
<xs:enumeration value="Domain" />
<xs:enumeration value="None" /> <!-- KR Ignore URL -->
</xs:restriction>
</xs:simpleType>
Finally, in the same file, change the use="required" attribute of destinationUrl to be optional, like so:
<xs:attribute name="destinationUrl" type="xs:string" use="optional" />
Build the solution in Debug/Release and copy over the new DLLs to your project. Voila, all done! Now all you need to do to NOT rewrite a URL is the following:
<add name="Elmah" virtualUrl="^~/elmah.axd(.*)$" rewrite="None" />
I've tested it with Intrepid Studios and it seems to work just fine.
As always, feedback and improvements are much appreciated!
Update: jQuery Rich Text Editor [New Version]
A new minor update has been released to the jQuery Rich Text Editor with some new icons and an ASP.NET demo.
Changes
- Added Silk icons for a nicer look
- Added ASP.NET demo solution to test the script
- Added extra function "$.rte.html".
- Updated code to match latest changes in Google Code repo.
- Note that this release contains BREAKING CHANGES because the options have all been renamed (see Documentation)
I tested the script with the latest jQuery release and it still works.
Let me know if you run into any trouble. I think it may still have some trouble with nested controls, which I will test soon, since my admin panel wasn't saving the text written in the control.
Windows Phone 7 Quick Tip: Disable Hamachi [Tips & Tricks]
I ran into a problem while playing with the Windows Phone 7 CTP the other day. I was trying to use the Google data services via the WebClient object. It was throwing exceptions no matter what I did. I noticed it threw exceptions on ANY Google-hosted URI.
Long story short: disable Hamachi or any other potential virtual network adapters. VMWare seems to not interfere but Hamachi enjoys taking over connections sometimes and will hijack your phone emulator.
You can view the details of my adventure right over yonder.
Release: ASP.NET Picasa Photo Gallery + API [Project]
First Touch Screen Application [Touchy Feely]
At my student job over at the Student Unions & Activities at the U of MN, we just completed a pretty big project. It was tons of fun and we're still improving it. It is a WebKit-based touch screen directory application. There is no Flash, there is no Silverlight. It was written using jQuery, PHP, MySQL, and cutting edge CSS3. The floor maps were done primarily in Google SketchUp and I modified some in Photoshop with extra information. The app runs on a Mac Mini and uses a webcam to detect movement and stop the screensaver so people can use it.
My primary responsibilities included overall graphic design and UI (Photoshop, HTML, CSS3), some JS work, and some PHP work.
Big thanks goes out to the team: Ellie for her astounding SketchUp work, Zach for his managerial prowess, Ken for his awesome paging routines, Ethan for his JS ninja skills, Trent for his hardware expertise, and Sungho for getting the webcam working!
Release: Measure Custom Clothing [Web Site]
We're proud to announce a new website we've developed for our client Measure Custom Clothing. They sell custom suits and shirts at low prices in the Twin Cities area.
The site was developed in .NET, programmed in C#. In addition to the public-facing pages, I also developed a custom sales order and customer management system. Managers and sales associates can create new sales orders, print them, email them, and keep track of their status with an administration panel.
If you're looking for a good suit (and I can vouch for their quality), please check them out!
Live JavaScript Clock [jQuery]
For a project at work we wanted to show the time to the user (kiosk application) in real-time. I needed it to be super simple, just updating text every minute in a paragraph tag. I was about to write my own jQuery plugin, but someone has done it for me.
Here's what we ended up using, thanks Doug!
http://github.com/dsparling/jclock
That has the latest version.
I would have preferred it using datejs's style format specifiers but it does the job aptly.
PS. I found it by Googling "jClock," the name I was going to use for my plugin.
Bypass SQL Server 2008 Install/Uninstall Rules
On Windows 7 RC1, I've had trouble with the rule check with SQL Server 2008. It would constantly say I needed to restart when I didn't need to.
Here's a quick fix to bypass that rule:
- Navigate via command line to the directory of the setup. When uninstalling, this is located in: C:Program FilesMicrosoft SQL Server@Setup BootstrapRelease
- Run this command:
setup.exe /Action=[un]install /SkipRules=RebootRequiredCheck - Use "uninstall" and "install" where applicable.
Refer to this blog post for some other tips.

