tag:blogger.com,1999:blog-91263318401609676572008-07-16T14:48:29.162-05:00Sleash SoftwareLydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comBlogger32125tag:blogger.com,1999:blog-9126331840160967657.post-91093075221506946702008-01-10T19:16:00.001-06:002008-01-10T19:22:43.368-06:00Creating an XML Document by Serializing an Object<p>Let's say we need to create an XML document that looks something like this:</p> <pre class="code"><span style="color: blue">&lt;?</span><span style="color: maroon">xml </span><span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot; <span style="color: red">encoding</span><span style="color: blue">=</span>&quot;<span style="color: blue">utf-8</span>&quot;<span style="color: blue">?&gt;<br />&lt;</span><span style="color: maroon">Form</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Name</span><span style="color: blue">&gt;</span>Name<span style="color: blue">&lt;/</span><span style="color: maroon">Name</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Description</span><span style="color: blue">&gt;</span>Short Description<span style="color: blue">&lt;/</span><span style="color: maroon">Description</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Variables</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Variable</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Name</span><span style="color: blue">&gt;</span>VarName<span style="color: blue">&lt;/</span><span style="color: maroon">Name</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Description</span><span style="color: blue">&gt;</span>Short Description<span style="color: blue">&lt;/</span><span style="color: maroon">Description</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Type</span><span style="color: blue">&gt;</span>ListDataSource<span style="color: blue">&lt;/</span><span style="color: maroon">Type</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Values</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Value</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">ValueMember</span><span style="color: blue">&gt;</span>1<span style="color: blue">&lt;/</span><span style="color: maroon">ValueMember</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">DisplayMember</span><span style="color: blue">&gt;</span>New<span style="color: blue">&lt;/</span><span style="color: maroon">DisplayMember</span><span style="color: blue">&gt;<br /> &lt;/</span><span style="color: maroon">Value</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">Value</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">ValueMember</span><span style="color: blue">&gt;</span>2<span style="color: blue">&lt;/</span><span style="color: maroon">ValueMember</span><span style="color: blue">&gt;<br /> &lt;</span><span style="color: maroon">DisplayMember</span><span style="color: blue">&gt;</span>Old<span style="color: blue">&lt;/</span><span style="color: maroon">DisplayMember</span><span style="color: blue">&gt;<br /> &lt;/</span><span style="color: maroon">Value</span><span style="color: blue">&gt;<br /> &lt;/</span><span style="color: maroon">Values</span><span style="color: blue">&gt;<br /> &lt;/</span><span style="color: maroon">Variable</span><span style="color: blue">&gt;<br /> &lt;/</span><span style="color: maroon">Variables</span><span style="color: blue">&gt;<br />&lt;/</span><span style="color: maroon">Form</span><span style="color: blue">&gt;</span></pre><br /><a href="http://11011.net/software/vspaste"></a><br /><br /><p>You get the picture, right? </p><br /><br /><p>Well, supposing we needed to create these over and over and over and these XML documents are fed into another program for processing.&#160; Perfect time to use serialization, right?&#160; Right.&#160; But that is sometimes easier said that done.&#160; Here's how I go about it.</p><br /><br /><p><strong>Step 1:</strong> You will need a class the &quot;root level,&quot; which in this case would be &quot;FormLayout&quot;&#160; your class declaration would look like this:</p><br /><br /><pre class="code">[<span style="color: teal">Serializable</span>]<br /><span style="color: blue">public class </span><span style="color: teal">FormLayout</span></pre><br /><br /><p></p><br /><br /><p><strong>Step 2:</strong> Create a class for every element that has its own sub-elements.&#160; In our example we would need to create a class for both &quot;Variable&quot; and &quot;Value.&quot;&#160; Their class declarations would look like this:</p><br /><br /><pre class="code">[<span style="color: teal">Serializable</span>]<br /><span style="color: blue">public class </span><span style="color: teal">Variable</span></pre><br /><a href="http://11011.net/software/vspaste"></a><br /><br /><pre class="code">[<span style="color: teal">Serializable</span>]<br /><span style="color: blue">public class </span><span style="color: teal">Value</span></pre><br /><br /><p>Step 3: Starting with the highest (most indented?) elements, create a public property for each element under it.&#160; In our case we would start by creating a public property for &quot;ValueMember&quot; and &quot;DisplayMember&quot; (encapsulating private variables of course):</p><br /><br /><pre class="code"><span style="color: blue">public string </span>ValueMember<br />{<br /> <span style="color: blue">get </span>{ <span style="color: blue">return </span>_valueMember; }<br /> <span style="color: blue">set </span>{ _valueMember = <span style="color: blue">value</span>; }<br />}<br /><br /><span style="color: blue">public string </span>DisplayMember<br />{<br /> <span style="color: blue">get </span>{ <span style="color: blue">return </span>_displayMember; }<br /> <span style="color: blue">set </span>{ _displayMember = <span style="color: blue">value</span>; }<br />}</pre><br /><br /><p><font face="Verdana">Continue with the rest of the classes in the same way...</font></p><br /><br /><p>Step 4: When you arrive at a &quot;Repeating&quot; element, make its declaration in its parent class as an array.&#160; So for instance a &quot;Variable&quot; object would have a repeating list of &quot;Value&quot; elements, so we would create a public property in the &quot;Variable&quot; class that was an array of type &quot;Value&quot;.&#160; Like so:</p><br /><br /><pre class="code"><span style="color: blue">public </span><span style="color: teal">Value</span>[] Values<br />{<br /> <span style="color: blue">get </span>{ <span style="color: blue">return </span>_values; }<br /> <span style="color: blue">set </span>{ _values = <span style="color: blue">value</span>; }<br />}</pre><br /><br /><p></p><br /><br /><p>NOTE!!!!: It is important at this step to make sure your property names (in this case &quot;Values&quot; is the element that you want surrounding your repeating elements.&#160; We named ours &quot;Values&quot; here because we want our XML Doc to look like:</p><br /><br /><p>&lt;Values&gt;</p><br /><br /><blockquote><br /> <p>&lt;Value&gt;</p><br /><br /> <p>...</p><br /><br /> <p>&lt;/Value&gt;</p><br /><br /> <p>&lt;Value&gt;</p><br /><br /> <p>...</p><br /><br /> <p>&lt;/Value&gt;</p><br /></blockquote><br /><br /><p>&lt;/Values&gt;</p><br /><br /><p><strong>Step 5:</strong> Mark all of your array properties with the </p><br /><br /><p>[XmlArrayItem(ElementName=&quot;Foo&quot;, Type=typeof(Bar)] attribute.&#160; Where &quot;Foo&quot; is what you want your repeating elements to be, and Bar is the type of array.&#160; In our case we want ElementName=&quot;Value&quot; (see XML Snippet above) and Bar = Value.&#160; So our Value[] array in our &quot;Variable&quot; class would look like this:</p><br /><br /><pre class="code">[<span style="color: teal">XmlArrayItem</span>(ElementName=<span style="color: maroon">&quot;Value&quot;</span>, Type=<span style="color: blue">typeof</span>(<span style="color: teal">Value</span>))] <br /><span style="color: blue">public </span><span style="color: teal">Value</span>[] Values<br />{<br /> <span style="color: blue">get </span>{ <span style="color: blue">return </span>_values; }<br /> <span style="color: blue">set </span>{ _values = <span style="color: blue">value</span>; }<br />}</pre><br /><br /><h4><strong>Serialize Me!</strong></h4><br /><br /><p>NOTE: You'll need a using System.Xml.Serialization and System.IO for this to work</p><br /><br /><pre class="code"><span style="color: blue">public void </span>Run()<br />{<br /> <span style="color: teal">FileStream </span>_fileStream = <br /> <span style="color: blue">new </span><span style="color: teal">FileStream</span>(<span style="color: maroon">&quot;c:\file.xml&quot;</span>, <span style="color: teal">FileMode</span>.Create);<br /> FormLayout _formLayout = <span style="color: blue">new </span>FormLayout();<br /> <span style="color: green">// Do something that would fill the FormLayout's properties...<br /> </span><span style="color: teal">XmlSerializer </span>_xmlSerializer = <br /> <span style="color: blue">new </span><span style="color: teal">XmlSerializer</span>(<span style="color: blue">typeof</span>(FormLayout));<br /> _xmlSerializer.Serialize(_fileStream, _formLayout);<br />}</pre><br /><a href="http://11011.net/software/vspaste"></a><br /><br /><p>Barring any complications, you should have an XML Document at &quot;C:\file.xml&quot; that follows the structure you need exactly.</p><br /><br /><p><strong>Problems Foreseen:</strong></p><br /><br /><ul><br /> <li>Make sure every class is labeled public, otherwise the XmlSerializer can't see it.</li><br /><br /> <li>Make sure every class has an empty constructor, even if you won't be using it.&#160; This is what the XmlSerializer class uses to serialize and deserialize objects.</li><br /><br /> <li>If for some reason you need to have public properties in the classes that you don't want to show up when serialized, mark them with the [XmlIgnore] attribute.</li><br /></ul> Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-56567423184406925672008-01-02T22:59:00.001-06:002008-01-02T23:03:11.356-06:00F# Programming Language<p><a href="http://lh5.google.com/lydonbergin/R3xrmiaqTsI/AAAAAAAAAC0/kGYBDc2yd_Y/image%5B5%5D?imgmax=800"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="98" alt="image" src="http://lh3.google.com/lydonbergin/R3xrnCaqTtI/AAAAAAAAAC8/IN3-4bcSiM4/image_thumb%5B3%5D?imgmax=800" width="128" align="left" border="0" /></a> Looks like Microsoft has been hard at work on the <a href="http://research.microsoft.com/fsharp/fsharp.aspx">F# Programming Language</a>, a functional programming language that works on the .NET framework.&#160; Think <a href="http://python.org/">Python</a> on .NET (yes, I've seen <a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython">IronPython</a>).&#160; The syntax is definitely not C# or VB like, and at first glance it looks very confusing -- but I think it would be fairly easy to pick up on.&#160; </p> <p>If I do end up using it, it will probably be for the same reasons I used Python for years; to do one-time tasks programmatically without creating an entire .NET solution.&#160; When I was working help desk I used these &quot;functional programming&quot; tools religiously to read log files, etc.&#160; Automating monotonous tasks is a great way to get started in programming.&#160; Worked for me!</p> Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-90034943137573246342008-01-02T22:45:00.001-06:002008-01-02T23:03:45.205-06:00Viigo, the best Windows Mobile Application<p><a href="http://viigo.com/"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="94" alt="image" src="http://lh6.google.com/lydonbergin/R3xocyaqTpI/AAAAAAAAACc/i97vLQ2fFKw/image%5B9%5D?imgmax=800" width="94" align="left" border="0" /></a> Let's face it, browsing the web on a windows mobile device stinks.&#160; Most content isn't made to be viewed on such a small screen and the content that is... well it's usually not very good.</p> <p><a href="http://www.picsel.com/index.php/solutions/view/C11/">Picsel Browser</a> certainly makes things a lot easier -- which is why it's quickly becoming one of my most used apps -- but it's still a pain to have to zoom in and out, etc.</p> <p>Enter <a href="http://viigo.com/">Viigo</a>, an RSS aggregator for both Windows Mobile and Blackberry devices.&#160; Viigo allows you to create a custom list of RSS Feeds which it updates automatically whenever you open Viigo.&#160; You can choose your feeds from Viigo's built-in list of feeds (nicely categorized for ease of use) or by inputting your own feed URL's.</p> <p><a href="http://lh5.google.com/lydonbergin/R3xodiaqTqI/AAAAAAAAACk/JJGB0bjeqrQ/image%5B13%5D?imgmax=800"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 0px 0px 10px; border-right-width: 0px" height="85" alt="image" src="http://lh6.google.com/lydonbergin/R3xodyaqTrI/AAAAAAAAACs/b6NR1Iih9SM/image_thumb%5B8%5D?imgmax=800" width="94" align="right" border="0" /></a> </p> <p>I've had my new Samsung SCH-i760 with Verizon service for a couple of months now and I must say, aside from the same battery woes that plague all smart phones I have been very impressed.&#160; With Picsel Browser, Viigo, and the $45/month unlimited data plan you can accomplish quite a bit without being tethered to that laptop.</p> Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-50289776707585682712007-10-05T09:01:00.001-05:002007-10-05T11:24:43.888-05:00AJAX Control Toolkit<p><a href="http://images.sleash.com/AJAXControlToolkit_7EAB/taskify_your_life.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 10px 0px; border-right-width: 0px" height="117" alt="taskify_your_life" src="http://images.sleash.com/AJAXControlToolkit_7EAB/taskify_your_life_thumb.png" width="240" align="left" border="0"></a> Just for kicks I've been writing a new website (the previously mentioned <a href="http://www.taskify.net" target="_blank">taskify.net</a>) and to a.) Increase the usability of the UI and b.) just learn more about ASP.NET AJAX, I've been implementing a lot of the AJAX controls into the site.&nbsp; I've got to say, I think Microsoft really hit a home run on this one.&nbsp; </p> <p>I'll admit, at first it's very hard to grasp the concepts you must put in place when working with AJAX.NET, but much like .NET as a whole, once you figure out the patterns and the practices used to develop the tools, it's easy to pick up on all of the tools.&nbsp; You'll never know how satisfying it is to refresh the data in a GridView without a full page refresh until you try it :-)</p> <p>Head over to <a href="http://ajax.asp.net">http://ajax.asp.net</a> to check out the AJAX Extensions and the Control Toolkit.&nbsp; You can also click the button below to see a live demo.</p> <p><a href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/" target="_blank" atomicselection="true"> <center><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 10px 0px; border-right-width: 0px" height="76" alt="image" src="http://images.sleash.com/AJAXControlToolkit_7EAB/image.png" width="240" border="0"></a></center> <div align="left">...but there are problems.&nbsp; I have had major issues trying to work on an Ajax.net application on my laptop and desktop and syncing my changes.&nbsp; My DLL references get randomly lost which then throws up an error everywhere that there is an AJAX tag.&nbsp; A lot of my problems were fixed by changing the TagPrefix property on my ASPX pages to "Ajax" instead of "Asp".&nbsp; Apparently there is an issue with using Asp as your prefix, but I'm still having issues when copying files over.</div> <div align="left">&nbsp;</div> <div align="left">Usually removing the reference to the DLL and adding it back fixes the problem.&nbsp; Oh bother.</div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-18813148534319704222007-09-19T10:57:00.001-05:002007-10-05T08:40:39.413-05:00Taskify Coming Soon!<a href="http://images.sleash.com/TaskifyComingSoon_9A09/taskify_coming_soon_3.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 10px 0px; border-left: 0px; border-bottom: 0px" height="133" alt="taskify_coming_soon" src="http://images.sleash.com/TaskifyComingSoon_9A09/taskify_coming_soon_thumb_3.png" width="240" align="left" border="0"></a> <p>My newest project, Taskify, will hopefully be available pretty soon at <a href="http://www.taskify.net">http://www.taskify.net</a> (damn those .com squatters)</p> <p>Taskify is something that I started to write for myself only, a simple, quick, intuitive task list management system.&nbsp; After thinking about it for a while though, I kept coming up with ideas for some great features, especially along the lines of Text Message Integration, and I'm currently working on putting together a sort of "command line" parser that will really be the the guts of the app.&nbsp; I think it's going to be pretty sweet, and I hope that it is at least useful to some others.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-75428774498198050012007-09-17T09:32:00.001-05:002007-09-17T09:32:51.299-05:00John Mayer makes Coding Music!<p><a href="http://images.sleash.com/JohnMayermakesCodingMusic_861F/image.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 10px 0px; border-left: 0px; border-bottom: 0px" alt="image" src="http://images.sleash.com/JohnMayermakesCodingMusic_861F/image_thumb.png" align="left" border="0"></a> Let's all face it, John Mayer is probably the greatest musical talent of our generation, and I believe he will go down as one of the all time greats.&nbsp; He appeals to everyone from 15 year old girls to the hardest of hard-core blues enthusiasts.&nbsp; You would be hard-pressed to find someone that does a better cover of Jimi Hendrix's "Bold as Love", and his two-part saga in tribute to New York "City Love" and "Covered in Rain" are two of the most expressive, cohesive, and emotional works that I've ever heard.</p> <p>Most importantly though, John Mayer writes great coding music.&nbsp; My most productive 10:25 of the day is when "Covered in Rain" randomly shows up on the iPod.&nbsp; His music has a beat and a rhythm that most music today lacks.&nbsp; His use of an n'th of a second of silence right before a blaring chord is unparalleled in music today.&nbsp; If I were going to tell you to to buy 1 CD to try John's music out, I would probably tell you to get <strong><a href="http://www.amazon.com/John-Mayer-Trio-Live-Concert/dp/B000BJS4SU/ref=pd_bbs_sr_5/102-8627180-9786518?ie=UTF8&amp;s=music&amp;qid=1190039194&amp;sr=8-5">Try</a></strong>, a CD he did along with two other musicians as The John Mayer Trio, but his newest work <strong><a href="http://www.amazon.com/Continuum-John-Mayer/dp/B000H0MKGK/ref=pd_bbs_sr_1/102-8627180-9786518?ie=UTF8&amp;s=music&amp;qid=1190039194&amp;sr=8-1">Continuum</a></strong> would also be an excellent choice.&nbsp; Alternatively, both "City Love" and "Covered in Rain" are featured on his live <strong><a href="http://www.amazon.com/Any-Given-Thursday-John-Mayer/dp/B000083GLC/ref=pd_bbs_8/102-8627180-9786518?ie=UTF8&amp;s=music&amp;qid=1190039194&amp;sr=8-8">Any Given Thursday</a></strong> CD.&nbsp; All of these should be at your local CD shop (if you still have one) or from Amazon.</p> <p>JM also has quite a sense of humor, which he shows quite often on <a href="http://www.johnmayer.com/blog">his blog</a>.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-78835950210471687672007-08-27T11:23:00.001-05:002007-08-27T11:23:32.476-05:00R.I.P. Vista<p>Well, I've finally done it.&nbsp; I've gotten so tired of Windows Vista that I've decided to scrap it in favor of XP.&nbsp; I purchased a copy of XP Pro that should be here in the next week and I can't wait to format Vista!</p> <p>Problems I had with Vista:</p> <ol> <li>Excruciatingly slow on simple tasks such as moving/deleting files (hours to delete a 100 MB file)</li> <li>Entire OS as a whole looks good, but the theme makes things hard to read, etc.&nbsp; There is too much white, everything is white and white.&nbsp; </li> <li>Windows classic theme looks like a cartoon.</li> <li>Several times I shut the computer down only wake up the next morning and find that vista is still "logging off"</li> <li>Just an overall pause in starting ANYTHING.&nbsp; It would sometimes take 3-5 minutes to open FireFox.</li> <li>Don't even get me started on using Visual Studio 2005 on Vista...</li></ol> <p>Look, I'm a computer programmer, and early adapter, and open minded and smart human being, but there's only so much I can take!!&nbsp; I am in no way opposed to change, in fact I usually love it (I love Office 2007 for instance) but Vista is bad bits.&nbsp; Hopefully SP1 will fix most of the issues and if so, maybe I'll give it another try.&nbsp; For now I'm going to go back to the greatest operating system ever made, Windows XP Professional.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-13728076216368810762007-08-14T11:33:00.001-05:002007-08-14T11:33:42.599-05:00Work Smarder (Smarter-not-Harder)<p>I am a developer.&nbsp; When it comes to Visual Basic, C#, or even Perl, I am the man to call.&nbsp; The biggest problem with being a developer though is that&nbsp;I am not a designer!&nbsp; I know what looks good when I see it, but I am sorely lacking the ability to make the transformation from &lt;ugh&gt; to &lt;wow&gt;</p> <p>Thankfully though, there are several places that help me work smarder.&nbsp; When I'm creating a web application, the first thing I do is start browsing the interweb for Open Source Web Designs:</p> <ol> <li><a href="http://www.freecsstemplates.org">http://www.freecsstemplates.org</a></li> <li><a href="http://www.odwd.org">http://www.odwd.org</a></li> <li><a href="http://www.openwebdesigns.org">http://www.openwebdesigns.org</a></li> <li><a href="http://www.openwebdesign.org">http://www.openwebdesign.org</a></li></ol> <p>I can ALWAYS (yes, I said always, not almost always, but always) find a template that will get my project kick-started at the very least.&nbsp; In fact, I have the RSS feeds of all of the above sites on my FireFox toolbar and I check them every day!&nbsp; I have a bookmark folder of nothing but open web designs that I like.</p> <p>When I started forming an idea of a Task List web app I was thinking about building, the first thing I did is start rummaging through my favorite design bookmarks and came up with <a href="http://www.opendesigns.org/preview/?template=893">this baby</a>.&nbsp; </p> <p>Using the MasterPage features of ASP.NET 2.0 and an open source web design, I'm 30-60 minutes away from a design that KAFF's (Kicks Ass For Free).</p> <p>If you're interested in hearing more about how to turn an open source template into an ASP.NET 2.0 Master Page, <a href="mailto:lydon@sleash.com">shoot me an email</a> or leave a comment on this story.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-53097482419509447922007-08-13T09:47:00.001-05:002007-08-13T09:47:12.524-05:00How to use a ToolTip to extend a TextBox<p>I'm working on a windows app at the moment and (thankfully) I'm heading down the home stretch.&nbsp; I'm now at the point that end users are testing the app and requesting changes.&nbsp; </p> <p>The app is going to take care of customer maintenance/promotions for our company so it has all of the usual things, Names, Addresses, Email Addressees, you get the point.&nbsp; To make a long story short, the users want the TextBox where they type in an Email Address to extend while they are typing to show the entire email address, no matter how long it is.&nbsp; </p> <blockquote> <p><strong>"Think about in Excel, when you're typing in a cell and what you're typing in is longer than the width of a cell, the cell just extends until you tab out of it."</strong></p></blockquote> <p>I thought that between all of the .NET source available on the interwebs, the .NET Framework, and the Infragistics controls we use that I would be able to find this functionality somewhere.&nbsp; Well, I was wrong!</p> <p>&nbsp;</p> <p>The solution I came up with was a simple one though, I would just use the ToolTip control provided with .NET 2.0 to display a ToolTip directly under the TextBox that would dynamically change while the user was typing.&nbsp; So that's what I did, and here's how I did it:</p> <p>&nbsp;</p> <p>&nbsp;</p> <p><strong>On the TextBox.Enter event</strong></p><pre class="code"> <span style="color: rgb(0,128,0)">// Shows the ToolTip if the TextBox is not empty<br /></span> searchToolTip.Show(<span style="color: rgb(0,0,255)">this</span>.txtEmail.Text, <span style="color: rgb(0,0,255)">this</span>, 115, 395);</pre><a href="http://11011.net/software/vspaste"></a><strong></strong><br /><p><strong>On the TextBox.KeyPress event</strong></p><pre class="code"> <span style="color: rgb(0,0,255)">if</span> (<span style="color: rgb(0,0,255)">char</span>.IsLetterOrDigit((<span style="color: rgb(0,0,255)">char</span>)e.KeyChar) ||<br /> <span style="color: rgb(0,0,255)">char</span>.IsPunctuation((<span style="color: rgb(0,0,255)">char</span>)e.KeyChar))<br /> {<br /> <span style="color: rgb(0,128,0)">// Show the ToolTip with the next TextBox.Text<br /></span> searchToolTip.Show(txtEmail.Text + e.KeyChar.ToString(),<br /> <span style="color: rgb(0,0,255)">this</span>, 115, 395);<br /> }<br /> <span style="color: rgb(0,0,255)">else<br /></span> {<br /> <span style="color: rgb(0,128,0)">// Show the Tooltip without the KeyChar added<br /></span> <span style="color: rgb(0,128,0)">// if a garbage key is pressed<br /></span> searchToolTip.Show(txtEmail.Text,<br /> <span style="color: rgb(0,0,255)">this</span>, 115, 395);<br /> }</pre><a href="http://11011.net/software/vspaste"></a><br /><p><a href="http://11011.net/software/vspaste"><a href="http://11011.net/software/vspaste"></a><strong>And finally, on the TextBox.Leave event</strong></p><pre class="code"> <span style="color: rgb(0,128,0)">//Hide the tooltip<br /></span> searchToolTip.Show(<span style="color: rgb(128,0,0)">""</span>, <span style="color: rgb(0,0,255)">this</span>, <br /> <span style="color: rgb(0,128,128)">Screen</span>.PrimaryScreen.Bounds.Right, <br /> <span style="color: rgb(0,128,128)">Screen</span>.PrimaryScreen.Bounds.Bottom);</pre><a href="http://11011.net/software/vspaste"></a>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-81769699848053458382007-08-03T10:16:00.001-05:002007-08-03T10:21:33.479-05:00Venting Frustrations<p><a href="http://images.sleash.com/VentingFrustrations_902D/imageabe30405cf2c4f7e9235c7b13e674963.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 10px 0px; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://images.sleash.com/VentingFrustrations_902D/image_thumb.png" width="149" align="left" border="0"></a> I think probably the #1 problem that computer programmers have is the fact that the people (for the most part) that will be using your application are not computer programmers.&nbsp; You go through all the trouble of creating shortcut keys, making sure the tab order is perfect, and adding that sweet collapse animation to your application only to have it pushed out to some middle-aged women running at 800x600 resolution who think shortcut keys are what the black ones on the piano are called.</p> <p>The problem: <strong>you are writing this program for them to use!</strong>&nbsp; You have to make them happy, no matter how much it means ripping your application apart and starting over.&nbsp; Programmers who code internal apps for use within the company, who are your customers?&nbsp; <em>Your co-workers</em>.&nbsp; You should write applications that the 40-something's two floors above you running 800x600 on a 17" monitor&nbsp;can be happy about using.&nbsp; </p> <p>It's not always easy.&nbsp;&nbsp;You get the perfect color palette and everything looks&nbsp;great until&nbsp;your demo when you get a <strong>"There's too much blue, you need bold colors that will stand out like red and yellow!"</strong>&nbsp; Honestly, <em><strong>red and yellow.&nbsp;</strong>&nbsp;</em>They said that.&nbsp; Throw on the headphones, kick your&nbsp;iPod on&nbsp;the Jack Johnson/John Mayer/Jason Mraz playlist&nbsp;and get to coding my friend.&nbsp; You love a challenge and that's why you started coding in the first place.&nbsp; Bring it back to Windows 98 style baby, the customer is always right!</p><pre class="code"> <span style="color: rgb(0,0,255)">if</span> (<span style="color: rgb(0,128,128)">DateTime</span>.Now.DayOfWeek == <span style="color: rgb(0,128,128)">DayOfWeek</span>.Friday)<br /> {<br /> <span style="color: rgb(0,128,128)">MessageBox</span>.Show(<span style="color: rgb(128,0,0)">"Almost there..."</span>);<br /> }</pre><br /><div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:2b0658de-1ed4-4370-9d87-c765b579e465" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="http://del.icio.us/popular/Software%20Development" rel="tag">Software Development</a>, <a href="http://del.icio.us/popular/C#" rel="tag">C#</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-43808750883683601222007-07-10T14:05:00.001-05:002007-07-10T14:05:15.917-05:00EncapsulateAll Updated!<p><a href="http://images.sleash.com/EncapsulateAllUpdated_C600/EncapsulateAll.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 10px 0px; border-left: 0px; border-bottom: 0px" height="151" alt="EncapsulateAll" src="http://images.sleash.com/EncapsulateAllUpdated_C600/EncapsulateAll_thumb.png" width="240" align="left" border="0"></a> We've just released a new version of <a href="http://www.codeplex.com/encapsulateall">EncapsulateAll at CodePlex</a>.&nbsp; I've added a pretty good looking skin via the <a href="http://www.skincrafter.com">SkinCrafter</a> add-on.&nbsp; I got the light version for registering Visual Studio 2005 and all I can say is WOW.&nbsp; It sure does make it quick and easy for an application to look <strong>really good</strong>.</p> <p>Anyway, check out EncapsulateAll and if you're a windows forms developer, check out SkinCrafter.&nbsp; It's worth a look.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-86094849365012111512007-06-29T10:23:00.001-05:002007-06-29T10:23:07.849-05:00TireShop development will continue...<p>I've been slacking pretty badly on TireShop development lately, but that doesn't mean that development is dead.&nbsp; I'm going to get back into the development swing very shortly, and there should be bug fixes, new features, and possibly iPhone integration...</p> <p>Okay, maybe I made up the iPhone part, but you get the picture.&nbsp; <strong>TireShop is not dead!</strong></p> <p><strong><a href="http://www.codeplex.com/TireShop">http://www.codeplex.com/TireShop</a></strong></p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-9661065313084493412007-06-20T11:47:00.001-05:002007-06-20T11:47:42.042-05:001 + Infinity != Infinity<p>I know, it sounds weird... but it's true.&nbsp; Actually you can't add anything to infinity at all, and if you tried you could create some sort of cosmic paradigm where the infinite universe attempts to join with another dimension and that could really screw things up.&nbsp; <a href="http://www.tv.com/futurama/the-farnsworth-parabox/episode/165487/summary.html?tag=ep_list;ep_title;9">[See Futurama for confirmation]</a></p> <p>I've always wanted to have a theorem named after me (jealous of that damn Pythagoras) but I don't think this will cut it.&nbsp; Especially since this is apparently <a href="http://www.everything2.com/index.pl?node_id=152045">something that has been accepted as fact for hundreds of years</a>?&nbsp; Oh well, my day will come.&nbsp; Until then, leave infinity alone.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-59713111406115298912007-06-06T03:30:00.001-05:002007-06-06T03:30:02.326-05:00Vista File Copying/Deleting Problems<p>I've been having some troubles Moving and Deleting large files using Windows Vista, which is apparently <a href="http://it.slashdot.org/article.pl?sid=07/03/27/038227">a problem that a lot of people are having</a>.&nbsp; I've been searching for a fix to this issue for a looong time now and it looks like <a href="http://www.pctipsbox.com/how-to-fix-problems-copying-and-moving-large-files-in-windows-vista/">I've found it here.</a></p> <p>It looks like cause of the problem (at least my problem, from what I've read there are several) is due to Vista's new Auto-Tuning Network.&nbsp; To fix the problem, open up a command prompt as administrator and type in:</p> <p><strong>netsh int tcp set global autotuninglevel=disabled</strong></p> <p>...and reboot.&nbsp; After running this fix I deleted a 208 MB file in about 0.5 seconds (which I had previously left deleting overnight only to end up cancelling it) so I think it's safe to say my problem is fixed.&nbsp; </p> <p>I suppose my network is no longer auto-tuned but what do you expect?&nbsp; Vista to work?</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-33044727469959495402007-05-31T09:04:00.001-05:002007-05-31T09:17:34.887-05:00Object Oriented Analysis & Design<p><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="169" alt="Head First Object Oriented A&amp;D" src="http://images.sleash.com/ObjectOrientedAnalysisDesign_7FA2/HeadFirstOOAD_3.jpg" width="169" align="right" border="0">I'm currently reading the book <a href="http://amazon.com/Head-First-Object-Oriented-Analysis-Design/dp/0596008678/ref=pd_ys_iyr_img/103-7361769-8358226?%5Fencoding=UTF8&amp;coliid=IASCD02MBYTHS&amp;colid=2FQB1C0I3I7GM&amp;pf_rd_m=ATVPDKIKX0DER&amp;pf_rd_s=right-2&amp;pf_rd_r=14NZ8RJN3HZ3VSYN812H&amp;pf_rd_t=1501&amp;pf_rd_p=258341101&amp;pf_rd_i=home">Head First Objected Oriented Analysis &amp; Design</a> from <a href="http://www.oreilly.com/">O'Reilly</a>.&nbsp; This is the second Head First book I've read (the other was <a href="http://www.amazon.com/Head-First-Design-Patterns/dp/0596007124/ref=pd_bxgy_b_img_b/103-7361769-8358226?ie=UTF8&amp;coliid=IASCD02MBYTHS&amp;colid=2FQB1C0I3I7GM">Head First Design Patterns</a>) and I must say that this is probably the best and most useful&nbsp;series of tech books I've read.&nbsp; The Head First philosophy is to write the books in a casual tone and really repeat the important things so that they'll stick out in your head.&nbsp; Probably the best thing about the books is that they use "real world" scenarios to explain WHY you should do something and not just HOW to do something.</p> <p>Another great thing about these particular books are that they really teach you something that you probably either</p> <ul> <li>Learned somewhere along the way but didn't exactly grasp WHY you learned to do things that way</li></ul> <p>OR</p> <ul> <li>(Like me) Didn't go to a college that put a heavy (read: any) emphasis on design so to stay current you need to sharpen up your design skills</li></ul> <p>The problem with going to a University that considers Computer Information Systems part of the Business Department (my degree is&nbsp;a BBA) is that you have to take so many Business courses that it feels more like a&nbsp;double major in CIS and Business Administration than a CIS degree with a minor in BA.</p> <p>But I'm going&nbsp;on a tangent.</p> <p>If you're interested in learning some of the building blocks of Object Oriented design or Design Patterns, I would definitely check out these books.&nbsp; They are written for Java programmers, but I'm a C# guy and I haven't had any problems figuring out any of the examples.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-34625946380173011772007-05-18T10:11:00.001-05:002007-05-18T10:11:04.050-05:00New Look for Sleash Software<p>As you can tell if you've been here before, we have a new look at Sleash Software.&nbsp; This is a template called Ultra 77 that I found while searching through the galleries at <a href="http://www.oswd.org">http://www.oswd.org</a> (OSWD = Open Source Web Design).&nbsp; It was designed by Ian Smith of N-Vent (<a href="http://www.n-vent.com">http://www.n-vent.com</a>) which is a web design company based in Indianapolis, Indiana.&nbsp; I took the template and converted it for use with Blogger (the platform Sleash.com runs on) and I'll be writing an article on how to convert web templates for use with Blogger soon.&nbsp; It still has a couple of quirks in Internet Explorer that I'll need to work out, but it shouldn't be anything too bad.</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-17751667907521011862007-05-10T12:01:00.001-05:002007-05-10T12:01:12.341-05:00Vista is Too White<p><a href="http://images.sleash.com/VistaisTooWhite_A900/VistaScreenshot2.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 10px 0px; border-left: 0px; border-bottom: 0px" height="180" src="http://images.sleash.com/VistaisTooWhite_A900/VistaScreenshot_thumb.png" width="240" align="left" border="0"></a> I bought a new HP computer a couple of months ago.&nbsp;&nbsp;A big 19" widescreen monitor, Dual Core AMD Processor, 1 GB ram, etc.&nbsp; The computer came with Windows Vista Home Premium, and so far I haven't had a lot of problems with it.&nbsp; </p> <p>Most of my applications run okay, I can develop using Visual Studio 2005, surf with FireFox, and (geekiest of all)&nbsp;play <a href="http://www.magicthegathering.com">Magic: The Gathering Online</a>.&nbsp; All is well, EXCEPT... </p> <p><strong>Windows Vista is TOO WHITE.</strong>&nbsp;&nbsp; Everything about it is white.&nbsp; I understand that they're trying to get away from "Control Gray," but it's very hard to tell where a TextBox ends and the form begins when they're both the same color!&nbsp; </p> <p>And look, I know that all you have to do is go in and alter the theme, I understand that.&nbsp; But, the default theme should at least be readable!</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-74579749266433654822007-05-03T11:33:00.001-05:002007-05-03T11:33:53.999-05:00Update on Oracle Merge<p><a href="http://images.sleash.com/UpdateonOracleMerge_A29A/image02.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 5px 5px 0px; border-right-width: 0px" height="83" src="http://images.sleash.com/UpdateonOracleMerge_A29A/image0_thumb.png" width="240" align="left" border="0"></a>Well, after spending all day yesterday and some time this morning trying to work on my Oracle merge problem, I've decided to just do it the old fashioned way.&nbsp; We're going to alter the procedure to check the value of the MasterAccountId and if it's 0 (like, the MA was just created) then the procedure will run an insert, and if it's not, then it will run an update on the record that shares that MasterAccountId.</p> <p>What is the difference in this and what I was trying to do you ask?&nbsp; Uh... nothing really.&nbsp; I just thought it would be cool to use that nice shiny new&nbsp;MERGE keyword in my PL/SQL.&nbsp; Foiled again...</p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-36554194255117038372007-05-02T15:34:00.001-05:002007-05-02T15:34:59.595-05:00Building .NET apps on an Oracle DB<p>For the past few months I've been working on building a C# app that hits an Oracle database and it's been an adventure.&nbsp; One problem that I've really plowed into is with the merging statement (though it's mostly self-inflicted).&nbsp; </p> <p>While writing my business objects, say for instance a MasterAccount class, I have a Master_Account table in the DB and the class and DB have obviously the same fields.&nbsp; If I instantiate a MasterAccount object like so:</p><pre class="code"><span style="color: rgb(0,128,128)">MasterAccount</span> ma = <span style="color: rgb(0,0,255)">new</span> <span style="color: rgb(0,128,128)">MasterAccount</span>(masterAccountId);</pre><br /><p>Then the class hit's the DB and fills all of the fields with data.&nbsp; If I construct one like this however:</p><pre class="code"><span style="color: rgb(0,128,128)">MasterAccount</span> ma = <span style="color: rgb(0,0,255)">new</span> <span style="color: rgb(0,128,128)">MasterAccount</span>();<br />ma.AccountName = <span style="color: rgb(128,0,0)">"Some Name"</span>;<br />ma.EmailAddress = "<span style="color: rgb(128,0,0)"><a href="mailto:some@email.address">some@email.address</a></span>"; <font color="#008040">// etc, etc</font></pre><br /><p>then the MasterAccountId (PK in the Database) would be set to 0.&nbsp; Then I have a method, Save, that I could call and it would run a merge (aka upsert) where if the object's MasterAccountId was already in the database it would update, it it wasn't (like if it was still the default 0) then it would insert the record and generate it's own Master_Account_Id (DB side).&nbsp; The problem is my stored procedure for the upsert is giving me all kinds of trouble because it's not letting me use my parameter values as a row for merge matching.&nbsp; </p><br /><p>When you're starting in the software biz, there's always something new to learn.</p><br /><p>&nbsp;</p><br /><div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:97f65504-8930-4530-b9fe-87b68a0ffd3f" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="http://del.icio.us/popular/Oracle" rel="tag">Oracle</a>, <a href="http://del.icio.us/popular/C#" rel="tag">C#</a>, <a href="http://del.icio.us/popular/Merge%20Insert" rel="tag">Merge Insert</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-51982211031423379592007-04-30T13:58:00.001-05:002007-04-30T14:02:01.519-05:00Weird Images...<p>If my images (especially my banner logo and MCP Logo in the right column) look funny to you, it's because I've decided to go with .PNG images for this website, and you're using an old browser.&nbsp; This site looks great (ha, okay maybe not great) in Firefox and IE7, but not so much in IE6.&nbsp; This is because Internet Explorer 6 did not support transparency in .PNG images.&nbsp; Sorry.&nbsp; If it really gets on your nerves, I would upgrade to <a title="Firefox!" href="http://www.mozilla.com/en-US/firefox">Firefox</a>. </p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-70579063633909154602007-04-30T11:23:00.001-05:002007-04-30T11:23:25.812-05:00Combo Boxes...<p>Combo Boxes in .NET 2.0 in a word, weird.</p> <p>As you'll no doubt notice if you've seen our <a title="TireShop Download" href="http://www.codeplex.com/TireShop">TireShop</a> application, I like to use the early databinding features of Visual Studio 2005.&nbsp; They're very easy and fairly powerful.&nbsp; You connect to a database, generate your DataSet based on some tables, and then you bind your controls to the dataset.&nbsp; Then, when you run your application, you'll have a little navigation strip<a href="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image010.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 5px 5px 0px; border-right-width: 0px" height="22" src="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image0_thumb8.png" width="240" align="left" border="0"></a> which allows you to run through all of the records in the table that you're currently bound to.&nbsp; Simple enough, right?&nbsp; </p> <p>So this works fine if you've got a couple of text fields, maybe for a Customer table you'll have a Customer_Id, First_Name, Last_Name, Address, etc.&nbsp; No problems.&nbsp; Databinding works, and it works fairly well.</p> <p>Later on you're building the forms for you order table and the Customer_Id is a foreign key in the Order table from the Customer table.&nbsp; Obviously the best way to put this all together is with&nbsp;a ComboBox, setting the ValueMember to Customer_ID and the DisplayMember to [something like] Customer_Name.&nbsp; </p> <p><a href="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/menu4.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="146" src="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/menu_thumb2.png" width="150" align="left" border="0"></a> Seems easy enough, in your DataSources window you just change the field from a TextBox to a ComboBox, setup your DataSource for the ComboBox rows and everything works quite nicely.&nbsp; Man, that would be nice, huh?&nbsp; </p> <p>Drag your ComboBox onto the Form from the <a href="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image019.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 0px 5px 5px; border-right-width: 0px" height="84" src="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image0_thumb13.png" width="100" align="right" border="0"></a>DataSources window and click on the QuickTasks button (the little arrow on the top-right, I can't remember the real name) and you should see something like this --&gt;</p> <p>Check the "Use data bound items" CheckBox and the menu magically transforms to something a little more like <a href="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image023.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 5px 5px 5px 0px; border-right-width: 0px" height="130" src="http://www.crossroadsofdixie.com/blogger/ComboBoxes_D93F/image0_thumb15.png" width="150" align="left" border="0"></a>our friend to your left &lt;--</p> <p>Now we're in business.&nbsp;Just choose your DataSource (in our example you would choose the Customer table) and your display (Name) and value (Id) members.&nbsp; One would assume that we could set our SelectedValue to the Customer_ID from the OrderTableBindingSource and all would be well with the world.&nbsp; Well, we all know what happens when we assume, right?</p> <p>Okay, stick with me here.&nbsp;&nbsp;At this point, Visual Studio has generated us&nbsp;an OrderTableBindingSource which is going to set the <strong>Value</strong> of our Customer ComboBox to the Customer_ID of the customer which made the order.&nbsp; </p> <p>We've also got a CustomerBindingSource that's filling up the ComboBox list values with a Value list of Customer_ID and a Display list of Customer_Name.&nbsp; Again, we would think that when the OrderBindingSource set the <strong>Value</strong> of the ComboBox to say, 3, then the ComboBox would <strong>Display</strong> the customer's name.</p> <p>F5 it and see what happens.&nbsp; If your Visual Studio is my Visual Studio, then your first record will do something like <strong>Display</strong> what should be the <strong>Value</strong> of the field.&nbsp; Okay, now try and navigate to the next record.&nbsp; What's that??&nbsp; Now it <strong>Displays</strong> what should be the <strong>Display</strong> member.&nbsp; Hey, looks like it's working now, huh?&nbsp; Not quite.&nbsp; Try to navigate to the next item.&nbsp; Nothing?&nbsp; Can't do it?&nbsp; Like I said, it's weird.</p> <p>I remember having this problem when I was originally writing TireShop, so I opened it up and looked at the code.&nbsp; Low and behold, it's setup exactly like I've instructed here!&nbsp; Crazy stuff going on here...</p> <p>&nbsp;</p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:caa52c26-8c03-434d-ae59-5b7a5f9e31cf" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="http://del.icio.us/popular/Visual%20Studio%202005" rel="tag">Visual Studio 2005</a>, <a href="http://del.icio.us/popular/C#" rel="tag">C#</a>, <a href="http://del.icio.us/popular/SQL" rel="tag">SQL</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-57922511521903258162007-04-24T15:58:00.001-05:002007-04-24T18:33:06.125-05:00How I learned CIS, by a graduating Senior<p><a href="http://www.crossroadsofdixie.com/blogger/Collegewindsdown_A5D2/image02.png" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="240" src="http://www.crossroadsofdixie.com/blogger/Collegewindsdown_A5D2/image0_thumb.png" width="158" align="left" border="0"></a>Today marks one week from the day that I will take my last final in my college career.&nbsp; I have learned a lot of things and I have done a lot of work, and I honestly feel like I am a better person for the process.&nbsp; I do not, however, feel that&nbsp;College&nbsp;has prepared me for a "real" job in the world of Computer Information Systems, so I've taken that upon myself.</p> <p>Now, I personally have worked extremely hard throughout college.&nbsp; I have gone through three jobs during those four years, each a step-up from the last, and there is no point during my college career (and most of&nbsp;high school) that I was without employment.&nbsp; A little over 2 1/2 years ago I was still working at a small gas station for $5.65/hr on weekends when I got a call from a local bank offering me a job working as their help desk.&nbsp; I <strong>jumped</strong> at the chance to get my nose into the IT field for $9.00/hr.&nbsp; </p> <p>Now I don't want anyone to be under the illusion that some IT manager just happened to call me up and offer me a help desk job; I would estimate that I was turned down no less than 20 times by everyone from the local computer shop to the county government.&nbsp; <strong>I got a break</strong>, there's no denying it, but I took full advantage of it.</p> <p>I started work at the bank as a Help Desk Technician on November 14, 2005.&nbsp; While riding into work that day I was rear-ended by another vehicle and ended up two hours late, but that's a story for another day, this is a story about how I learned Information Technology.&nbsp; <strong>Working the help desk was the best learning experience of my life.&nbsp; </strong>I won't lie either, I was good.&nbsp; We were a small group; myself, three technicians, and an IT Manager.&nbsp; We supported about 350 employees at 20+ branches and as you can imagine everyone was expected to be a jack-of-all-trades and (most) were a master of none.&nbsp; I quickly learned skills that I could <strong>never</strong> pick up in a classroom.&nbsp; I took on every responsibility I could.&nbsp; I wanted to know everything.&nbsp; It was not long before I was as well (or better) versed at the bank's technology than anyone else.&nbsp; I would estimate that I handled an average of 100 phone calls per day and closed 90% of those trouble tickets in 5-10 minutes.</p> <p>As the others began to get some free time due to my efficiency they began to start fixing some of the bigger issues that were causing us problems, and I was right there in the mix.&nbsp; I learned group policy, access control lists, citrix, Unix, networking; <strong>I soaked up knowledge like a sponge.</strong>&nbsp; As problems were fixed and call numbers dropped, I was left to my own devices.&nbsp; I began to take the manual processes I was doing on a daily basis and start finding ways to automate them.&nbsp; I downloaded <a title="AutoIt v3" href="http://www.autoitscript.com/autoit3/">AutoIt</a> and went to work on a script that would do a custom setup on our HP Thin Clients in seconds rather than the usual 15-20 minutes.&nbsp; <strong>It was that point I knew that I wanted to be a developer.</strong></p> <p>After all of this time I was finally done with all of my general studies classes in College.&nbsp; <strong>It took me 2+ years to actually get to take a REAL CIS class.</strong>&nbsp; I was forced to take COBOL and VBA which were still, until this semester, the only programming languages I have been formally taught.&nbsp; <strong>This is a joke.</strong>&nbsp; There is absolutely no reason that I should have ever been forced to take COBOL, but I digress.&nbsp; I did and I learned the fundamentals of computer programming.&nbsp; I was off to the races.&nbsp; I took my VBA knowledge and started teaching myself VB.NET using Microsoft's Free Visual Basic Express Edition.&nbsp; I thought of college as a secondary citizen.&nbsp; I focused on my work and the studies I was teaching myself, and I was able to completely breeze through the next few semesters of college taking night classes.&nbsp; No college class ever challenged me to think the way that I challenged myself.&nbsp; Often times I was two semesters ahead of the classes I was taking.</p> <p>So, I learned VB.NET and eventually the need came to replace an application at the bank that they had been using for probably a decade.&nbsp; The program was what the CSR's used to print starter checks using the MICR ink cartridges.&nbsp; I offered my programming services to the IT Department and QwikChex was born.&nbsp; Over a period of 3 months (while still performing my Help Desk duties of course) I developed an application to print temporary checks onto check stock, keep track of users, and log all actions.&nbsp; We rolled it out and it was a HUGE SUCCESS.&nbsp; <strong>I knew I wanted to go into software development.</strong></p> <p>Over Christmas break between the Fall '05 and Spring '06 semesters, I checked out an MCP exam book from the campus library and studied.&nbsp; On January 11, 2006, I took and passed my MCP certification test for Windows Forms using VB.NET.&nbsp; On January 12, 2006 I posted my resume to Monster.com.</p> <p>Over the next few months I got several calls (probably 1-2 per week) and I also became active in the local .NET Users Group trying to network with some of Nashville's big .NET guys.&nbsp; During the 7 months between January and November of 2007 I probably went to at least 8 interviews and was called back for a second interview on 2 of those occasions.&nbsp; One company was actually about to give me an offer when they got a new CEO who froze hiring.&nbsp; My work life was quickly degrading as I was no longer satisfied with my help desk position because I was so focused on .NET Development.&nbsp; </p> <p>The whirlwind of disappointment in so many failed attempts at finding a new job and the extreme disappointment in the classes I was taking made these few months some of the more miserable I have had in my 22 years.&nbsp; My girlfriend (of almost 5 years now) was constantly trying to make me feel better, telling me that something would come up, but I started to quit looking and told myself that I would just wait until I graduated to look for something new.&nbsp; </p> <p>Then in August of 2006 I got a phone call from a publishing company in Nashville that was looking for someone with my skill set (Oracle skills in fact, one of the few REALLY GOOD classes I had taken in college).&nbsp; I went in for an interview and it was an instant success.&nbsp; I brought some of my sample code from my Oracle class and really answered all of the questions well.&nbsp; Two days later I got a call from the company offering me a <strong>really good</strong> salary (like, good for someone that already has a degree).&nbsp; The problem was, they wanted me to live in the Oracle PL/SQL world, and I wanted to be in .NETsville.&nbsp; After the disappointment of the past few months though, I decided to take it and see where it went.</p> <p>Today,&nbsp;8 months later, I'm still working at the publishing house.&nbsp; I spent my first three months working on an Oracle PL/SQL conversion and when I finished it, I was asked to start developing a CRM application using C# 2005.&nbsp; I quickly accepted the challenge, and that's the project I'm still working on today.</p> <p>My point is this, don't expect to go to college, major in Computer Information Systems, and leave with the knowledge to start the next Microsoft.&nbsp; In the end your degree is just a peice of paper that shows that you can sit through 120-132 credit hours of college courses without quitting.&nbsp; Take that job working the help desk your junior year even though you want to be a developer; you need your foot in the door.&nbsp; Put aside a few weeks between semesters to get that certification (you can usually get <a title="Student Discounts on Exams" href="http://www.vue.com/ms/aatc/">student discounts</a> on those, btw).&nbsp; Go above and beyond what you're being taught in college, because you can bet there is someone else out there who is, and that's who you may be interviewing against.</p> <p>&nbsp;</p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:c5c2934a-4bec-46b7-b420-40a1270a7d07" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/Computer%20Information%20Systems" rel="tag">Computer Information Systems</a>, <a href="http://technorati.com/tags/College" rel="tag">College</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-31985390846217886092007-04-20T13:49:00.001-05:002007-04-20T15:49:48.086-05:00Non-Profit Org. Member/Donor/Charity/Event Database<p><a href="http://www.codeplex.com/wbcsystems" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 10px 0px 0px; border-right-width: 0px" height="154" src="http://www.crossroadsofdixie.com/blogger/NonProfi.MemberDonorCharityEventDatabase_C272/image06.png" width="170" align="left" border="0"></a> I've <a title="Non-Profit Database" href="http://www.codeplex.com/wbcsystems">just uploaded an Access database</a> that my group has created for one of my final college classes.&nbsp; It's basic function is to help a non-profit organization keep track of it's members, donors, specific donations, charities, and events.&nbsp; The file I just uploaded is about 90% complete, we still need to create an annual report as well as a few other things, but it's coming along (and will be done by next week).&nbsp; I'll post a follow-up when I upload the final version.</p> <div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:4416f102-a00f-4124-943d-cadb5f14f85b" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="http://del.icio.us/popular/non-profit%20organization" rel="tag">non-profit organization</a>, <a href="http://del.icio.us/popular/access%20database" rel="tag">access database</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-76898799448481531032007-04-19T04:24:00.001-05:002007-04-19T04:24:23.954-05:00BitManip v0.9 Beta Released!<p><a href="http://www.codeplex.com/BitManip" atomicselection="true"><img style="border-right: 0px; border-top: 0px; margin: 0px 10px 0px 0px; border-left: 0px; border-bottom: 0px" height="156" alt="BitManip" src="http://www.crossroadsofdixie.com/blogger/BitManipv0.9BetaReleased_3DDC/image011.png" width="240" align="left" border="0"></a> I've finally just been able to post the application I was talking about <a title="CodePlex Outage" href="http://www.sleash.com/2007/04/codeplex-outage.html">the other day.</a>&nbsp; It's a program that I wrote last summer when I was working for a bank. They used it to create thumbnails of customers for their Photo ID Debit Cards.&nbsp; </p> <p>Just drag a box around the customer's face, click crop, click Resize (default of 300x300), save and close.</p> <p>It was designed with this in mind, but it can be used for several image/photo editing tasks.&nbsp; You can <a title="BitManip Home" href="http://www.codeplex.com/BitManip">download it here.</a></p>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.comtag:blogger.com,1999:blog-9126331840160967657.post-8191587104501358312007-04-17T12:04:00.001-05:002007-04-20T15:51:04.165-05:00Update on CodePlex outage...<p>Well, I inquired this morning about the CodePlex outage and received this warm &amp; fuzzy personalized response :-)</p> <blockquote> <p>&nbsp;</p><pre>At 3pm PDT on April 11th an operator error occurred </pre><pre>that caused source control and issue tracker data on </pre><pre>one of the Microsoft CodePlex servers to be accidentally </pre><pre>overwritten. During the standard data recovery effort, </pre><pre>a recovery backup configuration oversight was discovered </pre><pre>in the routine backup process for this CodePlex server </pre><pre>which is currently impacting immediate restoration of </pre><pre>the data.<br> <br>Note: The content in the Wiki as well as the release files </pre><pre>have not been affected. This current outage only affects </pre><pre>projects that were hosted on TFS03.<br> <br>We are working on this situation as a matter of highest </pre><pre>priority. All affected projects will have their source control </pre><pre>and issue tracker functionality restored soon but the status </pre><pre>of the source control and issue tracker data remains unknown </pre><pre>at this time. We will report back with a status update within </pre><pre>96 hours.<br> <br>We sincerely apologize for the inconvenience this may have </pre><pre>caused. The necessary corrections are already in place to </pre><pre>ensure this situation will not occur again.</pre></blockquote><pre>&nbsp;</pre><br /><p>Ouch.&nbsp; Hate those <strong>operator errors</strong>, <strong>accidental overwrites</strong>,<strong> <font color="#ff0000">and especially</font> <font color="#ff0000">configuration oversights in routine backup processes</font>...</strong></p><br /><p>&nbsp;</p><br /><div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:521b3573-4b67-410d-a768-9151669c74b3" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">del.icio.us tags: <a href="http://del.icio.us/popular/CodePlex" rel="tag">CodePlex</a></div>Lydon Berginhttp://www.blogger.com/profile/03892093228613717652noreply@blogger.com