<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.chrisbenard.net/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Chris Benard</title>
	
	<link>http://chrisbenard.net</link>
	<description>Don't tase me, bro!</description>
	<lastBuildDate>Wed, 04 Aug 2010 15:26:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.chrisbenard.net/ChrisBenard" /><feedburner:info uri="chrisbenard" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://superfeedr.com/hubbub" /><item>
		<title>Hosting Windows Workflow Foundation in a Console Application without Ugly Code</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/dLyjfI-YChE/</link>
		<comments>http://chrisbenard.net/2010/04/10/hosting-windows-workflow-foundation-in-a-console-application-without-ugly-code/#comments</comments>
		<pubDate>Sat, 10 Apr 2010 17:45:43 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[wf]]></category>
		<category><![CDATA[workflow foundation]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=350</guid>
		<description><![CDATA[I’ve been using Windows Workflow Foundation for a small personal project to learn more about it and see what it can do. It’s pretty powerful and I’m looking forward to delving more into it. For my purposes though, I’m hosting the workflow in a console program. If you look around the internet, you’ll see lots [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been using <a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx">Windows Workflow Foundation</a> for a small personal project to learn more about it and see what it can do. It’s pretty powerful and I’m looking forward to delving more into it. For my purposes though, I’m hosting the workflow in a console program.</p>
<p>If you look around the internet, you’ll see lots of examples of hosting a sequential workflow in a synchronous manner, even though the <span style="font-family: andale mono, monospace">WorkflowRuntime</span> only support asynchronous operations. That code usually looks like this (example adapted from <a href="http://www.wf-training-guide.com/workflow-runtime-engine.html">wf-training-guide.com</a> to add support for input/output arguments):</p>
<pre style="font-size: 1.1em" class="brush:csharp">static void Main(string[] args)
{
  Dictionary&lt;string, object&gt; inputArguments = new Dictionary&lt;string, object&gt;();
  inputArguments.Add(&quot;Argument1&quot;, args[0]);
  Dictionary&lt;string, object&gt; outputArguments;

  // Create the WF runtime.
  using(WorkflowRuntime workflowRuntime = new WorkflowRuntime())
  {
    // Hook into WorkflowCompleted / WorkflowTerminated events.
    AutoResetEvent waitHandle = new AutoResetEvent(false);
    workflowRuntime.WorkflowCompleted
      += delegate(object sender, WorkflowCompletedEventArgs e)
        {
          outputArguments = e.OutputParameters;
          waitHandle.Set();
        };

    workflowRuntime.WorkflowTerminated
      += delegate(object sender, WorkflowTerminatedEventArgs e)
        {
          Console.WriteLine(e.Exception.Message);
          waitHandle.Set();
        };

    // Create an instance of the WF to execute and call Start().
    WorkflowInstance instance =
      workflowRuntime.CreateWorkflow(typeof(WorkflowClass));
    instance.Start();

    waitHandle.WaitOne();
  }
}</pre>
<p>Unfortunately, that’s a ton of code to do only a few things:</p>
<ol>
<li>Take input arguments </li>
<li>Instantiate a <span style="font-family: andale mono, monospace">WorkflowRuntime</span> </li>
<li>Create a workflow instance </li>
<li>Run the workflow </li>
<li>Handle any exceptions (poorly) </li>
<li>Return output parameters from the workflow </li>
<li>Do all of this in a synchronous manner. </li>
</ol>
<p>What if we could just call a method similar to this:</p>
<pre style="font-size: 1.1em" class="brush:csharp">var outputArguments = RunWorkflow&lt;WorkflowClass&gt;(arguments, completedEvent, terminatedEvent);</pre>
<p>Well, now you can! I’ve written this wrapper class to allow exactly that:</p>
<pre style="font-size: 1.1em" class="brush:csharp">public class WorkflowManager
{
  public static Dictionary&lt;string, object&gt; RunWorkflow&lt;T&gt;(
    Dictionary&lt;string, object&gt; arguments,
    EventHandler&lt;WorkflowCompletedEventArgs&gt; completedEvent,
    EventHandler&lt;WorkflowTerminatedEventArgs&gt; terminatedEvent)
    where T : SequentialWorkflowActivity
  {
    using (WorkflowRuntime runtime = new WorkflowRuntime())
    {
      Dictionary&lt;string, object&gt; returnValue = null;
      Exception ex = null;

      using (AutoResetEvent waitHandle = new AutoResetEvent(false))
      {
        WorkflowInstance instance = runtime.CreateWorkflow(typeof(T), arguments);
        runtime.WorkflowCompleted += (o, e) =&gt;
        {
          EventHandler&lt;WorkflowCompletedEventArgs&gt; temp = completedEvent;
          if (temp != null)
          {
            temp(o, e);
          }

          returnValue = e.OutputParameters;

          waitHandle.Set();
        };

        runtime.WorkflowTerminated += (o, e) =&gt;
        {
          EventHandler&lt;WorkflowTerminatedEventArgs> temp = terminatedEvent;
          if (temp != null)
          {
            temp(o, e);
          }

          ex = e.Exception;

          waitHandle.Set();
        };

        instance.Start();
        waitHandle.WaitOne();
      }

      if (runtime != null)
      {
        runtime.StopRuntime();
      }

      if (ex != null)
      {
        throw ex;
      }

      return returnValue;
    }
  }
}</pre>
<p>Now you really can run the above code to execute your workflow in a synchronous manner without all kinds of messy code. Beware creating multiple <span style="font-family: andale mono, monospace">WorkflowRuntime</span> instances though. If you are managing multiple simultaneous workflows, you&#8217;ll need to pass in instance IDs and keep track in the runtime of which one is completing or throwing errors. It&#8217;s generally a bad idea to have multiple <span style="font-family: andale mono, monospace">WorkflowRuntime</span>s.</p>
<p>Enjoy now being able to write:</p>
<pre style="font-size: 1.1em" class="brush:csharp">var outputArguments = RunWorkflow&lt;WorkflowClass&gt;(arguments, completedEvent, terminatedEvent);</pre>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=dLyjfI-YChE:Gfhh_1CTmOs:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=dLyjfI-YChE:Gfhh_1CTmOs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=dLyjfI-YChE:Gfhh_1CTmOs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=dLyjfI-YChE:Gfhh_1CTmOs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=dLyjfI-YChE:Gfhh_1CTmOs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/dLyjfI-YChE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/04/10/hosting-windows-workflow-foundation-in-a-console-application-without-ugly-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/04/10/hosting-windows-workflow-foundation-in-a-console-application-without-ugly-code/</feedburner:origLink></item>
		<item>
		<title>Chase Visa Fraud</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/1c9bn9gjZRY/</link>
		<comments>http://chrisbenard.net/2010/03/03/chase-visa-fraud/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 21:33:50 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[chase]]></category>
		<category><![CDATA[credit card]]></category>
		<category><![CDATA[customer service]]></category>
		<category><![CDATA[fraud]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[visa]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=347</guid>
		<description><![CDATA[I just got a call from the Chase fraud computer voice. He told me that somebody had just charged my card about $250 to a clothing website called ASOS.com. He asked if it was me and I kept pressing zero so I could talk to a person. I knew if I said it wasn’t me [...]]]></description>
			<content:encoded><![CDATA[<p>I just got a call from the Chase fraud computer voice. He told me that somebody had just charged my card about $250 to a clothing website called <a href="http://www.asos.com" rel="nofollow">ASOS.com</a>. He asked if it was me and I kept pressing zero so I could talk to a person. I knew if I said it wasn’t me that they would just close my card and send me a new one in about a week more or less.</p>
<p>I finally got a person (in India of course), and she told me that not only had they charged that to my card, but also $1.00 to Apple’s iTunes store on February 25th. I didn’t even see that show up in my online activity today on Chase’s web site, so I assume they deactivated the charge when they figured out it was fraud. I assume the Apple charge was to test the card for validity.</p>
<p>I told the lady that a week was unacceptable, because I put everything on that <a href="http://www.chasefreedomnow.com/">Chase Freedom</a> card. I told her I needed it tomorrow. She obliged without any complaint; she said it will be here tomorrow via UPS and I will have to sign for it. I told her that’s no problem since I work from home.</p>
<p>Kudos to Chase for their aggressive, accurate anti-fraud algorithms and their customer service relating to shipping out a card overnight upon request.</p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=1c9bn9gjZRY:vc_s9m7FsCw:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=1c9bn9gjZRY:vc_s9m7FsCw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=1c9bn9gjZRY:vc_s9m7FsCw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=1c9bn9gjZRY:vc_s9m7FsCw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=1c9bn9gjZRY:vc_s9m7FsCw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/1c9bn9gjZRY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/03/03/chase-visa-fraud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/03/03/chase-visa-fraud/</feedburner:origLink></item>
		<item>
		<title>Requirements Completed for Master of Business Administration</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/5v_v_lklrOw/</link>
		<comments>http://chrisbenard.net/2010/03/03/requirements-completed-for-master-of-business-administration/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 15:07:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[School]]></category>
		<category><![CDATA[graduation]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[master]]></category>
		<category><![CDATA[masters]]></category>
		<category><![CDATA[mba]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=341</guid>
		<description><![CDATA[Those words in the title now appear at the end of my MBA transcript from Louisiana Tech University. I will graduate Saturday, March 6th, 2010 with a Master of Business Administration and a concentration in Information Assurance. There is nothing else left for me to do; school is over! If I hadn’t gotten the two [...]]]></description>
			<content:encoded><![CDATA[<p>Those words in the title now appear at the end of my <a href="http://business.latech.edu/graduate/mba.htm">MBA</a> transcript from <a href="http://www.latech.edu">Louisiana Tech University</a>. I will graduate Saturday, March 6th, 2010 with a Master of Business Administration and a concentration in <a href="http://www.business.latech.edu/graduate/iac.htm">Information Assurance</a>. There is nothing else left for me to do; school is over! If I hadn’t gotten the two B’s, I’d have a 4.000 average. Unfortunately, the school doesn’t do any cum laude stuff for graduate degrees.</p>
<pre style="font-size: 1.5em"> -----------------------Winter 2010-------------------------
 MGMT595 084  ADMINISTRATIVE POLICY        A    3.00  12.00
 UNIV610 001  GRADUATION - BUS GRAD             0.00
 -----------------------------------------------------------

                     AHRS    EHRS    QHRS    QPTS     GPA
      Current         3.00    3.00    3.00   12.00   4.000
      Cumulative     36.00   36.00   36.00  138.00   3.833

      <strong>Requirements completed for Master of Business
      Administration</strong>
 --End of Louisiana Tech University Graduate Transcript------</pre>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=5v_v_lklrOw:xTklg__d0KI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=5v_v_lklrOw:xTklg__d0KI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=5v_v_lklrOw:xTklg__d0KI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=5v_v_lklrOw:xTklg__d0KI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=5v_v_lklrOw:xTklg__d0KI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/5v_v_lklrOw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/03/03/requirements-completed-for-master-of-business-administration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/03/03/requirements-completed-for-master-of-business-administration/</feedburner:origLink></item>
		<item>
		<title>redgate Releases SQL Search for Free</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/wwts4ra4yao/</link>
		<comments>http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 18:42:02 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[query]]></category>
		<category><![CDATA[redgate]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[sqlserver]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=332</guid>
		<description><![CDATA[redgate has released their SQL Search 1.0 for free, and my coworker Stephen sent our team an email letting us know about it. It is a fantastic product that integrates with SSMS and now it’s free. It keeps an index of all the text in every sproc, all the columns in every table, etc, and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.red-gate.com">redgate</a> has released their <a href="http://www.red-gate.com/products/sql_search/index.htm">SQL Search</a> 1.0 for free, and my coworker <a href="http://www.sculver.com">Stephen</a> sent our team an email letting us know about it. It is a fantastic product that integrates with SSMS and now it’s free. It keeps an index of all the text in every <a href="http://en.wikipedia.org/wiki/Stored_procedure"><abbr title="Stored Procedure">sproc</abbr></a>, all the columns in every table, etc, and you can search them all instantly, limiting by type and many other options.</p>
<p>These are the features they list on <a href="http://www.red-gate.com/products/sql_search/index.htm">their page</a>:</p>
<ul>
<li>Find fragments of SQL text within stored procedures, functions, views and more </li>
<li>Quickly navigate to objects wherever they happen to be on your servers </li>
<li>Find all references to an object </li>
<li>Integrates with SSMS </li>
</ul>
<p>And their “Why use SQL Search?”:</p>
<ul>
<li><strong>Impact Analysis        <br /></strong>You want to rename one of your table columns but aren&#8217;t sure what stored procedures reference it. Using SQL Search, you can search for the column name and find all the stored procedures where it is used. </li>
<li><strong>Work faster        <br /></strong>Finding anything in the SSMS object tree requires a lot of clicking. Using SQL Search, you can press the shortcut combo, start typing the name, and jump right there. </li>
<li><strong>Make your life easier        <br /></strong>You need to find stored procedures you’ve not yet finished writing. Using SQL Search, you can search for stored procedures containing the text &#8216;TODO&#8217;. </li>
<li><strong>Increase efficiency, reduce errors        <br /></strong>You are a DBA, and developers keep using &#8216;SELECT *&#8217; in their views and stored procedures. You want to find all these and replace them with a correct list of columns to improve performance and prevent future bugs. Using SQL Search, you can look for &#8216;SELECT *&#8217; in the text of stored procedures and views. </li>
</ul>
<p>If you are a user of SQL Server Management Studio, I highly recommend you check out out. You sure can’t beat the price. Check out the screenshots below as well.</p>

<a href='http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/sql-search-1/' title='SQL Search 1'><img width="150" height="150" src="http://chrisbenard.net/wp-content/uploads/2010/02/SQL-Search-1-150x150.png" class="attachment-thumbnail" alt="SQL Search 1" title="SQL Search 1" /></a>
<a href='http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/sql-search-2/' title='SQL Search 2'><img width="150" height="150" src="http://chrisbenard.net/wp-content/uploads/2010/02/SQL-Search-2-150x150.png" class="attachment-thumbnail" alt="SQL Search 2" title="SQL Search 2" /></a>
<a href='http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/sql-search-3/' title='SQL Search 3'><img width="150" height="150" src="http://chrisbenard.net/wp-content/uploads/2010/02/SQL-Search-3-150x150.png" class="attachment-thumbnail" alt="SQL Search 3" title="SQL Search 3" /></a>
<a href='http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/sql-search-4/' title='SQL Search 4'><img width="150" height="150" src="http://chrisbenard.net/wp-content/uploads/2010/02/SQL-Search-4-150x150.png" class="attachment-thumbnail" alt="SQL Search 4" title="SQL Search 4" /></a>

<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=wwts4ra4yao:QtakVqSjbx4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=wwts4ra4yao:QtakVqSjbx4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=wwts4ra4yao:QtakVqSjbx4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=wwts4ra4yao:QtakVqSjbx4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=wwts4ra4yao:QtakVqSjbx4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/wwts4ra4yao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/02/12/redgate-releases-sql-search-for-free/</feedburner:origLink></item>
		<item>
		<title>A Lesson in How Not to Conduct Website Security</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/UevAS59VpPE/</link>
		<comments>http://chrisbenard.net/2010/02/11/a-lesson-in-how-not-to-conduct-website-security/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 23:01:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=326</guid>
		<description><![CDATA[Louisiana Tech just sent me a “reminder” email with my full username and password in there. That information is everything necessary to logon to the school student portal and get the rest of my personal information, full school transcript, etc. Not only do I not like them emailing my password, I don’t like that they [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.latech.edu">Louisiana Tech</a> just sent me a “reminder” email with my full username and password in there. That information is everything necessary to logon to the school student portal and get the rest of my personal information, full school transcript, etc.</p>
<p>Not only do I not like them emailing my password, I don’t like that they even know my password. They should be using hashes instead. They’re <a href="http://www.codinghorror.com/blog/archives/000953.html">doing it incorrectly</a>.</p>
<p>Here is the full email (user/pass redacted):</p>
<blockquote style="font-size: 1.5em"><pre>Subject: Reminder
TO: &lt;[my.school.email]@LaTech.edu&gt;
Date: Thu, 11 Feb 10 12:35:23 CST
From: &lt;Registrar@LaTech.edu&gt;

REMINDER:

          Your BOSS PIN is: XXXXXX
          Your CWID number is: 100XXXXXX

PROTECT THESE NUMBERS!</pre>
</blockquote>
<p>I sure wish they&#8217;d protect these numbers for me instead of emailing them to me every quarter.</p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=UevAS59VpPE:JdgZch5HrBk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=UevAS59VpPE:JdgZch5HrBk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=UevAS59VpPE:JdgZch5HrBk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=UevAS59VpPE:JdgZch5HrBk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=UevAS59VpPE:JdgZch5HrBk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/UevAS59VpPE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/02/11/a-lesson-in-how-not-to-conduct-website-security/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/02/11/a-lesson-in-how-not-to-conduct-website-security/</feedburner:origLink></item>
		<item>
		<title>Followup on My Predictions for Apple’s Tablet Event</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/0sP_oWHm9iI/</link>
		<comments>http://chrisbenard.net/2010/01/27/followup-on-my-predictions-for-apples-tablet-event/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 20:03:45 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[followup]]></category>
		<category><![CDATA[ipad]]></category>
		<category><![CDATA[islate]]></category>
		<category><![CDATA[itablet]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[predictions]]></category>
		<category><![CDATA[tablet]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=299</guid>
		<description><![CDATA[Happy birthday to me! Also, Apple announced their iPad today. One thing I meant to mention in my previous predictions: I thought it would have at least a front facing camera for video conferencing with iChat and/or Skype. I’m very surprised it doesn’t have that. I predict this will be in the first hardware revision [...]]]></description>
			<content:encoded><![CDATA[<p>Happy birthday to me! Also, Apple announced their <a href="http://www.apple.com/ipad/">iPad</a> today. One thing I meant to mention in my <a href="http://chrisbenard.net/2010/01/26/my-predictions-for-apples-tablet-event-tomorrow/">previous predictions</a>: I thought it would have at least a front facing camera for video conferencing with iChat and/or Skype. I’m <strong>very</strong> surprised it doesn’t have that. I predict this will be in the first hardware revision of the device.</p>
<h3>Personal Thoughts</h3>
<p>The iPad is basically a really big iPhone, but the iPhone is great. I was already prepared to buy a <a href="http://www.nook.com">Nook</a> for $259. The question is now do I pay $140 more to get an iPad that only has WiFi and no 3G data. The iPad is so much more than the Nook, but isn’t e-ink.</p>
<p>I haven’t decided yet. I was underwhelmed by what they’re offering, but impressed by the price at which it starts: $499. I would likely sling WiFi from my jailbroken iPhone to the device, rather than pay another $30 a month for unlimited 3G data and another $130 for the device with 3G built in.</p>
<p>Make recommendations to me in the comments!</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iPad pricing data" border="0" alt="iPad pricing data" src="http://chrisbenard.net/wp-content/uploads/2010/01/pricing.jpg" width="240" height="159" /> </p>
<h3 style="margin-top: 10px">Predictions Followup</h3>
<p>All photos are courtesy of <a href="http://live.gdgt.com/2010/01/27/live-apple-come-see-our-latest-creation-tablet-event-coverage/">GDGT’s live coverage</a>.</p>
<p>These were <a href="http://chrisbenard.net/2010/01/26/my-predictions-for-apples-tablet-event-tomorrow/">my predictions</a> related to the tablet and the result. </p>
<ol>
<li>Apple will announce a tablet device of some kind.      </p>
<p>Result: They did.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Steve Jobs holding iPad" border="0" alt="Steve Jobs holding iPad" src="http://chrisbenard.net/wp-content/uploads/2010/01/mainpic.jpg" width="240" height="159" />       </li>
<li>It’s name will begin with a lower case I. I have to get at least one correct, right? I’ll guess iTablet. I don’t think they’ll do iSlate.
<p>Result: iPad. Not a good name in my opinion. It opens itself to <a href="http://twitter.com/keithelder/statuses/8288997982">many jokes</a>.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Name is iPad" border="0" alt="Name is iPad" src="http://chrisbenard.net/wp-content/uploads/2010/01/ipadname.jpg" width="240" height="159" />       </li>
<li>The device will not have an e-ink screen.
<p>Result: Correct.       </li>
<li>The device will not have an AMOLED screen.
<p>Result: Correct.       </li>
<li>It will be a conventional LCD screen with LED backlighting.
<p>Result: Correct (not sure about backlighting, but with 10 hours battery life, I would be surprised if it is not LED).       </li>
<li>It will not run full OS X. Only a subset will be allowed, such as Safari, etc. Only apps from an app store will be allowed.
<p>Result: Correct.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iTunes in iPhone style interface" border="0" alt="iTunes in iPhone style interface" src="http://chrisbenard.net/wp-content/uploads/2010/01/nofullosx.jpg" width="344" height="228" />       </li>
<li>There will be a tablet app store.
<p>Result: Correct.       </li>
<li>There will be backwards compatibility for iPhone apps running in some kind of emulation mode.
<p>Result: Correct. They can run in a pixel-perfect mode letterboxed or zoomed to full screen. All iPhone apps are compatible.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iPhone app at 1x" border="0" alt="iPhone app at 1x" src="http://chrisbenard.net/wp-content/uploads/2010/01/app1x.jpg" width="240" height="159" /> <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iPhone app at 2x" border="0" alt="iPhone app at 2x" src="http://chrisbenard.net/wp-content/uploads/2010/01/app2x.jpg" width="240" height="159" />       </li>
<li>There will be a innovative text input method. I can’t speculate as to what it will be, but knowing Apple, it will be good.
<p>Result: Wrong. Straight up QWERTY, just like the iPhone.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Standard QWERTY input" border="0" alt="Standard QWERTY input" src="http://chrisbenard.net/wp-content/uploads/2010/01/keyboard.jpg" width="240" height="159" />       </li>
<li>Its battery life will be expressed in hours, not days or weeks, unlike the <a href="http://www.amazon.com/gp/product/B000FI73MA?ie=UTF8&amp;tag=chrisbenarddo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FI73MA">Kindle</a> or <a href="http://www.barnesandnoble.com/nook/index.asp">Nook</a>.
<p>Result: Correct. 10 hours.       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="10 hour battery life" border="0" alt="10 hour battery life" src="http://chrisbenard.net/wp-content/uploads/2010/01/10hours.jpg" width="240" height="159" />       </li>
<li>Verizon will be announced as a 3G data partner for the tablet device.
<p>Result: Wrong. AT&amp;T only. International carriers to be announced later. All devices are unlocked, and will work with any carrier compatible with micro SIMs (not Verizon or Sprint because they are CDMA [no SIM cards]).       </p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="AT&amp;T data plan information" border="0" alt="AT&amp;T data plan information" src="http://chrisbenard.net/wp-content/uploads/2010/01/att.jpg" width="240" height="159" />       </li>
<li>The tablet will sell like hotcakes at first because Apple made it, but I think this will be a fad device and perhaps regarded as Apple’s second flop (see <a href="http://en.wikipedia.org/wiki/Newton_%28platform%29">Newton</a>). I am putting this down “on paper” because I think it will be funny if I’m completely wrong and I can read my own words in a year or so.
<p>Result: Remains to be seen. I am underwhelmed, but my personal thoughts are at the top. </li>
</ol>
<p>Here are the results of my other predictions for the event:</p>
<ol>
<li>No new iPhone will be announced.      </p>
<p>Result: Correct.       </li>
<li>No AT&amp;T exclusivity related announcements will be made (this will be saved until <a href="http://www.appleinsider.com/articles/09/12/21/wwdc_2010_iphone_announcement_rumored_for_june_28_july_2.html">WWDC in June</a>).       <br />Result: Correct.       </li>
<li>Incremental changes will be made for the iPhone OS, perhaps allowing some sort of rudimentary multitasking, perhaps in a 3.5 or 4.0 revision of the OS.
<p>Result: Wrong. No iPhone related announcements. </li>
</ol>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=0sP_oWHm9iI:TgW7cxZhKos:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=0sP_oWHm9iI:TgW7cxZhKos:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=0sP_oWHm9iI:TgW7cxZhKos:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=0sP_oWHm9iI:TgW7cxZhKos:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=0sP_oWHm9iI:TgW7cxZhKos:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/0sP_oWHm9iI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/01/27/followup-on-my-predictions-for-apples-tablet-event/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/01/27/followup-on-my-predictions-for-apples-tablet-event/</feedburner:origLink></item>
		<item>
		<title>My Predictions for Apple’s Tablet Event Tomorrow</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/N4r4e4SKcyM/</link>
		<comments>http://chrisbenard.net/2010/01/26/my-predictions-for-apples-tablet-event-tomorrow/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 17:47:57 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[at&t]]></category>
		<category><![CDATA[e-ink]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[islate]]></category>
		<category><![CDATA[itablet]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[nook]]></category>
		<category><![CDATA[slate]]></category>
		<category><![CDATA[tablet]]></category>
		<category><![CDATA[wwdc]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=283</guid>
		<description><![CDATA[Update: I have created a new blog post (Jan 27th, 2010) for my response to what happened and the outcome of each of my predictions. Unless you’ve been living under a rock, you are no doubt aware that Apple plans to reveal their “latest creation” tomorrow, January 27th, 2009. It is most likely their long [...]]]></description>
			<content:encoded><![CDATA[<div class="new"><strong>Update:</strong> I have created a <a href="http://chrisbenard.net/2010/01/27/followup-on-my-predictions-for-apples-tablet-event/">new blog post</a> (Jan 27th, 2010) for my response to what happened and the outcome of each of my predictions.</div>
<p>Unless you’ve been living under a rock, you are no doubt aware that Apple plans to reveal their “<a href="http://www.engadget.com/2010/01/25/our-live-coverage-of-the-apple-tablet-latest-creation-event-starts-wednesday/">latest creation</a>” tomorrow, January 27th, 2009. It is most likely their <a href="http://www.engadget.com/2010/01/26/the-apple-tablet-a-complete-history-supposedly/">long awaited</a> iTablet/iSlate/iWhatever. I’ll be following Engadget’s <a href="http://www.engadget.com/2010/01/27/live-from-the-apple-tablet-latest-creation-event/">live blog of the event</a> tomorrow.</p>
<p>It is also my birthday tomorrow, but I don’t care as much about that. I just want to know what Apple’s been doing all this time and what they’re going to announce. I’m pretty sure that makes me nerdy, among <a href="http://chrisbenard.net/about">other</a> <a href="http://chrisbenard.net/resume">qualifications</a>.</p>
<p>These are my tablet related predictions, which I will update with the results:<img style="border-right-width: 0px; margin: 0px 0px 5px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Concept mockup, courtesy of Engadget" border="0" alt="Concept mockup, courtesy of Engadget" align="right" src="http://chrisbenard.net/wp-content/uploads/2010/01/image.png" width="302" height="154" /> </p>
<ol>
<li>Apple will announce a tablet device of some kind. </li>
<li>It’s name will begin with a lower case I. I have to get at least one correct, right? I’ll guess iTablet. I don’t think they’ll do iSlate. </li>
<li>The device will not have an e-ink screen. </li>
<li>The device will not have an AMOLED screen. </li>
<li>It will be a conventional LCD screen with LED backlighting. </li>
<li>It will not run full OS X. Only a subset will be allowed, such as Safari, etc. Only apps from an app store will be allowed. </li>
<li>There will be a tablet app store. </li>
<li>There will be backwards compatibility for iPhone apps running in some kind of emulation mode. </li>
<li>There will be a innovative text input method. I can’t speculate as to what it will be, but knowing Apple, it will be good. </li>
<li>Its battery life will be expressed in hours, not days or weeks, unlike the <a href="http://www.amazon.com/gp/product/B000FI73MA?ie=UTF8&amp;tag=chrisbenarddo-20&amp;linkCode=as2&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B000FI73MA">Kindle</a> or <a href="http://www.barnesandnoble.com/nook/index.asp">Nook</a>. </li>
<li>Verizon will be announced as a 3G data partner for the tablet device. </li>
<li>The tablet will sell like hotcakes at first because Apple made it, but I think this will be a fad device and perhaps regarded as Apple’s second flop (see <a href="http://en.wikipedia.org/wiki/Newton_%28platform%29">Newton</a>). I am putting this down “on paper” because I think it will be funny if I’m completely wrong and I can read my own words in a year or so. </li>
</ol>
<p>My other predictions for the event are as follows, which I will also update with results:</p>
<ol>
<li>No new iPhone will be announced. </li>
<li>No AT&amp;T exclusivity related announcements will be made (this will be saved until <a href="http://www.appleinsider.com/articles/09/12/21/wwdc_2010_iphone_announcement_rumored_for_june_28_july_2.html">WWDC in June</a>). </li>
<li>Incremental changes will be made for the iPhone OS, perhaps allowing some sort of rudimentary multitasking, perhaps in a 3.5 or 4.0 revision of the OS. </li>
</ol>
<p>Additionally, I am aware that I haven’t blogged in 5 months. I’ll be following up on this post with some sort of recap explaining what I’ve been doing.</p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=N4r4e4SKcyM:SyDKAOd_B_A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=N4r4e4SKcyM:SyDKAOd_B_A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=N4r4e4SKcyM:SyDKAOd_B_A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=N4r4e4SKcyM:SyDKAOd_B_A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=N4r4e4SKcyM:SyDKAOd_B_A:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/N4r4e4SKcyM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2010/01/26/my-predictions-for-apples-tablet-event-tomorrow/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2010/01/26/my-predictions-for-apples-tablet-event-tomorrow/</feedburner:origLink></item>
		<item>
		<title>Beyonc□, or How We Can All Learn From Other Developers’ Character Encoding Mistakes</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/qS8NXy33ceU/</link>
		<comments>http://chrisbenard.net/2009/08/21/beyonce-or-how-we-can-all-learn-from-other-developers-character-encoding-mistakes/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 18:58:08 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ascii]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[character encoding]]></category>
		<category><![CDATA[ebcdic]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[t-shirt]]></category>
		<category><![CDATA[unicode]]></category>
		<category><![CDATA[utf-16]]></category>
		<category><![CDATA[utf-8]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=271</guid>
		<description><![CDATA[I’m sure everyone who reads this blog has noticed, at some point, the result of another developer’s mistake in dealing with Unicode or other character encodings. I’ve had a few issues myself. To the left, you can see how my Napster displayed a Beyoncé song as Beyonc□. You may have seen a black diamond symbol [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-bottom: 0px; border-left: 0px; margin: 0px 15px 30px 4px; display: inline; border-top: 0px; border-right: 0px" title="Picture of Unicode Error, displaying Beyoncé as Beyonc□" border="0" alt="Picture of Unicode Error, displaying Beyoncé as Beyonc-block" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/08/beyoncblock.png" width="189" height="710" /> </p>
<p>I’m sure everyone who reads this blog has noticed, at some point, the result of another developer’s mistake in dealing with <a href="http://en.wikipedia.org/wiki/Unicode">Unicode</a> or other <a href="http://en.wikipedia.org/wiki/Character_encoding">character encodings</a>. I’ve had a few issues myself. To the left, you can see how my Napster displayed a <a href="http://en.wikipedia.org/wiki/Beyonc%C3%A9_Knowles">Beyoncé</a> song as Beyonc□. You may have seen a <a href="http://www.cybervaldez.com/how-to-remove-those-nasty-question-mark-with-a-diamond-symbols-from-appearing-in-your-website/2009/">black diamond symbol with a question mark in it</a> while browsing a web page, or perhaps other strange symbols when interacting with programs or web pages.</p>
<p>Most, if not all of these, are inconsistencies when dealing with character encoding, with most of them being Unicode. Hazarding a guess, Beyoncé’s is likely stored as Unicode (<a href="http://en.wikipedia.org/wiki/UTF-16/UCS-2">UTF-16</a>) in <a href="http://www.napster.com">Napster</a>’s database, but when output on the screen, it is converted down to <a href="http://en.wikipedia.org/wiki/UTF-8">UTF-8</a> or <a href="http://en.wikipedia.org/wiki/ASCII">ASCII</a>. Either way, it can’t be converted down, so an entity is displayed. There is even a <a href="http://blogs.msdn.com/michkap/archive/2005/09/11/463670.aspx">shirt memorializing the problem</a> in T-shirt form:</p>
<p><a title="I {entity} Unicode T-shirts!" href="http://blogs.msdn.com/michkap/archive/2005/09/11/463670.aspx"><img style="border-right-width: 0px; margin: 5px auto; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="I {entity} Unicode T-shirt" border="0" alt="I {entity} Unicode T-shirt" src="http://chrisbenard.net/wp-content/uploads/2009/08/UnicodeWindows.jpg" width="244" height="244" /></a> </p>
<p>My issues have been even more low-level than this. I deal with a lot of interaction using <a href="http://en.wikipedia.org/wiki/Electronic_Data_Interchange">EDI</a> with older computer systems running UNIX or or some IBM mainframe OS. None of these are using Unicode for their medical claims adjudication, and are either using ASCII or <a href="http://en.wikipedia.org/wiki/Extended_Binary_Coded_Decimal_Interchange_Code">EBCDIC</a>. Yes, EBCDIC; I have to program using EBCDIC in 2009.</p>
<p>I have to be very careful when I’m converting to and from Unicode, the <a href="http://www.yoda.arachsys.com/csharp/unicode.html">native format of the string class in .Net</a>, and other character encodings such as ASCII and EBCDIC, and so should you.</p>
<p>  <br style="clear: both" /></p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=qS8NXy33ceU:n8gM0LfQ6_A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=qS8NXy33ceU:n8gM0LfQ6_A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=qS8NXy33ceU:n8gM0LfQ6_A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=qS8NXy33ceU:n8gM0LfQ6_A:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=qS8NXy33ceU:n8gM0LfQ6_A:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/qS8NXy33ceU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2009/08/21/beyonce-or-how-we-can-all-learn-from-other-developers-character-encoding-mistakes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2009/08/21/beyonce-or-how-we-can-all-learn-from-other-developers-character-encoding-mistakes/</feedburner:origLink></item>
		<item>
		<title>Hacked by Chinese</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/NZjFohXMGaU/</link>
		<comments>http://chrisbenard.net/2009/07/28/hacked-by-chinese/#comments</comments>
		<pubDate>Tue, 28 Jul 2009 15:51:36 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[code red]]></category>
		<category><![CDATA[corruption]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[solution]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[team foundation server]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=264</guid>
		<description><![CDATA[On our main product, in a branch on which I’m working on a Point of Sale product, something happened in the process of checking files into source control. In our case, we’re using Team Foundation Server. My guess is that the corruption happened on my hard drive for who knows what reason, but this is [...]]]></description>
			<content:encoded><![CDATA[<p>On our main product, in a branch on which I’m working on a Point of Sale product, something happened in the process of checking files into <a href="http://en.wikipedia.org/wiki/Source_control">source control</a>. In our case, we’re using <a href="http://en.wikipedia.org/wiki/Team_Foundation_Server">Team Foundation Server</a>. My guess is that the corruption happened on my hard drive for who knows what reason, but this is the beginning of the resulting solution file that ended up in TFS: a bunch of Chinese-looking characters instead of a project name.</p>
<pre style="font-size: 1.1em" class="brush:plain; highlight: 3">Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project(&quot;{54435603-DBB4-11D2-8724-00A0C9A8B90C}&quot;) = &quot;펐!蝀ጢ&quot;, &quot;ProductNameFaxServiceSetup\ProductNameFaxServiceSetup.vdproj&quot;, &quot;{DDA7A291-A5F6-4FEA-B11E-BBE90848167D}&quot;
EndProject
Project(&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&quot;) = &quot;CompanyName.Claim.Common&quot;, &quot;CompanyName.Claim.Common\CompanyName.Claim.Common.csproj&quot;, &quot;{11EE0005-87E4-44E0-806A-0BCB382468F0}&quot;
EndProject
Project(&quot;{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&quot;) = &quot;CompanyName.Claim.Modem&quot;, &quot;CompanyName.Claim.Modem\CompanyName.Claim.Modem.csproj&quot;, &quot;{FE62F256-5A9C-4212-8EFB-CCD0AC0D59AF}&quot;
EndProject</pre>
<p>It took a while to track down, because it manifested itself as missing projects, missing dependencies. I kept adding back things one at a time and then ending up with two more dependencies left to add. Finally, I just looked at the raw solution file and saw how it was messed up. I went back to find a file in the source control history that wasn’t messed up, got that specific version by change set, and then added the specific projects that had been added since then back to the solution.</p>
<p>Thanks to source control, I was back up and running in no time.</p>
<p style="font-style: italic; font-size: 0.85em">The title is from the phrase with which the <a href="http://en.wikipedia.org/wiki/Code_Red_%28computer_worm%29">Code Red worm</a> defaced web sites it infected. We didn’t really get hacked by the Chinese.</p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=NZjFohXMGaU:VcLUEM9KtxA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=NZjFohXMGaU:VcLUEM9KtxA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=NZjFohXMGaU:VcLUEM9KtxA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=NZjFohXMGaU:VcLUEM9KtxA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=NZjFohXMGaU:VcLUEM9KtxA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/NZjFohXMGaU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2009/07/28/hacked-by-chinese/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2009/07/28/hacked-by-chinese/</feedburner:origLink></item>
		<item>
		<title>Accessing a Control Without Being Able to See It on a Windows Form</title>
		<link>http://feeds.chrisbenard.net/~r/ChrisBenard/~3/d6Grmg1lz0U/</link>
		<comments>http://chrisbenard.net/2009/07/24/accessing-a-control-without-being-able-to-see-it-on-a-windows-form/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 16:17:08 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[coworker]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows forms]]></category>

		<guid isPermaLink="false">http://chrisbenard.net/?p=258</guid>
		<description><![CDATA[A coworker of mine had a problem and came to me for help. She had a windows form with a control on it that she wanted to edit or delete, but couldn’t see the control. It was listed in the properties box in the list of controls on the form, but when she selected it, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border-right-width: 0px; margin: 0px 0px 0px 5px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Menu Key Displayed on Keyboard" border="0" alt="Menu Key Displayed on Keyboard" align="right" src="http://chrisbenard.net/wp-content/uploads/2009/07/menukey.png" width="269" height="168" />A <a title="Jenny Roe" href="http://jennyroe.com">coworker of mine</a> had a problem and came to me for help. She had a windows form with a control on it that she wanted to edit or delete, but couldn’t see the control. It was listed in the properties box in the list of controls on the form, but when she selected it, she wasn’t able to click it on the form, because it was behind another control.</p>
<p>I hypothesized a solution, which worked, but requires the use of a less than frequent key on your keyboard, the <a href="http://en.wikipedia.org/wiki/Menu_key">menu key.</a> Usually this key is two keys to the right of the space bar on windows keyboards, between Alt and Control. A picture of it is on the right.</p>
<p style="clear:both" class="note"><strong>Note: </strong>As pointed out by Lee, in the comments, you can press Shift + F10 if your keyboard doesn&#8217;t contain the Menu Key.</p>
<h3 style="clear: both">The Form With a Hidden Label Behind the Filename TextBox) <img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="Form with hidden label control" border="0" alt="Form with hidden label control" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/07/notthere.jpg" width="484" height="137" /></h3>
<h3 style="clear: both">Properties Window Listing the Hidden Control, HiddenLabel</h3>
<p><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Properties window list of controls" border="0" alt="Properties window list of controls" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/07/list.jpg" width="349" height="206" /></p>
<p>Select the control that you can’t see. It will be highlighted on the form.</p>
<h3 style="clear: both">Form with Hidden Control Highlighted</h3>
<p><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Label highlighted after selecting from properties window" border="0" alt="Label highlighted after selecting from properties window" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/07/highlighted.jpg" width="479" height="134" />The hidden control becomes highlighted. Click into the title bar of the form. Press the menu key on your keyboard to display the context menu.</p>
<h3 style="clear: both">Context Menu Being Displayed After Pressing the Menu Key</h3>
<p><a href="http://chrisbenard.net/wp-content/uploads/2009/07/bringtofront.png"><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bringtofront" border="0" alt="bringtofront" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/07/bringtofront_thumb.png" width="474" height="361" /></a>Select “Bring to Front” to display the control. It will now be visible and can be edited or removed.</p>
<h3 style="clear: both">Hidden Control Moved</h3>
<p><img style="border-right-width: 0px; margin: 0px 5px 0px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Label after being brought to front and moved" border="0" alt="Label after being brought to front and moved" align="left" src="http://chrisbenard.net/wp-content/uploads/2009/07/moved.jpg" width="485" height="138" />As you can see, the control that was previously hidden is now visible and has been moved.</p>
<p clear="both">I know this is a basic solution to an easy problem, but I had to figure it out, and I hope that someone searching may find this useful as well. The above example was a new form I was starting; it is not the actual application in question.</p>
<div class="feedflare">
<a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=d6Grmg1lz0U:cxROuS6zdLA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=d6Grmg1lz0U:cxROuS6zdLA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=d6Grmg1lz0U:cxROuS6zdLA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.chrisbenard.net/~ff/ChrisBenard?a=d6Grmg1lz0U:cxROuS6zdLA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/ChrisBenard?i=d6Grmg1lz0U:cxROuS6zdLA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ChrisBenard/~4/d6Grmg1lz0U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chrisbenard.net/2009/07/24/accessing-a-control-without-being-able-to-see-it-on-a-windows-form/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://chrisbenard.net/2009/07/24/accessing-a-control-without-being-able-to-see-it-on-a-windows-form/</feedburner:origLink></item>
	</channel>
</rss>
