Tim Hibbard

Software Architect for EnGraph software
posts - 615, comments - 684, trackbacks - 469

My Links

News



Add to Google




Twitter












Tag Cloud

Article Categories

Archives

Post Categories

Image Galleries

EnGraph Blogs

Links

Other

Roll

Friday, October 02, 2009

My first race win

P9260043

 

Last weekend I ran the Shoreline Shuffle trail 5K.  It was my first trail race and also my first first place finish.  As a bonus, I also broke 20 minutes, which I didn’t think was possible for me on a trail run.  I’ve posted a full race report (with way too many pics) on my running blog.

posted @ Friday, October 02, 2009 2:11 PM | Feedback (1) | Filed Under [ Sports ]

Wednesday, September 23, 2009

Get notified via email of twitter mentions

TwitApps was a great tool, it would email you when somebody @mentioned you on twitter.  But, alas, they are shutting down and leaving what I think is a huge hole.

So I built my own service that does the exact same thing.

To use the service, visit MentionNotifier, and subscribe to your @mentions.  To get notified of updates, follow @MentionNotifier or @timhibbard on twitter.

Here are some of the FAQ’s:

Q:  What is this?
A:  It is a service to notify you by email when somebody has mentioned you in a tweet.


Q:  Who do the emails come from?
A:  MentionNotifier@gmail.com


Q:  How quickly will I be notified of a new tweet?
A:  Currently, it checks every minute.


Q:  How does it work?
A:  It uses the search API of twitter to check for your twitter username.


Q:  Isn't that just a glorified RSS reader?
A:  Yes.


Q:  Will it work with hashtags?
A:  Yes.  Put in the search string you want to be notified on (#KUbball) and the email address to send new tweets to.


Q:  Will I receive multiple emails if I get multiple mentions?
A:  It will group the mentions into a single email each checking cycle.


Q:  Will it work if I get a mention from somebody that protects their tweets?
A:  No, because protected tweets are not part of the public timeline.

posted @ Wednesday, September 23, 2009 11:44 AM | Feedback (1) |

Friday, July 31, 2009

Finally able to get rid of Outlook

I use Gmail for my personal email, and as an archive for my EnGraph email, but haven’t been able to use it as my main email client as it appends a “On Behalf of” to messages sent from Gmail using a non-gmail address.

Google has recently released an update to Gmail allowing you to use an SMTP server of your choosing, which removes the “On Behalf Of”.

Now I can email my clients from Gmail and they don’t know the difference!

posted @ Friday, July 31, 2009 4:49 PM | Feedback (0) |

Friday, July 17, 2009

The last couple months of our life via twitter

Pre-approval letter in hand, let the house shopping begin!10:10 AM Apr 28th

Apparently it's impossible to look at a house without the realtor begging to be your buyer's agent. Back off people!1:36 PM Apr 30th

Finally going live with software that I've been working on for 2+ years!3:59 PM Apr 30th

First install and we run into a proxy brick wall...smooth4:43 PM Apr 30th

Done with an exhausting day of house hunting. Found a lot that we liked. One that we LOVED, in shawnee of all places.6:40 PM May 2nd

We still aren't sure if we could actually leave lawrence though. So much coolness in this town.6:41 PM May 2nd

Found another very cool house in shawnee. Love this area, didn't even really knew it existed before this weekend.3:01 PM May 3rd

My fav website these days: http://land.jocogov.org/ - amazing how some people are asking 2-3% above appraised value. Crack smokers8:59 AM May 6th

We just had a realtor tell us she wouldn't accept our pre-approval letter from BofA. Umm, seriously?5:47 PM May 6th

Officially submitted an offer on the shawnee house. Many knots in stomach.1:31 PM May 9th

Ugh...their counter offer sucks and they probably aren't going to like our counter offer...preparing ourselves to walk away from this one9:12 PM May 9th

Counter counter offer submitted. This is starting to get fun. Bring it on!12:13 AM May 10th

Still in negotiations, only battling over closing and possession dates now. Everything else is ironed out.4:32 PM May 10th

Our counter offer was rejected over...get this...$172 of rent we asked for because they wanted to live in the home for 4 days past closing7:55 AM May 12th

@ericjgruber That's how we feel. If this was such a big deal, what else would they have been stupid about during the rest of the process8:09 AM May 12th

Couldn't have said it better myself - @chibb's take on our offer being rejected - http://bit.ly/6m1Wt8:12 AM May 12th

http://twitpic.com/51v8d - The camry is rocking the gowagon.com sticker. Thanks guys. Unrelated: Sorry @chibb :)2:49 PM May 12th

Ben and @chibb landed safely in Chicago and Ben was a champ during the flight!10:09 AM May 14th

I don't know if "trained" is the word I'm looking for, but my wife is out of town and I still put the toilet seat down10:12 PM May 14th

Ugh...I've been up all night with the Buffalo Wild Wings Flu. No trail run for me this morning.6:58 AM May 16th

I slept 13 hours and feel a lot better. Still a little light headed and queasy and down about 8 lbs from avg weight. Never eating BWW again.7:27 AM May 17th

Excited that @chibb and Ben come home today. Trying to get the house cleaned up before I go pick them up from the airport8:08 AM May 17th

Choking down oatmeal with no milk. Apparently I have the bug where you feel fine on Sunday, but kicks you in the junk on monday.2:57 PM May 18th

Great bday dinner with @chibb, Ben, @kylejarcher, Allie and Sophs - http://bkite.com/07W4y7:20 PM May 28th

Ben is growing up. Got rid of the infant car seat today and installed the @Britax1:46 PM May 30th

Just placed an offer on a great place in Lenexa8:21 PM May 30th

Our offer was accepted!!10:42 AM May 31st

My favorite part of our new house - Pic: http://bkite.com/084g211:41 AM Jun 1st

Buying a warranty actually paid off for me. Got a new TomTom 930 today cause 910 that I bought 3 years ago has been crapping out.2:31 PM Jun 6th

We hit a few snags today during the inspection and getting insurance. Hopefully all will be resolved quickly.8:37 PM Jun 8th

Heading to a WPF conference in Chicago via Pella, IA and Madison. Ben's first really big road trip. #fb7:12 AM Jun 11th

Round 2 of negotiations (post-inspection) are done!8:14 AM Jun 11th

Getting ready to check in for my classes. Gonna be a great day of WPF learning. - http://bkite.com/08qvX7:58 AM Jun 12th

Awesome trail run tonight with the crew from TrailHawks - they were gentle popping my trail cherry :) - http://bit.ly/6ifZo10:25 PM Jun 17th

