Starbucks Card Balance Google Gadget

12.19.2008 2

Starbucks Google Gadget

I created a simple Google gadget to show me how much money I have left before my caffeine headache kicks in. It’s a nice addition to my iGoogle account.

Add to Google

Creating a user friendly app_offline system maintenance page

08.27.2009 0

Undoubtedly you’ve heard of the app_offline.htm file by now.  If you haven’t, you can read more about it on ScottGu’s blog post.  This technique has been one of my favorite tricks for many years.  From time to time, like all of us, I need to take down a high profile site to apply some “enhancements” and I unfortunately can’t wean users off gracefully.  I always feel bad when I publish that file to the server, knowing there could be hundreds of users sitting at, in their mind, an inexcusable system maintenance page.

So what are we to do?

Read more

How to return LLBLGenPro Entities to JSON

08.07.2009 1

I was recently searching for a way to convert LLBLGenPro Entities to JSON when I ran across Josh’s approach. I like the approach but thought there must be an easier way. This approach requires LLBLGenPro 2.6 or above and .NET 3.0.

Here’s an example


            LinqMetaData metaData = new LinqMetaData();

            var q = from customer in metaData.Customer
                    where customer.Id == customerId
                    select new { id = customer.Id, name = p.FullName };

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(q);


Here’s another example with a 1:m return:

            LinqMetaData metaData = new LinqMetaData();

            var q = from meeting in metaData.ReviewMeeting
                    select new
                    {
                        CreatedBy = meeting.CreatedBy,
                        ReviewProvider = from providers in meeting.ReviewProvider
                                         select new { ProviderName = providers.FullName }
                    };

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(q);

Nice thing about using the new linq features in LLBLGenPro is you’re only bringing back the data you care about. Yes, you could always ignore fields, but isn’t it easier to tell it what you want instead of what you don’t want?

Thoughts? I’d love to hear them.

How to prevent gifs from rendering grainy using .Net GDI

12.20.2008 0

I recently built a Http Handler for an Asp.net application that needed to generate image thumbnails from different image types on the fly. Sounds easy enough, right?

Well it was a simple task until I tried to generate a thumbnail from a gif. After hours and hours trying to figure out how to improve the resolution I found a great article addressing this particular issue. Read more

How to update an UpdatePanel from two different ContentPlaceHolders using MasterPages

12.19.2008 2

The first thing you want to do is always set your UpdatePanel’s UpdateMode to Conditional. By default UpdateMode is set to Always which is great when you’re first learning, but not efficient. Why? Because every time a postback is triggered, your update panel reloads, which 9 times out of 10, isn’t what you want.

The trick to setting up two different UpdatePanels is this. Lets say you have an UpdatePanel containing a GridView in one ContentPlaceHolder displaying a customer’s order history. You have another UpdatePanel in another ContentPlaceHolder that will display the order details when an order is selected.

Read more