Andy Edinborough

My blog is cooler than your blog

CSS Stress Testing and Performance Profiling

Posted on April 14, 2011 in Code    Tagged css test stress performance profiling Tweet This

I present you with the CSS Stress Test bookmarklet.


Now let me explain: I have been losing my sanity over the oddest issue.  The project I’m working on right now has a fairly complex stylesheet.  Performance for the site is absolutely critical.  I’ve done my best to squeeze and optimize every line I can.  In all browsers, it runs like a champion.  Except IE9.  It runs terribly in IE9.  To make matters worse, it runs fine in IE8, IE7, and though it’s mangled, it even runs in IE6!


Something specific to IE9 was causing a serious performance glitch.  I realized fairly quickly that CSS was to blame.  Disabling JavaScript had no effect, but disabling all CSS instantly fixed performance.  I went through the usual suspects: filters, and various new CSS3 properties, but nothing seemed to help.  So I reached out to the community looking for something that could profile my… Read More →

Reading Entity Framework Code First Objects from a Stored Procedure

Posted on November 1, 2010 in Code    Tagged entity framework code first c# t-sql Tweet This

I may be a nerd (that is, a geek who get’s paid), but I don’t enjoy writing stored procedures.  However, in working with the Entity Framework, I’ve found that doing complex and often repeated queries of my Entity Framework sets is rather inefficient.  My complete round-trip page loads (generate and execute query, then produce HTML) takes about 1,000ms on average.  So I wanted to replace this ugly query with a simple stored procedure—precompiled, ready to fire, and highly optimized for my specific query, while still having the ability to do ad-hoc queries.

So at PDC10 I made sure to talk to the EF boys and they pointed me to the System.Data.Objects.ObjectContext.Translate method.  This little bad boy will take a DataReader and create an enumerable of my objects from it—perfect.

Let’s walk through the “gotchas”.  In my example below, I have a class named Product.  I want to do… Read More →

Beautiful PNG Wait Indicator with Raphaël and jQuery

Posted on April 16, 2010 in Code    Tagged raphael jquery svg png Tweet This

UPDATE:  Please don’t read this post… It’s actually kind stupid.  :/  Now that IE supports 2D CSS tranforms, there are betters ways of handling this.

 

Can you believe that in 2010 we are still stuck  with using animated gif’s?  They support transparency, but not the alpha-channel.  So when you need to create a wait indicator that won’t have a specific background, you’re stuck with a pixelated look.

Recently, I wanted to create a beautiful wait-indicator to display while AJAX was loading.  I wanted to use PNG, but animated PNG’s don’t have wide support yet. Furthermore, PNG’s are fairly large, so an animated one would be orders of multitude larger.  I thought, “This is silly.  This is the image I want. ROTATE IT!”.  Seriously, what year is this?  1996?!

Enter Raphaël:

Raphaël is a small JavaScript library that should simplify your work with vector graphics on the web. If… Read More →

Custom .NET Remoting – Easier Than You Think

Posted on April 1, 2010 in Code    Tagged remoting c# Tweet This

The idea of implementing remoting will give most programmers instant heartburn.  Granted, I’m not an expert on all the existing remoting solutions, but I haven’t found one that works intuitively.

All the different solutions I’ve seen require just about double the code.  You write a method once, then write a wrapper for the method to implement remoting. 

Furthermore, they often require special handling to make sure the contextual variables are maintained.  For example, when I was working with CSLA recently, I was appalled to see:

customer = customer.Save();

The Save() method executes remotely, so the customer object that comes back has a separate memory reference.  Surely, we can get around this. 

So I set out to write my own.  I had 4 main goals.  I wanted to be able to:

// Remote any method with no code changes to the business object
Remoting.Execute(customer.Save);

// Executes remotely, and updates the object… Read More →

C# OAuth Implementation

Posted on December 17, 2009 in Code    Tagged .net c# yahoo oauth Tweet This

AAAARRRRGGGHHH!!

I had to get that out of my system.  I’m not familiar enough with the exact specification of OAuth to know whether it’s Yahoo or Yedda that can’t read a spec, but the Yedda implementation of OAuth available on Google Code, doesn’t even begin to work with Yahoo’s YQL API.  Futhermore, the Yedda implementation is bloated and hard to follow.  Why is it that so many programmers feel the need to over complicate EVEYRTHING.

So… Here’s my rewrite of the Yedda implemenation.  It works out-of-the-box.  There are no objects to instantiate, just 4 very simple static methods to use.  A word of caution, System.Net.WebClient cannot be used to talk to Yahoo.

Update (1/29/2010): See a complete working example of C# / OAuth / Yahoo YQL.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Security.Cryptography;
using System.Text;

namespace WAN.Lib {
    public static class OAuth {
        private static Random… Read More →

Use Late-Binding in C# Now, without .NET 4.0

Posted on June 17, 2009 in Code    Tagged .net c# late-binding Tweet This

The lack of late-binding in C# has been one of my biggest gripes about C#.  Finally, in the .NET Framework v4.0, the dynamic keyword has been introduced (it could be argued that it is too loose—allowing for variant types).  But until it is released, the need still exists, and even then, not all clients will immediately support it.  So, in a bind, I wrote a simple class to allow access to objects via late-binding in C#. 

The trick to figuring out how to write the code came from using Reflector to decompile some VB.NET code… (I love reverse-engineering :]).  The answer is that the VB compiler makes use of an area of the .NET Framework within the Microsoft.VisualBasic assembly that is marked with the attribute [EditorBrowsable(EditorBrowsableState.Never)] to prevent people from discovering it.

Here’s an example that uses my Late-Binding code to open an Excel Spreadsheet and convert it to a… Read More →

Microsoft Releases Bing without a "Search Provider"?

Posted on June 1, 2009 in Tech Watch    Tagged Bing Microsoft Open Search XML Search Tweet This

As my first post on my new blog, I'm pleased to say that Microsoft has finally released Bing, a "decision engine" that offers Google real competition.  But did they seriously just release a search-engine product with no Search Provider add-in for Internet Explorer?  Seriously?  This is a huge disappointment; I actually really like Bing.

Ironically, I was able to add Bing as my default search provider to Chrome, and Firefox very easily, but my only option for IE was to set it as my homepage.  I don't want to change my homepage.  I just want to set it as my default search provider...  I could write my own, but I've got to honest, I'm lazy and that sounds like a lot of work.

--- UPDATE ---
I received a tweet back from @bing saying that they're working on it.  I'm sure they want to do something fancy, but something that works… Read More →

© 2013 Andy Edinborough. All your rights are belong to me.