Heading to KC with @chibb to P&L to spend a night boozin' celebrating my 30th, father's day, buying a house and getting a babysitter :)2:10 PM Jun 19th

Video of Ben crawling around and standing himself up for the first time - http://bit.ly/t9eiU9:59 PM Jun 21st

@fxdgear we have too much crap!9:40 PM Jun 24th

Closing on Lenexa house in 12 hours! #fb11:19 PM Jun 25th

Homeowners!11:09 AM Jun 26th

Thanks everybody. @chibb and I are thrilled. And also a bit exposed, didn't realize that there wasn't any blinds :)12:23 PM Jun 26th

Everything is off the truck and into the house. Many thanks to my dad for helping and Chels mom for watching Ben #fb10:43 PM Jun 28th

First ever #bike commute. 2.91 miles in 11 minutes and 2 seconds. Pretty easy ride. A few hills, but nothing major.2:01 PM Jun 29th

@mintchaos The place is an absolute disaster of boxes. I couldn't find any clothes so I came work in gym clothes :)3:40 PM Jun 29th

Backed up pipes! Poop in the basement! Yay for home ownership!! - http://bkite.com/097G01:18 PM Jul 1st

We are moved in enough that we can park one car in the garage! - http://bkite.com/09c4i12:08 PM Jul 3rd

Enjoying a beautiful night with @chibb on our new deck. -http://bkite.com/09fMg9:16 PM Jul 4th

I ran a 5:46 mile this morning. My fastest ever since high school -http://bit.ly/16tKNT9:02 AM Jul 10th

I promise to be a better blogger :)

posted @ Friday, July 17, 2009 10:51 AM | Feedback (1) |

