About/Contact

Steve Trefethen

Steve Trefethen is CTO at Wanderful Media.
Contact me

View my LinkedIn profile



Calendar

<<  June 2013  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar

Disclaimer

The posts on this weblog are provided AS IS with no warranties, and confer no rights. The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.



Funny code comment

May 08 2009 10:34PM

A little Friday fun… while reviewing some code awhile ago I ran into this little gem:

// Warning: Suckage++

The remainder of the comment is in reference to a situation beyond the developers control where they had to special case logic to deal with some missing data. My comments typically aren’t quite this creative and I usually denote code that has issues using NOTE: or "!!!".

How do you mark code that otherwise denotes some nastiness?

FacebookDel.icio.usDigg It!

Mining your Facebook social network

April 28 2009 7:33AM

imageMany months ago, well before the latest Facebook redesign, I wrote an application to explore my Facebook social network in what I think is a fun and interesting way. Leveraging MIT’s Simile Exhibit project I developed SocialMine, an application that surfaces many attributes of your network’s profile information allowing you to filter and otherwise “mine” the data. As this is the hallmark of any Exhibit application, within the genre, I’d consider it to be quite plain were it not for the personal relevance of the data. Still, you can extensively filter the information in a live view including a Google Map.

Since the application relies on user provided profile data there may be cases where it simply doesn’t/won’t “work”. For example, I discovered a little over half of my friends haven’t specified a current location so they don’t appear on the map. On the other hand, I now know who those people are and can bug them to update their profile. :-) At any rate, I’ve had fun “mining” my network and thought you might too.

Lastly, having been developed for fun in my extremely limited free time largely after 12AM, SocialMine is by no means complete nor thoroughly tested. There I said it and should it fail utterly under load wouldn’t come as a huge surprise. FYI, if you have a lot of friends rendering the page could take significant time so consider yourself warned. For those interested, it’s written in C# using ASP.NET and based on my FDT Starter Kit. And now for those who find this a necessity a disclaimer…

Disclaimer: I make no warrantees expressed or implied, your mileage may vary, use at your own risk. For entertainment purposes only, accuracy of the rendered data is entirely control by your friends so consult them! Insert here any other relevant disclaimer related verbiage encompassing whatever problem(s) or situation(s) you may encounter while using SocialMine. Should you dislike SocialMine kindly remove it and simply move along. Consider yourself warned!

Now that that’s over, enjoy!

FacebookDel.icio.usDigg It!

Tags: ,

Kindness of a stranger

April 23 2009 2:41AM

Weather at OHare April 19, 2009   On Sunday, I flew from SFO to O’Hare (radar on right) on my way to Wilkes-Barre, PA and when I arrived I found my next flight canceled. I headed to the United Customer Service desk which was completely unattended (I so wish I’d had a camera, chairs scattered everywhere) and used a self help monitor and got on the standby list for a 9pm flight then picked up a support phone and talked to a rep who, after telling me I was well down the standby list and that the next available seat was two days later, directed me to talk to a United person at the airport. I asked about alternatives and was informed every other United flight out of O’Hare to PA sold out.

I returned to the gate I’d arrived at having seen the neighboring gate was a flight to Philadelphia, roughly 100 miles from my destination thinking if I could make it I’d drive the remainder. No luck, that flight was booked with a long standby list. I got redirected to another terminal and another United Customer Service desk which had what must have been over 100+ people in line. After waiting for over an hour I spoke to a rep who had no better news and offered only a 6pm flight the next day to Philadelphia. Feeling rather dejected decided to grab some dinner. I got seated at a Chili’s and few minutes later a gentleman was seated next to me and we started chatting and exchanging stories. He’d come from SFO too and his next flight had been canceled and that he was on standby as well. When I explained my situation he said “You can’t stick with that plan, it’s a loser so consider yourself adopted.”

He went on, explaining he was a 300K mile traveler and would help to try and get me a confirmed seat or alternative flight plans. We finished dinner and headed to the United Red Carpet Club, got on the web and started looking for alternatives. He walked me through the process telling me that it was possible to get United to pay for an alternate route. While I was looking for alternatives he called is “special” United travelers number and worked that angle but they couldn’t improve my situation. I managed to get a seat confirmed on a Delta flight to Philly so he called United back and got them to agree to buy the alternative route but at the last minute their flight got delayed sinking the deal. We’d spent over an hour on the phone working on alternatives to no avail. Finally, he said “Let’s go try the desk here in the club.” Given he’d already talked to United on the phone he wasn’t optimistic. We walked up to the counter with my canceled ticket in hand where he explained my situation and the rep took my ticket and offered to review my ticket. Not more than a minute or two later she was printing me a boarding pass for a confirmed seat! She then offered to check his flight and got him confirmed as well! At that point, we returned to the lounge, smiling and laughing over our combined good fortune. By then his next flight time was approaching so we exchanged business cards, I thanked him and he left.

A couple hours later I boarded my flight and made it to PA about 7 hours after my original arrive time. The next morning I had an email asking if I’d made it to PA.  :-)

So, here’s to the generosity of a complete stranger who not only helped me catch a flight but taught me a few travel tips along the way.

Thanks Don!

FacebookDel.icio.usDigg It!

Tags:

Facebook’s Disappearing Platform redux

April 13 2009 11:10PM

image About a month ago I wrote a post with some thoughts on what I felt the impact was on the platform as a result of the UI redesign. Today, I ran across this post on AllFacebook.com titled Top Facebook Applications See 25 Percent Drop In Traffic Since Redesign. Where Nick O’Neil states:

If you thought the last redesign spelled the death of the Facebook platform, you ain’t seen nothing yet! Last July Facebook released their new design and within a matter of months, widget applications had become a thing of the past. A few of those applications were able to withstand the changes but there’s a grim picture being painted weeks after Facebook’s latest redesign.

He goes on to provide some additional statistics and spells out the fact that it’s not all “gloom and doom”. At present, I’m quite skeptical about the Facebook Platform being worthy of the development time and effort in light of the near constantly shifting playing field.

The graphic I included displays the stats for my Facebook Starter Kit application with March 20th (mentioned in the article) highlighted, where it’s clearly visible even this simple application exhibits a similar drop off though I can’t say for sure this wouldn’t have happened naturally as it is a “Seinfeld” of applications.

FacebookDel.icio.usDigg It!

Tags:

Best Buy not quite up to it’s name

April 03 2009 3:59PM

Motorola Surfboard SB5101 Cable Modem

Recently, my Internet connection here at the house started dropping roughly every 90 seconds or so, quite annoying as you can imagine. I started trying to debug the problem doing the typical unplug & cabling song and dance but that didn’t work. I have a Motorola SurfBoard 5201 cable modem and the send/receive lights on it were constantly pulsing no, not good. I headed to Best Buy, plopped down $86, picked up a new Motorola SB5101, brought it home, called Comcast and added it to my account and after testing it several but no dice so the rep scheduled a visit the next day. The following day the tech calls to let me know he’s on the way so I hop in the car, head back to the house and call my wife to let her know. She then informs me she’s been surfing the web and “everything’s fixed”. I pull up to the house and the tech hasn’t found anything wrong with our connection and as my wife indicated everything is fine. Thanks Murphy.

Anyway, back to my point, since Best Buy was convenient I bought a modem there thinking I’d return it if that wasn’t the problem. At this point, it appears that the modem was the problem so I get online and start looking for a better deal. Kind of funny, the Best Buy modem helps me replace itself. :-) I was a bit surprised to that Amazon had the same modem for nearly half the price ($45.93) with free shipping, it arrives in a few days at which point I’ll return the one from “Best Buy”.

[Update: April 6, 2009] Amazon price has dropped another $2.20. I don't see any way Best Buy can compete with that.

FacebookDel.icio.usDigg It!

Tags: ,

GUI Test Automation with Ranorex Studio

March 25 2009 6:19AM

Today I got a demo of a tool called Ranorex Studio, a test automation product built using the SharpDevelop IDE. Aside from the IDE, I last played with in the early days of the SharpDevelop project, the most interesting aspect was the Ranorex C# framework with that provides the basis of modeling UI elements in a manner similar to Zombie’s GEM framework. Tests can be written in C#, VB.NET or Iron Python using the framework to build tests. To give you a taste of this kind of "model" binding here is fragment from a typed class that models Windows Calc:

/// <summary>
/// The FormCalculatorAppFolder folder.
/// </summary>
public class FormCalculatorAppFolder : RepoGenBaseFolder
{

    /// <summary>
    /// Creates a new FormCalculator  folder.
    /// </summary>
    public FormCalculatorAppFolder(RepoGenBaseFolder appFolder) : 
            base("FormCalculator", "/form[@title='Calculator' or @title='Rechner']", appFolder, 3000, true)
    {
    }

    /// <summary>
    /// The ButtonAsterisk item.
    /// </summary>
    public virtual Ranorex.Button ButtonAsterisk
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("ButtonAsterisk", "button[@text='*']", 5000, null);
        }
    }
    /// <summary>
    /// The Button3 item.
    /// </summary>
    public virtual Ranorex.Button Button3
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("Button3", "button[@text='3']", 5000, null);
        }
    }
    /// <summary>
    /// The ButtonEqual item.
    /// </summary>
    public virtual Ranorex.Button ButtonEqual
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("ButtonEqual", "button[@text='=']", 5000, null);
        }
    }
    /// <summary>
    /// The OutputText item.
    /// </summary>
    public virtual Ranorex.Text OutputText
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Text>("OutputText", "text[@controlid='403']", 5000, null);
        }
    }
    /// <summary>
    /// The ButtonClose item.
    /// </summary>
    public virtual Ranorex.Button ButtonClose
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("ButtonClose", "titlebar/button[@accessiblename='Close' or @accessiblename='Schließen']", 5000, null);
        }
    }
    /// <summary>
    /// The Button7 item.
    /// </summary>
    public virtual Ranorex.Button Button7
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("Button7", "button[@text='7']", 5000, null);
        }
    }
    /// <summary>
    /// The ButtonMinus item.
    /// </summary>
    public virtual Ranorex.Button ButtonMinus
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Button>("ButtonMinus", "button[@text='-']", 5000, null);
        }
    }
    /// <summary>
    /// The Self item.
    /// </summary>
    public virtual Ranorex.Form Self
    {
        get 
        { 
            return CreateAdapterForPath<Ranorex.Form>("Self", "", 3000, null);
        }
    }

    
}

Notice in this example methods of class FormCalculatorAppFolder use XPATH regular expressions to “bind” their respective UI element which I think this is an interesting approach with a lot of flexibility. Also notice the idea here is similar to that of strongly typed dataset for data access. The tool provides a set of “adapters” which are used to drive various types of UI at varying degrees of accessibility (WinAPI, .NET, Web, MSAA).

I haven’t had enough time using the tool or framework to draw a conclusion as to the validity of the approach or quality of implementation but I have seen a few unexpected error dialogs which are things that will need to be fixed right away.

Are you familiar with or have you used this tool? If so, what do you think?

If not, what tools are you using for GUI automation?

FacebookDel.icio.usDigg It!

Getting my attention

March 23 2009 4:49AM

I’ve written 500+ blog posts and not until I developed a Starter Kit did I start getting so much direct email though the Contact me link on my blog. Of course, not all of it ends up reading like this (comment), far from it, rather let me give you an example:

i 2 m working on facebook app
i try install ur starter kit but it not appear
need u 2 send me solution urgent
i didn’t understand plz help

This kind of writing drives nuts. Perhaps if my kids were teens I might appreciate this a bit more but they’re 5, 3 and 1. While this isn’t an actual email it is representative and as you can imagine, not exactly the kind of thing I look forward to reading. I used to feel obligated to respond to nearly everyone who felt the desire to reach out to me via the Contact me link but seriously? I don’t know, and don’t really want to know, if there is a name for this “style” but I find it difficult and halting to read. How it makes sense to reach out to someone with a message like this asking for help? Yeah, this ain’t it.

Granted, in some cases it may simply be a language barrier but I’ve gotten plenty of messages written in this “style” where it’s pretty clear that’s not the case.

FacebookDel.icio.usDigg It!

Tags: