January 2005 Archives

User perceptions of performance

| | No TrackBacks

User perceptions of performance

You also should remember that users' perceptions of performance are not granular. Instead there are thresholds. I usually divide them into:

  1. blink of an eye
    too quick to notice, no network operations make it here
  2. short attention span
    for most people this is about 10 seconds, you throw up an hourglass and they will stay in your app and wait),
  3. email checking time
    longer than 10 seconds and less than 90 seconds, most people will alt-tab out to another app
  4. coffee time
    90 seconds to a few minutes, people may walk away to get a cup of coffee, etc.
  5. batch job
    nobody will wait on these willingly

If you can't move an operation from one category to the next, you really haven't made a noticeable improvement. As an example, if most of your webservice calls take 80 seconds and most remoting calls take 40 seconds, that's really not very significant. Your users will think your app stinks either way. If you can go from 16 seconds to 8 seconds on most calls, that's a huge deal.

SIRC guide to flirting

| | No TrackBacks

Scott Hanselman blog

| | No TrackBacks

Release and Debug builds in .NET

| | No TrackBacks

Build lights

| | No TrackBacks

Reinstalling and repairing IE

| | No TrackBacks

Taxonomy of girlfriends

| | No TrackBacks

Taxonomy of girlfriends

Imagine that the Girl Next Door moved to the big city. Think of Meg Ryan in When Harry Met Sally. She's America's sweetheart with an urban sensibility. She's a post-Christian spiritualist, a pre-Monica Clintonite, and a dues-paying member of at least one social-change organization like NOW, Planned Parenthood, or the Sierra Club. You won't find her at an Earth First or PETA meeting, though. Those are the Granola Girl's stomping grounds. Progressive Girls want the world to be a better place, but they live out their politics in a moderate, left-of-center way.

Supermodel personals

| | No TrackBacks

Intercepting serialization exception before formatter

| | No TrackBacks

Run .NET code remotely

| | No TrackBacks

Code review checklist

| | No TrackBacks

Craig Andera

| | No TrackBacks

Weird WikiPedia articles

| | No TrackBacks

.NET late binding

| | No TrackBacks

I am pretty sure I lifted this from a news group posting but I am not sure where.

using System;
using System.Reflection;
using System.Runtime;
using System.Runtime.InteropServices;
namespace Adastra.General
{
  ///
  /// Easy access to late-binding wrapper
  ///
  public class ComCreateObject
  {
    private Type comType;
    private object comObject;
    ///
    /// Generate new class
    ///
    /// com object prog id
    public ComCreateObject(string ProgID)
    {
      comType = Type.GetTypeFromProgID(ProgID);
      if (comType == null)
        throw new ArgumentException(
          "Com ProgId not found",
          "ProgId");
      comObject = Activator.CreateInstance(comType);
    }
    ///
    /// Execute late-bound method
    ///
    /// method name
    /// parameters
    ///
    public object Execute(string method, 
      params object[] parameters)
    {
      return comType.InvokeMember(method, 
        BindingFlags.InvokeMethod, 
        null, 
        comObject, 
        parameters);
    }
    public void ExecuteSet(string method,
      object parameter)
    {
      ExecuteSet(method, new object[] { parameter });
    }
    ///
    /// Execute late-bound property property-set
    ///
    /// property name
    /// value
    public void ExecuteSet(string propertyName,
      params object[] parameters)
    {
      comType.InvokeMember(propertyName, 
        BindingFlags.SetProperty, 
        null, 
        comObject, 
        parameters);
    }
    ///
    /// Execute late-bound property property-get
    ///
    /// property name
    /// parameters
    ///
    public object ExecuteGet(string propertyName,
      params object[] parameters)
    {
      return comType.InvokeMember(propertyName, 
        BindingFlags.GetProperty, 
        null, 
        comObject, 
        parameters);
    }
    ///
    /// Execute late-bound property property-get
    ///
    /// property name
    ///
    public object ExecuteGet(string propertyName)
    {
      return comType.InvokeMember(propertyName, 
        BindingFlags.GetProperty, 
        null, 
        comObject, 
        null);
    }
    public void Dispose()
    {
      Marshal.ReleaseComObject(comObject);
      comObject = null;
    }
  }
}

// Get type of the COM object xxxx
Type objectType = Type.GetTypeFromProgID("xxxx");

// Create instance of the COM object
object comObject = Activator.CreateInstance( objectType);

// Get the Count property
int count = (int) objectType.InvokeMember(
    "Count",
    BindingFlags.GetProperty,
    null,
    comObject,
    null);

Windows keyboard handling

| | No TrackBacks

Multiplex IIS (multiple IIS sites on one machine)

| | No TrackBacks

Multiplex IIS (multiple IIS sites on one machine)

Workaround: Multiple web sites in IIS on Windows XP Professional

Recommended nAnt articles

| | No TrackBacks

Software failures in embedded systems

| | No TrackBacks

Software failures in embedded systems (pacemakers, space program, radiation machines)

Jack Ganssle has some anecdotes and gory details about software failures in embedded systems. Sometimes being 99.99% perfect just isn't good enough.

[Crash And Burn]
[When disaster strikes]
[Disaster redux!]

Developing in .NET with NAnt

| | No TrackBacks

Searching Windows Off Topic on Gmane

| | No TrackBacks

Obtain single keypress in C#

| | No TrackBacks

Obtain single keypress in C#

.Net coding awards

| | No TrackBacks

Control inspector

| | No TrackBacks

Pages

OpenID accepted here Learn more about OpenID
Powered by Movable Type 4.32-en

About this Archive

This page is an archive of entries from January 2005 listed from newest to oldest.

December 2004 is the previous archive.

February 2005 is the next archive.

Find recent content on the main index or look in the archives to find all content.