Monday, March 23, 2009

Let me google that for you

This is a great tool for those circumstances where ordinary sarcasm isn’t quite enough to get the point across.

http://lmgtfy.com

In action: http://tinyurl.com/d2yyxl

posted @ Monday, March 23, 2009 11:01 PM | Feedback (0) |

Friday, February 27, 2009

8GB RAM in laptop…mmmm

Since my Dell D610 is three years old, I decided it was time for a new lappy.  I finally decided on a E6400 from Dell.

E6400

Finally a machine that can actually run Vista.  Here is my score:

system

score2

So far I love it.  I can have VS 2008 plus a couple virtual machines open and it doesn’t even blink.

 

Technorati Tags: ,

posted @ Friday, February 27, 2009 3:00 PM | Feedback (11) |

Friday, February 20, 2009

Stackoverflow

 

stackoverflow-logo-250

I asked my first question on stackoverflow today.  I want to make sure I’m unsubscribing from PropertyChanged events properly.  Please head over and put in your two cents.

 

posted @ Friday, February 20, 2009 2:47 PM | Feedback (1) |

Monday, January 05, 2009

Simple class to parse Twitter with LINQ

In ParaPlan 4.0, we use twitter to maintain a change log.  I wanted to display this information to our users, so I wrote a little class that calls the RSS feed and uses LINQ to parse the data.  All I need is the message and the date, so that is all it pulls out.

Here is the class:

public class Twitter
{
    public string Message { get; set; }
    public DateTime PubDate { get; set; }
 
    public static List<Twitter> Parse(string User)
    {
        var rv = new List<Twitter>();
        var url = "http://twitter.com/statuses/user_timeline/" + User + ".rss";
 
        var element = XElement.Load(url);
        foreach (var node in element.Element("channel").Elements("item"))
        {
            var twit = new Twitter();
            var message = node.Element("description").Value;
            //remove username information
            twit.Message = message.Replace(User + ": ", string.Empty);
            twit.PubDate = DateTime.Parse(node.Element("pubDate").Value);
            rv.Add(twit);
        }
 
        return rv;
 
    }
}

Our calling code looks like this:

var changes = new List<string>();
 
var fromTwitter = Twitter.Parse("ParaPlan");
fromTwitter.ForEach(t =>
    changes.Add(t.PubDate.ToString("MM/dd/yy") + " - " + t.Message));
 
var list = new ListBox();
 
list.ItemsSource = changes;

 

Technorati Tags: ,,,,

posted @ Monday, January 05, 2009 2:53 PM | Feedback (3) |

Friday, January 02, 2009

Benjamin Allan Hibbard

On 12-20-2008, my wife Chelsea, gave birth to our beautiful baby boy Benjamin.  It’s been a crazy exciting and busy couple of weeks so far.  I’ve tried to respond to all the many people that have congratulated us on twitter and facebook, but if I forgot, thank you so much.  All of your kind words and well wishes have been very appreciated!!

Many more pictures here.

Technorati Tags:

posted @ Friday, January 02, 2009 10:26 AM | Feedback (3) |

Tuesday, December 09, 2008

WPF – Hide a listbox when it doesn’t have any items

This code example will show how to hide a listbox from the user when it doesn’t have any items. 

It involves binding the Visibility of the listbox to the Items.Count of the listbox.  We run the Items.Count through a converter that will return a Visibility.Visible object if the Item.Count is not zero.

Here is the converter class:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Windows;
 
namespace HideAListBox
{
    public class ZeroCollapsedNonZeroVisible : IValueConverter
    {
 
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            var rv = Visibility.Visible;
            var val = 0;
            int.TryParse(value.ToString(), out val);
            if (val == 0)
            {
                rv = Visibility.Collapsed;
            }
            return rv;
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }
 
    }
}

Here is the window code:

<Window x:Class="HideAListBox.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:converter="clr-namespace:HideAListBox"
        Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <converter:ZeroCollapsedNonZeroVisible x:Key="hideListBox"/>
    </Window.Resources>
    <DockPanel LastChildFill="True">
        <Button Content="Add Item" Click="addItemClick" DockPanel.Dock="Top"/>
        <Button Content="Clear Items" Click="clearItemsClick" DockPanel.Dock="Top"/>
        <ListBox Margin="3" BorderBrush="Blue" Name="myListBox" 
                 Visibility="{Binding ElementName=myListBox, 
                              Path=Items.Count, 
                              Converter={StaticResource hideListBox}}"/>
    </DockPanel>
