Failure is inevitable


Using jQuery UI to make a drag-and-drop capable table

I’m adding support for dragging and dropping rows to jQuery, and as you can probably tell from reading this blog, I’m lazy.  I don’t want to reinvent the wheel, so I was not very keen on the idea of trying to implement dragging from scratch.  jQuery UI to the rescue!  But some quick Googling had me discouraged.  I couldn’t find any examples where people had successfully used the draggable and droppable plugins in the manner I wanted.  Ugh.  Still, I decided to give it a shot, and low-and-behold, I got it working!  The hard part was figuring out some of the ... [More]

Please don’t listen to Joel Spolsky...

I’ve been debating whether or not I even wanted to touch Joel’s latest words of “wisdom”, but I finally decided that it’s just too damaging to ignore.  The issue has been beat to death (my favorite, the truth, another take, etc.) and most of the good points have been covered, so I won’t get too in depth.  To sum it up, I have lost all confidence in Joel as a being a guy-to-listen to as far as development goes.  Yeah, he’s clearly a smart business man, but a developer he isn’t.  You know, now that I’ve said that, I’m not even sure how smart of a business man Joel actually ... [More]

(My) Javascript Stupidity

I just fixed a stupidly obvious bug in liteGrid that shows up when you have multiple grids on a page.  Look at the default options for liteGrid: $.inrad.liteGrid.defaultOptions = { columns: [], dataProvider: new NullDataProvider(), modules: [], missingValue: "", rowIdColumn: "ID", layoutProvider: new BasicLayoutProvider() } The bug is right there.  Keep looking.  Give up?  Wait, you already see the bug?  Crap.  Yeah, well, I don’t consider myself a JavaScript expert, and that’s a good example of why. For th... [More]

Why I will never, ever buy another Apple Macbook

If you came to my blog today in the hopes of finding useful content, you are going to be sorely disappointed, because I have decided to waste your time today by telling you how wrong I was to ever buy something made by Apple.  Before I do that though, allow me to bring you up to speed on what I was thinking when I made this mistake last year. A (not so) long time ago, in the same place I’m sitting now… I was enrolled in a master’s program at Tennessee Technological University, and the fall semester was just about to get underway.  I had been lugging around a Dell Inspiron 9400 the ... [More]

A fixed ClientBase class for WCF proxies

It’s a well-known point of pain for Windows Communication Foundation developers that ClientBase<T> is, in fact, broken.  Though it implements IDisposable, calling Dispose doesn’t clean everything up in all cases.  Instead, you have to close the channel manually (aborting it instead if it is faulted), handle errors, then dispose of it.  I’m not sure why this approach was chosen, but given how obvious the problem is and how much pain it’s caused, I have to think there’s a very good reason it is the way it is. I set about this weekend to try and fix this problem for the pro... [More]

How to run and debug a Windows Service with Visual Studio .NET

I’m working on a Windows Service application at The Day Job, and while I’ve done the usual test-driven development approach, I still have a few things I’m testing and polishing that are integration-related (such as things behaving slightly differently when using SQL Server instead of a mock).  Deploying a service isn’t difficult thanks to installutil, but it is still an extra hoop that I didn’t want to jump through as I tweaked my service.  With .NET, services are mostly just regular Windows applications, the difference is in what happens inside of the Main method: //For a service a... [More]

Announcing Esenterate &ndash; a clean .NET API for ESENT

I have blogged previously about my disdain for relational databases, and recently I’ve been looking harder and harder at ESENT.  In my two previous posts on the ESENT, I covered how you could use ESENT from .NET as well as why you might want to.  Because of the ugliness of the API, today you are probably better off using a different data store than ESENT. Tomorrow may be a different story though (not THE tomorrow, I mean just some “tomorrow” in the future).  I just opened the Esenterate project on Google Code.  The purpose of Esenterate is to provide a clean, .NET-friendly... [More]

I love ReSharper...

If you are a .NET developer and not using ReSharper, you are behind the curve.  You could be working a lot more efficiently.  You owe it to yourself to go download the 30 day trial right now.  That is all.

When to consider ESENT

Rob pointed out that my last post didn’t really make a strong case for using ESENT.  Why would someone want to jump through the extra hoops when they could just use NHibernate to store their data?  In it’s current form, I would have to agree that NHibernate is probably a better solution than using the very low-level ESENT API.  In its current form, there are two times when I would consider using it: When I need blazing-fast access Relational database operate in the millisecond range (if you are lucky).  That sounds fast, but compared to most operations in your application... [More]

Alternatives to Relational DBs - ESENT

As I have ranted about previously, I’m not a big fan of relational databases.  They have their uses, but they also have some very serious drawbacks, and I think they should be employed selectively.  There are lots of other ways you can handle persistence for your application.  This post kicks off what I hope will be a short series about some of the alternatives that I’ve used.  We’ll see how long it is before I get derailed into something more interesting. Today, we’re going to look at ESENT, an embedded database that actually ships with every recent version of Windows (da... [More]