January 2008 Entries

Three Rules for Database Work

Some developers love working with relational databases, and other developers can't stand to touch them. Either way - if your application uses a database, you have to treat the database with some respect. The database is as much a part of an application as the code and the models inside the software. Here are three rules I've learned to live by over the years of working with relational databases.1. Never use a shared database server for development work. The convenience of a shared database is tempting. All developers point their workstations to a single database server where they can test...

Zune Update Depends On Windows Firewall Service

I always feel a twinge of trepidation when I make a non-standard configuration change to one of my machines. For instance, when I turned off the Windows Firewall service on my desktop a few months ago, a voice in my head told me I'd one day be installing software that assumes the firewall service is running, and that software would fail with a mysterious error. Turns out that software is the Zune updater application. It took some trial and error (three failed update attempts with error code 0x80070643), but once I turned on Windows Firewall, my Zune update finally succeeded....

Customer Expectations

Recently, I received a package from my local power company - Alleghany Energy. The package contained two 13-watt carbon fluorescent lamps (CFLs). In the Unites States, various organizations are trying to encourage people to replace their incandescent light bulbs with CFLs to save energy. In fact, recent U.S. legislation will effectively prevent the sale of incandescent bulbs after the year 2014 (unless the bulbs somehow become a lot more efficient by then). Since the package didn't come with an invoice inside, I assumed my power company was giving away free bulbs. After all, Home Depot gave away 1 million bulbs...

Tafiti and the Pain of Silverlight 1.0

Tafiti is a search visualization application built with Silverlight 1.0 and the Windows Live APIs. The Tafiti code is hosted on CodePlex under the Microsoft Public License (MS-PL), as announced by Marc Mercuri last month. What is amazing about Tafiti is the number of controls written in 3700 lines of JavaScript. Tafiti includes custom Button, Scrollbar, Hyperlink, TextEdit, StackPanel, FlowPanel, and Carousel controls. You can find the code inside the js folder of the Tafiti web project, inside a file by the name of controls.js. Tafiti highlights some of the pain inherent in Silverlight 1.0 development, too. Most notably the...

ASP.NET MVC and User Group Fun

I did a couple user group presentations this month on the new ASP.NET MVC framework. This post is a follow-up with all the links I promised to publish. My first presentation of the year went to the Central Maryland Association of .NET Professionals in Columbia, MD. The turnout at the meeting was tremendous – I'd say well over 100 people were in attendance. It didn't hurt that G Andrew Duthie was giving away free copies of Visual Studio 2008 as part of the Microsoft Installfest, and the catered food was a lot better than the typical pizza-in-cardboard user group fare....

Pricing the Ultimate Developer Rig 7 Months Later

It was about 7 months ago when Scott Hanselman and CodingHorror built the Ultimate Developer Rig. Let's see what the saving are for late adopters... PartThenNowAntec P182 Gun Metal Black 0.8mm cold rolled steel ATX Mid Tower Computer Case - Retail$154.99$139.99MSI P6N SLI Platinum LGA 775 NVIDIA nForce 650i SLI ATX Intel Motherboard - Retail$144.99$119.99*2 x MSI NX8600GTS-T2D256E-OC GeForce 8600GTS 256MB GDDR3 PCI Express x16 Over Clock Edition HDCP Video Card - Retail$337.98$239.98Western Digital Raptor WD1500ADFD 150GB 10,000 RPM Serial ATA150 Hard Drive - OEM$199.99$169.99Seagate Barracuda 7200.10 ST3500630AS 500GB 7200 RPM SATA 3.0Gb/s Hard Drive - OEM$120$120.00**Intel Core 2 Quad...

A Few Interesting Windows Workflow Links

Igor emailed me for my thoughts about his SMTP server built with Windows Workflow. A link for the source code is at the bottom of his post. As Igor points out, WF is well suited to solve more than just business problems, and I think his project is an excellent and practical demonstration of building state machines in WF. Matt Winkler is looking for feedback on refactoring workflows. Personally, I'd like to see some additional renaming support at the property and activity level that can auto-magically patch up declarative activity bindings. Many moons ago I wrote a post on unit...

The Trivial Things You Can Learn When Stress Testing an AJAX Application

Internet Explorer has no problem creating an array of 65,536 elements. var array = []; for(var i = 0; i < 65535; i++) {     array.push(i); }     array.push(i); alert(array.length); // says 65536 However, IE does have a problem eval-ing an array of 65,536 elements. var buffer = '[0'; for(var i = 0; i < 65535 / 15; i++) {     buffer += ',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0'; } buffer += ']'; var array = eval(buffer);     alert(array.length); // would be 65536,                      // if it got this far.. The code produces an out of memory error on the eval statement. The limit for eval appears to be 65,535 – a number that harkens back to the dark, dismal days of programming in...

Quirky News Review of 2007

Not surprisingly, the year 2007 started with January. Microsoft and Ford launched SyncMyRide.com during the Detroit auto show. SYNC now has the commercial that always makes me chuckle - the one with the "Play artist Tiffany" line. Voice recognition made headlines again in early February as Sebastian Krahmer's idea for a remote Vista exploit began to circulate. The idea is to record spoken, malicious commands into a media file on the web and see if an unsuspecting user will play the file while Vista's speech recognition is running. I think the biggest threat is from the inside, though. Picture a...