</Window>

The entire project can be downloaded here.

Technorati Tags: ,,

posted @ Tuesday, December 09, 2008 3:48 PM | Feedback (2) |

Tuesday, November 25, 2008

Visual Studio Team System Unit Testing Keyboard Shortcuts

I try to use keyboard shortcuts as much as possible.  Here are some that are handy when unit testing with Visual Studio:

Ctrl + R, A – Run all tests
Ctrl + R, T – Run tests in context (based on if cursor is in function, class, or namespace)
Ctrl + R, F – Runs all tests that are checked in Test Results – very handy because that window is impossible to navigate without a mouse

Ctrl + R, Ctrl + A – Run all tests in debug mode
Ctrl + R, Ctrl + T – Run all tests in context in debug mode
Ctrl + R, Ctrl + F – Run all checked tests in debug mode

 

posted @ Tuesday, November 25, 2008 11:24 AM | Feedback (3) |

Friday, November 21, 2008

Google Sync for Blackberry now syncs contacts

The newest version of Google Sync adds a great new feature of syncing contacts.  Now your Gmail contacts will stay up to date with your Blackberry contacts and vice versa.

Very nice!

Download page here.

Technorati Tags: ,

posted @ Friday, November 21, 2008 9:52 AM | Feedback (2) |

Wednesday, November 19, 2008

TFS - Publish Web Service with TeamBuild

TeamBuild is such a powerful tool.  We use it to run our unit tests and publish our apps using ClickOnce.  Recently we started using it to publish a web service.  This code depends on MSBuildTasks from Tigris.

<PropertyGroup>
  <DeploymentFolder>**SHARED FOLDER ON WEB SERVER**</DeploymentFolder>
  <DeployServerName>**WEB SERVER NAME**</DeployServerName>
  <ApplicationPoolName>ReportingWS</ApplicationPoolName>
  <VirtualDirectory>ReportingWS</VirtualDirectory>
  <WebBinariesLocation>$(BuildDirectoryPath)\Binaries\Release\_PublishedWebSites\ReportingWS</WebBinariesLocation>
</PropertyGroup>
 
<Target Name="AfterCompile">
  <RemoveDir Directories="$(DeploymentFolder)" ContinueOnError="true" />
 
  <Exec Command="xcopy /y /e /i $(WebBinariesLocation) $(DeploymentFolder)"/>
 
  <WebDirectoryDelete VirtualDirectoryName="$(VirtualDirectory)"
                      ContinueOnError="true"
                      ServerName="$(DeployServerName)"/>
  <WebDirectoryCreate VirtualDirectoryName="$(VirtualDirectory)"
                      VirtualDirectoryPhysicalPath="$(DeploymentFolder)"
                      ServerName="$(DeployServerName)"/>
</Target>

Essentially, we just copy the executable files from the Web Service to a shared folder on our web server and map a virtual directory to that shared folder.

posted @ Wednesday, November 19, 2008 5:39 PM | Feedback (0) |

Tuesday, November 18, 2008

VS2008 code snippet for Properties that support INotifyPropertyChanged

This code snippet extends the functionality found in prop code snippet.  It will populate the backing field in the property, check for equality in the setter and call PropertyChanged.  It assumes you have a base class that handles the implementation of INotifyPropertyChanged.

When the snippet is called, it will generate code that looks like this:

private int myVar;
 
public int MyProperty
{
    get { return myVar; }
 
    set
    {
        if (!myVar.Equals(value))
        {
            myVar = value;
            base.OnPropertyChanged("MyProperty");
        }
    }
}

To use this snippet, create a new text file at:
C:\users\<your user name>\Documents\Visual Studio 2008\Code Snippets\Visual C#\My Code Snippets

Call it “propINP.snippet”

Populate the contents of the file with this:

<?xml version="1.0" encoding="utf-8"?>
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <CodeSnippet Format="1.0.0">
    <Header>
      <SnippetTypes>
        <SnippetType>Expansion</SnippetType>
      </SnippetTypes>
      <Title>propINP</Title>
      <Author>Microsoft Corporation</Author>
      <Description>Code snippet for property and backing field and INotifyPropertyChanged</Description>
      <HelpUrl>
      </HelpUrl>
      <Shortcut>propINP</Shortcut>
    </Header>
    <Snippet>
      <Declarations>
        <Literal Editable="true">
          <ID>type</ID>
          <ToolTip>Property type</ToolTip>
          <Default>int</Default>
          <Function>
          </Function>
        </Literal>
        <Literal Editable="true">
          <ID>property</ID>
          <ToolTip>Property name</ToolTip>
          <Default>MyProperty</Default>
          <Function>
          </Function>
        </Literal>
        <Literal Editable="true">
          <ID>field</ID>
          <ToolTip>The variable backing this property</ToolTip>
          <Default>myVar</Default>
          <Function>
          </Function>
        </Literal>
      </Declarations>
      <Code Language="csharp"><![CDATA[private $type$ $field$;
 
public $type$ $property$
{
get { return $field$;}
 
set 
{ 
if(!$field$.Equals(value))
{
$field$ = value;
base.OnPropertyChanged("$property$");
}    
}
}
$end$]]></Code>
    </Snippet>
  </CodeSnippet>
</CodeSnippets>

posted @ Tuesday, November 18, 2008 2:19 PM | Feedback (1) |

Monday, November 17, 2008

Something in the water

On another personal note, Chels and I are expecting our first child (a strapping young man) on 12-26.  My good buddy Matt, who stood at our wedding, and his wife are also expecting a few days before us.  I wonder if our kids will ever figure out they were championship babies.

DSC03252

posted @ Monday, November 17, 2008 7:13 AM | Feedback (0) |

19:29

For a while now, one of my goals has been to run a 5K (3.1 miles) in under 20 minutes.  This morning I finally broke that number. 

Technorati Tags: ,,

posted @ Monday, November 17, 2008 6:54 AM | Feedback (2) |

Friday, November 14, 2008

What web search market?

According to my Blogflux search engine results for the last month, Google has not just cornered the market, they have virtually snuffed out the competition.

Engine Hits Percentage
Google 17596 98
Yahoo 202 1
Ask Jeeves 36 0
AOL 35 0
MSN 18 0
Search.com 6 0

 

Technorati Tags: ,,

posted @ Friday, November 14, 2008 8:48 AM | Feedback (1) |

Installing Windows Live Writer on Server 2008

I prefer to use web-based solutions when possible, but the other day the publish feature of google docs wasn’t working right, so I needed to install Windows Live Writer.  I quickly found out that WLW doesn’t play nicely with Windows Server 2008.

Since WLW is written in .NET, I just installed it on an XP virtual machine and copied the Program Files folder over to my Server 2008 machine.  Simple.

posted @ Friday, November 14, 2008 5:09 AM | Feedback (0) |

Wednesday, November 12, 2008

Kansas vs Emporia State

I went to the KU game last night with KyleWe won very easily.  On an odd note, the singer of the National Anthem was the daughter of the Emporia State coach, and was wearing a KU shirt.

At the KU bball game with @kylejarcher

IMG00096.jpg

posted @ Wednesday, November 12, 2008 2:59 PM | Feedback (2) |

Tuesday, November 11, 2008

WPF - Using SystemColors to add color to ListBox

Using colors is a simple way make your application less boring. You can change the color of the selected and unselected item in a ListBox by using code like this:

<Style TargetType="ListBoxItem">
    <Style.Resources>
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="LightGreen"/>
        <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="LightBlue"/>
    </Style.Resources>
</Style>


This style can be put in the resources of the ListBox to just affect that ListBox, or it can be put in resources of the Window and it will apply these styles to all ListBoxes in the window. You can also use the Application.Resources of App.xaml and all ListBoxes in your application will have the same look and feel.

Technorati Tags: ,,

posted @ Tuesday, November 11, 2008 4:41 PM | Feedback (0) |

Powered by: