<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Jeremy&#039;s Blog &#187; Programming</title>
	<atom:link href="http://www.jeremyprivett.com/blog/archives/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jeremyprivett.com/blog</link>
	<description>Programming and Life</description>
	<lastBuildDate>Wed, 05 May 2010 03:16:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Developing Again &#8211; The Story Up Until Now</title>
		<link>http://www.jeremyprivett.com/blog/archives/developing-again-the-story-up-until-now/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/developing-again-the-story-up-until-now/#comments</comments>
		<pubDate>Wed, 05 May 2010 02:11:30 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[General Ramblings]]></category>
		<category><![CDATA[ComicShout]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[OmegaFlash]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=441</guid>
		<description><![CDATA[It&#8217;s certainly been a long time since I&#8217;ve felt motivated to post anything here. I generally don&#8217;t like talking about what&#8217;s going on in my life except in small blips, most of which are suitable for Twitter. Using this blog as an outlet to talk about just me or life in general feels like a [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s certainly been a long time since I&#8217;ve felt motivated to post anything here. I generally don&#8217;t like talking about what&#8217;s going on in my life except in small blips, most of which are suitable for Twitter. Using this blog as an outlet to talk about just me or life in general feels like a waste when there&#8217;s much cooler stuff I would rather be talking about. Those of you who are looking for life updates can get them from <a href="http://www.facebook.com/jeremyprivett">Facebook</a> or <a href="http://twitter.com/jeremyprivett">Twitter</a>. Those of you who are looking for information on the cool stuff that I&#8217;m working on, stick around.</p>
<p>I&#8217;ve finally decided that I&#8217;m going to take an active role in getting myself out of this almost year-long development-less funk that I&#8217;ve been in. I&#8217;ve been pouring over information and ideas, trying to come up with something that I could spend my time on and make a personal project of. I actually came up with a few. They&#8217;re all Omega Vortex projects from back when we were trying to bootstrap a software company by consulting. The projects never got enough attention because of the consulting and we started to enter the really nasty area of the recession, so the consulting projects also started drying up, leaving us without enough income to allow us to move forward &#8230;</p>
<p><span id="more-441"></span></p>
<p>Fast forward a couple months where we were wrapping up our last consulting gig as I was taking a job at <a href="http://www.highwinds.com">Highwinds</a> as a Systems Engineer. Presumably to Engineer some cool tools and systems to help make our collective jobs easier. If only I knew then what I was really getting myself into. Honestly, I&#8217;m glad I didn&#8217;t. I probably wouldn&#8217;t have been so eager to take the job. Not too long after I started, our more senior engineer and overall badass Systems Ninja (hi, <a href="http://www.lqx.net">Matt</a>!) got an offer he couldn&#8217;t refuse and decided to move on to higher places. It was about that time that my world turned upside-down.</p>
<p>With almost zero previous experience as a Linux SysAdmin, I started a journey that would lead me to a great wealth of knowledge, a much greater understanding of how our systems worked and interacted with each other, as well as roughly no amount of time to spend on any of my development projects. We went through several ups and downs as I came up to speed, learning everything I could about running our Linux systems and how all of our software worked, the way the whole deal was architected, and everything I needed to know to keep it all running. It&#8217;s a constant learning experience and I&#8217;m still picking up stuff as I go along, but I feel like I&#8217;ve come a very long way in a short amount of time and I&#8217;m far more comfortable on the command line now than I ever was even back when Linux was my primary OS on personal machines.</p>
<p>Since then, we&#8217;ve hired quite a few Linux folks. Less pressure is square on my shoulders now that we have more very capable people to help distribute the load. We&#8217;re making progress to working smarter and not harder, spending less of our nights in contests to put out fires and more time with opportunities to relax. Things are becoming increasingly stable which is giving me more free time during off-work hours to do whatever I want. At first, I took this time to goof off and not do a whole lot, because I hadn&#8217;t had the opportunity to do so in so long. Now, I&#8217;ve decided to transition back to active development work in my free time.</p>
<p>I&#8217;m sure those of you who follow me on Twitter <a href="http://twitter.com/jeremyprivett/status/13347729744">noticed</a> that I said I&#8217;ve officially started working on ComicShout and OmegaFlash again. That&#8217;s not all, and I&#8217;ll have a lot to say about these and other projects in future posts. In the meantime, you can keep track of what I&#8217;m working on via <a href="http://github.com/Atrophius">GitHub</a> and <a href="https://www.ohloh.net/accounts/Atrophius">Ohloh</a>.</p>
<p>The repositories on GitHub are very ugly at the moment. They&#8217;re essentially dumps of what was in the private Omega Vortex repositories as of last night. A lot of code that never got committed was lost on a few of these. Keep in mind that these projects didn&#8217;t get enough love, before. My plan is to fix that. My current focus for a while is going to be OmegaFlash, so don&#8217;t expect too much activity on the others for now. As I&#8217;m able, I&#8217;m going to start putting up more information on my vision and goals for each project at their respective GitHub wikis. Anyone who&#8217;s looking to contribute after I&#8217;ve put up more info, please fork away. I&#8217;ll be keeping an eye on forks and will quickly integrate good additions. Habitual good contributors can be given direct commit access to the repositories.</p>
<p>If I&#8217;ve got your interest, please keep an eye on the progress at GitHub and Ohloh. Also, keep an eye on this blog. I&#8217;m going to start putting up some high-level overviews of what I want to do with the projects. Until then, I&#8217;m interested to hear ideas and suggestions from all of you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/developing-again-the-story-up-until-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArrayShift in C#</title>
		<link>http://www.jeremyprivett.com/blog/archives/arrayshift-in-c/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/arrayshift-in-c/#comments</comments>
		<pubDate>Tue, 29 Sep 2009 08:53:53 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Journey of Souls]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[linkedin]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=424</guid>
		<description><![CDATA[This probably isn&#8217;t the most elegant or efficient method of doing this, but I needed a way to perform an &#8220;ArrayShift&#8221; on an array in C#. There&#8217;s no built-in method to do this, so I wrote up and dropped this method in my ToolBox:

/// &#60;summary&#62;
/// A C# implementation of "ArrayShift" this is a generic method [...]]]></description>
			<content:encoded><![CDATA[<p>This probably isn&#8217;t the most elegant or efficient method of doing this, but I needed a way to perform an &#8220;ArrayShift&#8221; on an array in C#. There&#8217;s no built-in method to do this, so I wrote up and dropped this method in my ToolBox:</p>
<p><code>
<pre>/// &lt;summary&gt;
/// A C# implementation of "ArrayShift" this is a generic method that
/// will take an Array of T's, shift one off of the beginning of the
/// array and return it.
/// &lt;/summary&gt;
/// &lt;typeparam name="T"&gt;The type of array.&lt;/typeparam&gt;
/// &lt;param name="array"&gt;An array of T's, will be modified to remove
/// the first element.&lt;/param&gt;
/// &lt;returns&gt;First element of array.&lt;/returns&gt;
public static T ArrayShift&lt;T&gt;(ref T[] array)
{
   T first = array[0];
   IList&lt;T&gt; list = array.ToList();
   list.RemoveAt(0);
   array = list.ToArray();

   return first;
}</pre>
<p></code></p>
<p>It&#8217;s a quick and dirty way to accomplish what I needed. If anyone has a better method, I&#8217;m open to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/arrayshift-in-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>LinqToWMI Project</title>
		<link>http://www.jeremyprivett.com/blog/archives/linqtowmi-project/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/linqtowmi-project/#comments</comments>
		<pubDate>Sat, 02 Aug 2008 16:49:26 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[General Ramblings]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[WMI]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=264</guid>
		<description><![CDATA[As classes and consulting work at Omega Vortex keep pushing me more and more into .NET development, I thought it would be a good time as any to try to start learning new things and try to keep my mind working on this stuff. I decided to start looking for an Open Source project that [...]]]></description>
			<content:encoded><![CDATA[<p>As classes and consulting work at <a href="http://www.omegavortex.net" target="_blank">Omega Vortex</a> keep pushing me more and more into .NET development, I thought it would be a good time as any to try to start learning new things and try to keep my mind working on this stuff. I decided to start looking for an Open Source project that I could contribute to.</p>
<p>After noticing <a href="http://twitter.com/kevindente/statuses/865491896" target="_blank">someone on Twitter</a> mention a <a href="http://www.codeplex.com/linq2wmi" target="_blank">LINQ to WMI project</a>, it seemed like the perfect fit. LINQ (Language-Integrated Query) is something I&#8217;m not <em>too</em> familiar with and want to learn. While I&#8217;m somewhat familiar with WMI (Windows Management Instrumentation), <strong>it&#8217;s huge</strong>. There&#8217;s still plenty left to be learned about it.</p>
<p>I&#8217;ve become a developer on the <a href="http://www.codeplex.com/linq2wmi" target="_blank">LinqToWMI</a> project at <a href="http://www.codeplex.com" target="_blank">Microsoft&#8217;s CodePlex</a> and I&#8217;ve already made two major updates for those who are interested. One of which is the ability to generate &#8220;Commonly Used&#8221; WMI classes instead of just generating the ones you need one at a time. The next is a major speed enhancing change on the ClassGenerator.</p>
<p>It came to my attention while testing the project that it would crash with a NullReferenceException if there were no instances available of the class you wanted to generate. (Example: It would crash when trying to generate a Win32_FloppyDrive class. My laptop has no floppy drive.) In re-working the generator to not use an instance to generate code from, we gained a pretty huge speed boost from not having to search for an instance. Before, it took about 4 or 5 seconds to generate around 15 classes. Now it takes a fraction of a second.</p>
<p>If you&#8217;re needing to use the WMI on a project and want an easy way to query it, give this project a shot. If you think it&#8217;s good, help us out by contributing patches or bug reports so we can make the project even better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/linqtowmi-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Release Dates are Evil</title>
		<link>http://www.jeremyprivett.com/blog/archives/release-dates-are-evil/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/release-dates-are-evil/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 00:00:04 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Omega Vortex]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=260</guid>
		<description><![CDATA[Even vague ones &#8230; and I mean really vague.
Quite a while ago, Omega Vortex adopted a policy that we would refrain from announcing specific release dates. We won&#8217;t even narrow it down to a month for you. There&#8217;s quite a few reasons that we do this.
We&#8217;re a startup that&#8217;s bootstrapping from consulting work. At any [...]]]></description>
			<content:encoded><![CDATA[<p>Even vague ones &#8230; and I mean <em>really vague</em>.</p>
<p>Quite a while ago, Omega Vortex adopted a policy that we would refrain from announcing specific release dates. We won&#8217;t even narrow it down to a month for you. There&#8217;s quite a few reasons that we do this.</p>
<p>We&#8217;re a startup that&#8217;s bootstrapping from consulting work. At any given time, said consulting work currently takes priority over all other things, because we have to make money in order to pay bills and keep developers paid. That&#8217;s all fine and dandy, but while we&#8217;re having to focus so much on consulting, software isn&#8217;t being written. This is eating us like the plague. We&#8217;re presently amazingly profitable, <em>but not in the way that we want to be</em>. No matter how good our scheduling is, it doesn&#8217;t make a difference because we&#8217;re constantly having to drop everything to invest time in a new consulting project.</p>
<p>On the plus side, we&#8217;re about to simultaneously release a new product that hasn&#8217;t been announced yet along with updates to two other products that you may already be familiar with. No matter how close we get to that day, we&#8217;re not going to tell you when <em>that day</em> will be, in advance. All of our releases are marked by quarters. Any one year is divided up into three month quarters. Q1 is January &#8211; March, Q2 is April &#8211; June, Q3 is July &#8211; September, and Q4 is October &#8211; December. That means that when we mark a release as Q3 of 2008, we could potentially release that product at <em>any point within those three months</em>. If we&#8217;re expecting to release in September, we&#8217;ll actually really say Q4 so that we have <em>three extra months worth of time buffer</em> to use in the even that something goes wrong. If we happen to meet our goal of September, we just managed to release <em>an entire month early</em>.</p>
<p>Three months of buffer is a pretty decent amount of time. Sadly, because of time constraints with our consulting work, we&#8217;re still having trouble meeting those release dates. <a href="http://www.omegavortex.net/software/omegaverge.php" target="_blank">OmegaVerge</a> has suffered considerably because of this and it has allowed competitors to get a jump on us. (Speaking of OmegaVerge, I&#8217;d like to give a shoutout to <a href="http://www.tachyondecay.net" target="_blank">Ben Babcock</a> who actually managed to help me with a SimpleXML issue by letting me help him with a SimpleXML issue. We now have type-safety/inference of IP.Converge methods in OmegaVerge since we solved that issue, instead of having to pass around SimpleXMLElement objects. Thanks, Ben.)</p>
<p>If you&#8217;re a software development shop and, like us, you can&#8217;t dedicate 100% of your time to software development, don&#8217;t announce release dates. Even vague ones. Surprise people. People get incredibly antsy / angry when you don&#8217;t meet release dates.</p>
<p>Oh, and if you have a historic trend of lack of ability to execute, don&#8217;t try to say things like &#8220;this summer&#8221; or &#8220;next month&#8221; &#8230; I&#8217;m guilty of this too, but this is a practice that really needs to stop. I&#8217;ve seen so many projects say &#8220;next month&#8221; and it take <em>so much longer</em> than that. Two in particular have me facepalming, right now &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/release-dates-are-evil/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Imbeciles in the Wild</title>
		<link>http://www.jeremyprivett.com/blog/archives/imbeciles-in-the-wild/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/imbeciles-in-the-wild/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 21:07:47 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=259</guid>
		<description><![CDATA[Most of your [code] comments are unnecessary.
Don't ever tell a developer that. Especially, one that is learning. Code commenting is one of biggest components of code maintainability and there are simply not enough developers that do it enough. The thought that someone really would instill the thought that comments are unnecessary really peeves me. I've [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Most of your [code] comments are unnecessary.</p></blockquote>
<p>Don't <em>ever</em> tell a developer that. Especially, one that is learning. Code commenting is one of biggest components of code maintainability and there are simply not enough developers that do it enough. The thought that someone <em>really</em> would instill the thought that comments are unnecessary really peeves me. I've had so many problems over the years that could've been solved if the programmer before me had just commented his stuff properly.</p>
<p>Don't be this idiot.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/imbeciles-in-the-wild/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How Not to Apply for a Job</title>
		<link>http://www.jeremyprivett.com/blog/archives/how-not-to-apply-for-a-job/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/how-not-to-apply-for-a-job/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 22:32:14 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Omega Vortex]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=258</guid>
		<description><![CDATA[This is an interesting position for me. Before recently, Omega Vortex has just been a small group of close individuals who all knew each other and have worked together before. Now that we&#8217;re expanding and I&#8217;m having to actually interview and hire people, I&#8217;ve been able to experience what it&#8217;s like to be on the [...]]]></description>
			<content:encoded><![CDATA[<p>This is an interesting position for me. Before recently, Omega Vortex has just been a small group of close individuals who all knew each other and have worked together before. Now that we&#8217;re expanding and I&#8217;m having to actually interview and hire people, I&#8217;ve been able to experience what it&#8217;s like to be on the opposite side of the process. I&#8217;m used to being the interviewee or the person applying and sending in a resume, not the guy interviewing or receiving the resume. I don&#8217;t claim to be an expert on interviewing people or sifting resumes, but here&#8217;s my list of things that&#8217;ll immediately get your resume tossed out of the pile. <span id="more-258"></span></p>
<h3>Not Including Basic Information</h3>
<p>Like, for one, your <em>name</em>. I had a resume show up in my inbox the other day that didn&#8217;t have a name to go with it. So, I figured I could get the name out of the resume itself in order to respond. I couldn&#8217;t find the person&#8217;s name to save my life. It&#8217;s really not smart to send in a resume without basic contact details so I can get in touch with you. If you don&#8217;t include something as basic as your name, I&#8217;m going to feel dumb trying to contact you without knowing it. The likelihood of me contacting you if I feel dumb about it? Pretty low. To the tune of 0%.</p>
<h3>Not Knowing the Basics (Or Lying)</h3>
<p>I got a &#8220;spectacular&#8221; resume from someone who had (claimed to have) been working in this industry for 10+ years. Bachelor&#8217;s Degree in Computer Science from a very prestigious college and a laundry list of work experience that went on for a few pages &#8230;</p>
<p>First of all, I don&#8217;t need a seven page resume. That sets off some alarms in my head when I open up a huge document that&#8217;s supposed to be a resume. You&#8217;re either full of yourself or lying. I don&#8217;t need to know where you were working in 1991 if it isn&#8217;t one of your three or four most recent jobs. For this particular person, I&#8217;m inclined to say that they were lying. Against my better judgement, I decided to interview.</p>
<p>As part of my interview process, I like to ask some really basic questions. I do this for two reasons. One, it relieves tension. People like to get things right. As they get more things right, they become more comfortable and we can move on to more complicated concepts. For two, I know to stop the interview immediately if the person misses <em>any</em> of these questions &#8230; This particular person happened to miss all but two of my questions. These questions are some that my younger programming buddies who are still in High School would laugh at this person for not being able to answer. How can you have 10 years of experience and not know dead-simple concepts?</p>
<h3>Massive Font to Extend an Otherwise Short Resume</h3>
<p>Please, please don&#8217;t try to hide the fact that in Arial 12pt your resume is only 1 page. I just finished looking through a resume whose font was literally set to 23pt. That&#8217;s <strong><em>huge</em></strong>! And quite unnecessary. I&#8217;m not measuring to see who has the longest, but if your font is so big that I can only fit less than 1/8 of what would be the first page on my screen, I&#8217;m probably just going to delete it.</p>
<h3>Not Knowing English</h3>
<p>First off, don&#8217;t take this the wrong way. I&#8217;m a fan of equal opportunity, but you&#8217;ve got to meet our requirements. One of our requirements is &#8220;an excellent command of written and spoken English&#8221;. I&#8217;d just as quickly trash a resume from an white American man as I would from anyone else for not meeting that requirement.</p>
<h3>Telling Me Too Much</h3>
<p>Piggy backing somewhat on one of the other points, don&#8217;t tell me too much. If I&#8217;m looking for a PHP/MySQL developer, I want to know how much experience you have in those two things and maybe some other closely-related technologies. I don&#8217;t want to know or care to know about how much experience you have in Adobe Photoshop, MS Access, ILE RPG, CL400/CLLE, etc. Yes, all of those were from an actual resume. <em>I don&#8217;t care</em>. Don&#8217;t tell me all that crap, it&#8217;s not related to the position you&#8217;re applying for.</p>
<h3>Lying by Omission</h3>
<p>Or, concealing the fact that you don&#8217;t have a college degree by using phrases like &#8220;Attended X university&#8221;. Again, <em>I don&#8217;t care</em>, but don&#8217;t try to make me believe something by covering it up. People drop out of college all the time for various different reasons. Just couldn&#8217;t cut it? Ran out of money? Decide college wasn&#8217;t for you? That&#8217;s your business. I&#8217;m still in college. I haven&#8217;t finished my Bachelor&#8217;s, yet. I&#8217;m really not going to hold that against you. Some of the best programmers I know don&#8217;t have college degrees. Some of the worst programmers I know do. Interesting demographic. I&#8217;m more of a believer in cold, hard experience.</p>
<h3>Telling Me Sensitive Information</h3>
<p>If I&#8217;m not allowed to ask, I don&#8217;t want to know at least until I give you a yay or a nay. Don&#8217;t tell me your gender (if it&#8217;s obvious, I&#8217;ll figure it out), don&#8217;t tell me your sexual orientation, don&#8217;t tell me your age, etc. If you put that kind of crap on your resume, that puts employers in a bad position, because we&#8217;re not allowed to make decisions based on that information. That requires us to <em>consciously ignore it</em>. If it&#8217;s there, I&#8217;m not even going to bother. It&#8217;s not because you&#8217;re white, black, asian, mexican, 85, 13, gay, bi, married, divorce, have 37 kids, a woman, or a paraplegic. It&#8217;s because I don&#8217;t want to touch something that could put me in a bad position, because you gave me information that I&#8217;m not allowed to judge you on. So, I&#8217;m just not going to judge you at all and act like I never saw your resume.</p>
<h3>Not Attaching your Resume</h3>
<p>This is a good one. I&#8217;ve excused it a couple times and contacted people to have them send it to me, but I&#8217;m slowly starting to not give it a second thought. Make sure you&#8217;re thorough enough to remember to actually attach your resume to an e-mail when you send it off.</p>
<p>That&#8217;s just a few things. As I come across more, I&#8217;ll probably post a part two. You never know what people are going to do, after all &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/how-not-to-apply-for-a-job/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Throw Away Code</title>
		<link>http://www.jeremyprivett.com/blog/archives/throw-away-code/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/throw-away-code/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 18:35:26 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=257</guid>
		<description><![CDATA[I was reading today and came across something that seemed contradictory to what I&#8217;ve learned over the years. At the same time, it just made a lot of sense.
Programmers don&#8217;t throw away code enough. When faced with a hunk of code someone else wrote, which doesn&#8217;t appear to be quite right, or is misbehaving, the [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading today and came across something that seemed contradictory to what I&#8217;ve learned over the years. At the same time, it just made a lot of sense.</p>
<blockquote><p>Programmers don&#8217;t throw away code enough. When faced with a hunk of code someone else wrote, which doesn&#8217;t appear to be quite right, or is misbehaving, the proper action is to figure out what it&#8217;s supposed to do, and its interface, and then scrap it and start from scratch. (I&#8217;m not talking about rewriting whole programs here, just sections.) Instead, people try to handle the corner cases, or hunt down where the leak is. Just stop, think for a little while, get the structure well posed, then write that.</p></blockquote>
<p>We were bit by this problem at OV recently. Instead of trashing pieces that were there in order to make them work, and writing them based on the original specification, we attempted to bend them into place in order to &#8220;save time&#8221;. Needless to say, that didn&#8217;t work out so well. Not only did we not save time, we used up too much.</p>
<p>Next time, I think it would be more appropriate to go with my gut feeling. Instead of trying to bend the immalleable, we should strive to replace the pieces. Sometimes code is just so bad that it&#8217;s not smart, safe, or sane to leave it in place.</p>
<p>I&#8217;m certainly losing my sanity, about now.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/throw-away-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Not Logic</title>
		<link>http://www.jeremyprivett.com/blog/archives/not-logic/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/not-logic/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 20:00:39 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[aside]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=252</guid>
		<description><![CDATA[Any code that relies strictly on assumptions is not logic. In order for code to work properly, you need documented truths. In the event that you don&#8217;t have documented truths, you create them.
]]></description>
			<content:encoded><![CDATA[<p>Any code that relies strictly on assumptions is not logic. In order for code to work properly, you need documented truths. In the event that you don&#8217;t have documented truths, you create them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/not-logic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five Rules of Outsourcing</title>
		<link>http://www.jeremyprivett.com/blog/archives/five-rules-of-outsourcing/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/five-rules-of-outsourcing/#comments</comments>
		<pubDate>Thu, 08 May 2008 17:12:35 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Omega Vortex]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/blog/?p=242</guid>
		<description><![CDATA[A recent client of Omega Vortex has been hit by the pains of outsourcing. Now, I&#8217;m sure there are a ton of really good developers out in India &#8230; somewhere. Sadly, a lot of the people I have talked to have had nothing but negative things to say about consulting companies based out in India. [...]]]></description>
			<content:encoded><![CDATA[<p>A recent client of Omega Vortex has been hit by the pains of outsourcing. Now, I&#8217;m sure there are a ton of really good developers out in India &#8230; <em>somewhere</em>. Sadly, a lot of the people I have talked to have had nothing but negative things to say about consulting companies based out in India. It&#8217;s certainly a lot cheaper than development shops here in the states, but it&#8217;s also a lot riskier. So, here&#8217;s my five rules of outsourcing to make sure that you don&#8217;t get burned the next time you&#8217;re looking for someone to help you complete a project. </p>
<p><span id="more-242"></span></p>
<h3>1. Hire at least one professional</h3>
<p>This point is crucial and will save you a lot of time and money. If you have at least one person on your in-house staff who can walk the walk and talk the talk, you&#8217;ve got someone within your organization who can look over the work that&#8217;s being done. This is <em>very important</em> for a number of different reasons. First, you&#8217;ve hired this guy. You know what he can do, you&#8217;ve seen his work, you&#8217;ve talked to his references. He must have done something right in order to stand out from the pile of resumes you received for the position. Make sure this person knows everything there is to know about the project that&#8217;s being worked on. He needs to be the point of contact for the consultants, because he&#8217;ll immediately be able to tell you when something isn&#8217;t right. This person&#8217;s salary will pay for itself on numerous occasions, especially if you do a lot of outsourcing.</p>
<h3>2. Ask Questions, Get Technical</h3>
<p>This is another place where your professional is going to help out a lot, if you don&#8217;t know enough about the technology. If the company you&#8217;re working with shows any signs that they don&#8217;t know what they&#8217;re taking about, run. Fast. If you don&#8217;t, they&#8217;ll suck you in under the premise that they know exactly what they&#8217;re doing and waste your time and money while they get little to nothing actually accomplished. Which brings me to my next point &#8230;</p>
<h3>3. Transparency</h3>
<p>Transparency is a huge issue. At <a href="http://www.omegavortex.net" target="_blank">Omega Vortex</a>, when our clients&#8217; don&#8217;t come with their own infrastructure, we bring them into ours so that everybody&#8217;s productivity is increased. If our clients don&#8217;t have their own concept of source control, we&#8217;ll place their code in our repository. This is complimented by our build system which will produce nightlies of the work we&#8217;ve done and post it directly to a specified location on our development server. Once the project gets farther along, we&#8217;ll enable continuous integration so that each check-in gets reflected in our development copy. This way, the client can always be sure they&#8217;re looking at the most up-to-date code.</p>
<h3>4. Look for value</h3>
<p>Unlike some places, we&#8217;re not interested in taking your money, doing the work, and sending you on your way. We like to form lasting relationships so that you&#8217;ll consider doing business with us again or referring people you know who need work done. A way that we add value to our services is to help them in ways that we believe they need to be helped. Bad code is bad code, there&#8217;s no two ways about that. When we can, we don&#8217;t throw away everything and start over, though. To some degree, the code works, and that&#8217;s more progress than what we would have if we just started all over. What we don&#8217;t like is when our clients get burned and come to us with code that is littered with security vulnerabilities. I mean <em>brain-dead obvious</em> security vulnerabilities. Like, say &#8230; Taking data directly out of $_REQUEST and feeding it directly into a SQL Query. In cases like this, we like to do a very light security audit. This isn&#8217;t anything extensive, just something we use to identify the extremely obvious stuff, and bring it to the client&#8217;s attention.</p>
<h3>5. References &#8211; Recommendations &#8211; Required</h3>
<p>This is a huge one. This is hard for me to say, because we were new once too (we still kinda are), but taking a chance on a company with no references or recommendations from other people is dangerous. For Omega Vortex, I can provide you with professional references of people I&#8217;ve worked with in the past and know me and how I do things. We also have a few clients that have spoken highly of us. Just make sure you get references and recommendations from <em>real people</em>. Testimonials on websites can be faked. While they&#8217;re a decent way to tell what a company&#8217;s done at a glance, when you can you should talk to people who have worked with the company in the past. Ask the company to provide formal references. Remember, you&#8217;re about to spend what could be a good chunk of time and money with this company. Would you hire a random person for your company without references?</p>
<p>Hopefully, this list will help you make a more informed decision about the next company you decide to do a project with. Even if we&#8217;re not right for you, we certainly don&#8217;t want you picking someone else who&#8217;s even more wrong for you. While this is obviously tailored toward programming, I&#8217;m sure you could adapt this list some for other industries, too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/five-rules-of-outsourcing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web 2.0 is vulnerable to attack</title>
		<link>http://www.jeremyprivett.com/blog/archives/web-20-is-vulnerable-to-attack/</link>
		<comments>http://www.jeremyprivett.com/blog/archives/web-20-is-vulnerable-to-attack/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 19:05:21 +0000</pubDate>
		<dc:creator>Jeremy</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.jeremyprivett.com/archives/web-20-is-vulnerable-to-attack/</guid>
		<description><![CDATA[I found this to be an interesting read. Apparently, JavaScript frameworks that are using JSON to handle their XHR / AJAX are presently vulnerable to “JavaScript Hijacking” – Vulnerable frameworks include Microsoft ASP.NET AJAX (aka. Atlas), XAJAX and Google Web Toolkit, Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery, Yahoo! UI, Rico, and MochiKit.
Take a look.
]]></description>
			<content:encoded><![CDATA[<p>I found this to be an interesting read. Apparently, JavaScript frameworks that are using JSON to handle their XHR / AJAX are presently vulnerable to “JavaScript Hijacking” – Vulnerable frameworks include Microsoft ASP.NET AJAX (aka. Atlas), XAJAX and Google Web Toolkit, Prototype, Script.aculo.us, Dojo, Moo.fx, jQuery, Yahoo! UI, Rico, and MochiKit.</p>
<p><a href="http://www.cbronline.com/article_news.asp?guid=484BC88B-630F-4E74-94E9-8D89DD0E6606">Take a look</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jeremyprivett.com/blog/archives/web-20-is-vulnerable-to-attack/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
