<?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>while coding &#187; rants</title>
	<atom:link href="http://www.youell.com/matt/writing/?cat=14&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.youell.com/matt/writing</link>
	<description>simplify</description>
	<lastBuildDate>Wed, 31 Oct 2018 04:08:22 +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>The One Where I Rant About Data</title>
		<link>http://www.youell.com/matt/writing/?p=556</link>
		<comments>http://www.youell.com/matt/writing/?p=556#comments</comments>
		<pubDate>Sun, 27 Sep 2009 19:58:13 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=556</guid>
		<description><![CDATA[I&#8217;ll come right out and say this: Data is imaginary. It doesn&#8217;t exist. So let&#8217;s not pretend that it does.
Well, I guess we have to pretend that it does to some extent. But we certainly don&#8217;t have to pretend that it exists in some absolute, immutable way.
Take files, for example. What are files, really? If [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll come right out and say this: Data is imaginary. It doesn&#8217;t exist. So let&#8217;s not pretend that it does.</p>
<p>Well, I guess we have to pretend that it does to some extent. But we certainly don&#8217;t have to pretend that it exists in some absolute, immutable way.</p>
<p>Take files, for example. What are files, really? If you think about this long and hard enough you realize no, files aren&#8217;t just chains of bytes. Files are flattened data structures. And more than that, they are flattened out <em>ideas</em>. But let&#8217;s stick with the data structure thing. Every document, every file, everything ever has some kind of structure.</p>
<p>Files haven&#8217;t always existed in computers. There was a time with computers and <strong>gasp</strong>, no files. The file metaphor appeared fairly early in computing. So why do we stick with that same metaphor now? </p>
<p>Files are crap. They&#8217;ve forced us to flatten out our data. That business plan that you&#8217;re writing in 15 parts, with three sub parts each? It really wants to be a tree with 15 nodes, each with 3 nodes. Or something. It most certainly does NOT want to be flattened down into a file, where every part of the file is on the same footing with every other part of the file. That just doesn&#8217;t make sense. </p>
<p>So here we are, as programmers, and we have all of this data and structure floating around in our programs, and we have to store things in a file. Blech! How are you going to store a graph (object graph, data tree, what have you) in a flat file and have that make any damned sense at all?</p>
<p>You&#8217;re not. No, do NOT say XML! That is not the answer either. Don&#8217;t get me wrong&#8230; XML heads in the right direction, but it&#8217;s still flattening things out terribly. And it&#8217;s also kind of stupid. To be fair that&#8217;s mostly an implementation detail.</p>
<p>I know, I know, you want me to explain why XML is stupid, because otherwise I&#8217;m just making spurious accusations, and programmers hate that shit. Or at least pretend to, so they can poke at other programmers when they disagree with them. Whatever. I hold these truths to be self-evident, that files are fucking bullshit and that cramming data into flat files is a god damned waste of time. And yes, I mean &#8220;god damned&#8221;. Even if you don&#8217;t believe in a God or a god or an FSM or what have you, it&#8217;s clear that we only have so much time on this spinning ball of mud and how much of it will we spend bruising, battering, and smearing out our data to fit into some ridiculous flat file system?</p>
<p>Thank god for relational databases, right?</p>
<p>Fuck you. Have you listened to a god damned word I&#8217;ve been saying? I&#8217;m talking about taking our data, packing it up into ridiculous shapes and sizes, spackling on meta data to make it all make sense, and then shoving it off to some other place to live. Does that in any way make you think that relational databases are getting off the hook here? Fuck-to-the-N-O. What&#8217;s that? I have to mash my data up into chunks that fit into little square tables? And then if I want my data to connect to other data I have to create more little meta tables to show how everything connects? And it&#8217;s all ok, because there&#8217;s MATH behind it all, right? God damned MATH will save the fucking day.</p>
<p>No.</p>
<p>Maybe you&#8217;re catching on now. Now you&#8217;re thinking about those nifty key/value databases that have come back around lately, aren&#8217;t you? And the document stores? The hierarchical databases? Surely something here will save the day, right? Rubbish. But maybe. I don&#8217;t know.</p>
<p>Here&#8217;s what I know: I have data, and I want to look at my data my way. You have data, and some of it is probably some of the same data that I have. And that&#8217;s cool&#8230; I remember kindergarten. I like to share. But why in the hell do I have to share with you on YOUR terms? Don&#8217;t get me wrong, I don&#8217;t see why you should have to share with me on my terms either. Things should be flexible and bendy and still make sense. Is that too much to ask? </p>
<p>Probably, yes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=556</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Corollary to the Joel Test</title>
		<link>http://www.youell.com/matt/writing/?p=535</link>
		<comments>http://www.youell.com/matt/writing/?p=535#comments</comments>
		<pubDate>Thu, 10 Sep 2009 20:57:03 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=535</guid>
		<description><![CDATA[Everyone knows the Joel Test. I think it gets used mostly for whining about how one&#8217;s organization isn&#8217;t &#8220;doing it right&#8221;, but ostensibly it is a way to measure your software development capability. You could think of it as the CMM writ small. 
I&#8217;ve worked in quite a few shops over the years and I [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows the <a href="http://www.joelonsoftware.com/articles/fog0000000043.html">Joel Test</a>. I think it gets used mostly for whining about how one&#8217;s organization isn&#8217;t &#8220;doing it right&#8221;, but ostensibly it is a way to measure your software development capability. You could think of it as the <a href="http://en.wikipedia.org/wiki/Capability_Maturity_Model">CMM</a> writ small. </p>
<p>I&#8217;ve worked in quite a few shops over the years and I doubt any of them &#8211; including the mega corps &#8211; have scored higher than a 7. This leads me to suspect that damned few organizations actually score 11 or better, which Joel considers the minimum acceptable score. </p>
<p>Joel&#8217;s high standards aside, the strength of the Joel Test isn&#8217;t in the questions, it&#8217;s in the areas the questions cover. With 12 quick questions you can get a rough idea of how an outsider would view your competence in many areas of software development. Very handy.</p>
<p>The downside of the Joel Test &#8211; and any metric of anything, ever &#8211; is that over time people align themselves to the metric, instead of the <em>spirit of the metric</em>. To put it another way, the Joel Test has some leaks.</p>
<p>Here&#8217;s my corollary to the Joel Test. Just like the original, each is a simple yes/no question. The difference is that for each &#8220;yes&#8221; on my list, you subtract one from your Joel Score. </p>
<blockquote>
<ol>
<li>Do you use more than one kind of version control system?</li>
<li>Is there anyone on your team who can&#8217;t build in one step?</li>
<li>Are specs developed without programmer input?</li>
<li>Do you write new code the day before a deadline?</li>
<li>Does your team regularly work more than 40 hour weeks?</li>
</ol>
</blockquote>
<p>How did you do? Did you go negative? I hope not, but I bet a lot of shops would.</p>
<p>Here&#8217;s my explanation for each item:</p>
<h4>1. Do you use more than one kind of version control system?</h4>
<p>Do you have several older projects in cvs but everything new is in Git? Why? Don&#8217;t get me wrong &#8211; there could be a damned good reason that is tied directly to your company&#8217;s bottom line. But I kind of doubt it. </p>
<p>Certainly your team is full of smart people that can manage more than one vcs. That isn&#8217;t the point. The point is that it is hard to have a unified approach to problems that <strong>everyone</strong> on the team uses when you&#8217;re all using different tools. This also creates a <a href="http://en.wikipedia.org/wiki/Bus_factor">bus factor</a> problem when Bob &#8211; the main dev on your legacy Zapruder project &#8211; goes on vacation. After all, he&#8217;s the last one on the team that uses VSS regularly and no one can figure out what the hell brand of crack he was smoking before he left. And those Zapruder people are getting pissed!</p>
<h4>2. Is there anyone on your team who can&#8217;t build in one step?</h4>
<p>This goes along with the idea of everyone using the same tools. Can everyone deploy the latest rev of the Zapruder project to the dev server with one click? Including off-site developers? Your team in India? That one guy in Fresno who works remotely? Your graphic designer who wants to update some templates and see the results?</p>
<h4>3. Are specs developed without programmer input?</h4>
<p>When you leave a programmer out of the specification process, you get airbags on guard rails.</p>
<h4>4. Do you write new code the day before a deadline?</h4>
<p>I maintain that at least 80% of deadlines are macho bullshit, usually generated upstream from the software development process. Even so, deadlines happen. What you don&#8217;t want to find yourself doing is writing code for new features the day before a deadline. That&#8217;s just not responsible development. Notice how I emphasize the word &#8220;<strong>new</strong>&#8220;. Certainly if you find a bug during your final testing, you&#8217;re going to fix it. Duh. But if you&#8217;re still cranking out features the day before a deadline, how in the hell are you going to test what you&#8217;ve written? The honest answer is that you&#8217;re not. Not in any meaningful way. You&#8217;re going to cross your fingers and hope. </p>
<h4>5. Does your team regularly work more than 40 hour weeks?</h4>
<p>This one is straight out of the Agile playbook and revolves around <a href="http://blog.hasmanythrough.com/2009/9/3/circle-of-death">technical debt</a>. It&#8217;s also a responsibility thing. People can only do so much work in a given amount of time. That&#8217;s just a fact of life, despite what the stereotypical programmer &#8220;caffeine == code&#8221; culture says. (More macho bullshit.) There will always be special times when more work is required, but those should be exceedingly rare.</p>
<p>These questions only scratch the surface, but hopefully they plug a few leaks. (How&#8217;s that for a mixed metaphor?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=535</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Even The Awesome Clients Suck</title>
		<link>http://www.youell.com/matt/writing/?p=396</link>
		<comments>http://www.youell.com/matt/writing/?p=396#comments</comments>
		<pubDate>Thu, 28 May 2009 10:21:24 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=396</guid>
		<description><![CDATA[I know a few developers who want to go out on their own and start their own business. Once or twice I&#8217;ve been asked for advice. My first piece of advice would be to ask someone who is actually good at business!
Seriously, other than &#8220;don&#8217;t do it!&#8221;, I have very little advice. I&#8217;m still knee-deep [...]]]></description>
			<content:encoded><![CDATA[<p>I know a few developers who want to go out on their own and start their own business. Once or twice I&#8217;ve been asked for advice. My first piece of advice would be to ask someone who is actually good at business!</p>
<p>Seriously, other than &#8220;don&#8217;t do it!&#8221;, I have very little advice. I&#8217;m still knee-deep in painful lessons. Talk to me in a few years. Maybe.</p>
<p>I <strong>do</strong> have something to share with you today though. This video describes behavior that EVERY SINGLE CLIENT will pull at some point in your relationship. I&#8217;ve personally had every conversation in this video. If you&#8217;ve never had to negotiate with clients before, this video is practically psychic training. Hell, you might even want to share this video with clients just to clue them in. Or weed them out. Enjoy!</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/R2a8TRSgzZY&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/R2a8TRSgzZY&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=396</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>An Inconvenient Fat</title>
		<link>http://www.youell.com/matt/writing/?p=219</link>
		<comments>http://www.youell.com/matt/writing/?p=219#comments</comments>
		<pubDate>Tue, 24 Feb 2009 12:24:38 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[humane]]></category>
		<category><![CDATA[not good enough]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=219</guid>
		<description><![CDATA[Disclaimer: I am not a medical doctor, nutritionist, herbalist, doula, or massage therapist. I am just some guy with a blog. Consult your own medical professional and/or megacorporate lobbyist before determining what is right for you, your heart, and your arteries.
Few topics irk me more than trans fats. Trans fats (specifically artificial trans fats which [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>Disclaimer: I am not a medical doctor, nutritionist, herbalist, doula, or massage therapist. I am just some guy with a blog. Consult your own medical professional and/or megacorporate lobbyist before determining what is right for you, your heart, and your arteries.</p></blockquote>
<p>Few topics irk me more than <a href="http://en.wikipedia.org/wiki/Trans_fat">trans fats</a>. Trans fats (specifically <em>artificial</em> trans fats which are my focus in this post) are what give tasty junk food an incredible shelf life. Chances are good that if you eat fattening prepackaged foods with creaminess or super smooth texture, you&#8217;re enjoying the wonders of trans fats. Many commercially fried foods, like chicken and donuts also contain trans fats.</p>
<h3>What&#8217;s Wrong With Trans Fats?</h3>
<p>There are an overwhelming number of things to worry about in my diet every day. There&#8217;s <a href="http://en.wikipedia.org/wiki/High_fructose_corn_syrup">high fructose corn syrup</a> (HFCS) in just about everything these days. There&#8217;s even <a href="http://www.epa.gov/waterscience/fish/advice/">mercury in fish</a>. What the hell am I supposed to eat?</p>
<p>Grocery shopping in our household is difficult. We&#8217;ve had to make compromises from time to time. There are several things we don&#8217;t eat. HFCS is one we absolutely avoid. We&#8217;re less radical about other ingredients, but still shy away from prepared foods with nitrates or soy-based ingredients. If you are in the habit of looking at the ingredients while shopping, you can imagine how many items we put back on the shelf.</p>
<p>Trans fats have a special place on our no-fly list though. Unlike many other troubling ingredients in foods, trans fats accumulate in the body. For example, if I eat something with HFCS I may have a crazy sugar high but then I&#8217;m done. The HFCS is metabolized and will leave my body. (Or turn into fat on my ass, whichever.) Trans fats, however, have a hard time leaving the bloodstream and even worse, trans fat molecules like to wedge into arterial walls, contributing to <a href="http://www.nhlbi.nih.gov/health/dci/Diseases/Cad/CAD_WhatIs.html">coronary heart disease</a>.</p>
<p>This is very frustrating to me. From the time I had my own money to spend as a kid up until a few years ago, not a day passed where I wasn&#8217;t pounding trans fat crap into my pie-hole. Which means that not only was I eating poorly and packing on the pounds, I was doing direct, permanent harm to my arteries and my heart!</p>
<h3>How to Spot a Trans Fat</h3>
<p><img class="alignnone size-full wp-image-232" title="transfat" src="http://www.youell.com/matt/writing/wp-content/uploads/2009/02/transfat.gif" alt="transfat" width="288" height="154" align="center" /></p>
<p>Trans fats are delivered primarily in hydrogenated oils. Most often you&#8217;ll see the ingredient listed as &#8220;partially hydrogenated vegetable oil&#8221;, although sometimes the particular variety of oil will differ (palm, sunflower, canola, etc.). A few years back the FDA added a separate line item on the Nutrition Facts panel for trans fats. So now if you want to know if a product has trans fats you can just look at the Nutrition Facts and it will tell you. Well, sort of. See, there&#8217;s a catch.</p>
<h3>The FDA Gets Metaphysical</h3>
<p>Unfortunately the Nutrition Facts doesn&#8217;t tell the whole story. While it is true that trans fats have their own line item in the Nutrition Facts panel, it doesn&#8217;t tell the entire truth. I don&#8217;t know the full story, so I&#8217;ll try not to be judgmental of the FDA (see my disclaimer above). What I know is that the food industry was rightly concerned that no one would buy products with trans fats in them. Also, they were having a hard time eliminating trans fats from their products while retaining product consistency and shelf life. So the FDA made a compromise. Food manufacturers can claim that their food has &#8220;0g trans fats per serving&#8221; if the food has less than 0.5g of trans fats per serving. I think the FDA sees this as just a matter of rounding numbers down. As a numerate consumer it means zero != 0. Which is more than a little confusing.</p>
<p>Products can now proclaim &#8220;zero trans fats!&#8221; on the package, and what they actually mean is that their product has less than 0.5g of trans fats per serving. I&#8217;ve had several conversations over the past few years with people who tell me I&#8217;m crazy for not eating a product because the package clearly says &#8220;no trans fats&#8221;. When I point at the partially hydrogenated oil in the ingredients I just get a blank stare.</p>
<p><strong>SOYLENT GREEN IS TRANS FATS!!</strong></p>
<p style="text-align: center;"><img class="size-medium wp-image-236 aligncenter" title="soylent-green" src="http://www.youell.com/matt/writing/wp-content/uploads/2009/02/soylent-green-237x300.jpg" alt="soylent-green" width="237" height="300" /></p>
<p>Can you imagine if the FDA had an equivalent rule for ingredients that caused allergies?</p>
<blockquote><p>&#8220;0g wheat gluten!&#8221;<br />
&#8220;no peanuts&#8221;</p>
<p>&#8220;I can&#8217;t imagine why I had an allergic reaction to these chips. They said no peanuts!&#8221;.</p>
<p>&#8220;Ah, that&#8217;s no peanuts *per serving*, sir!&#8221;</p></blockquote>
<h3>Where Is the Point of Diminishing Returns?</h3>
<p>Certainly there are safe or near-safe levels of consumption for just about any bad thing. What is the safe level for trans fats? I don&#8217;t think it is 0.5g per serving. That&#8217;s just a hunch. Again, I refer you to my disclaimer above.</p>
<p>The real problem with the FDA rules for labeling is that we don&#8217;t get to find out how much trans fat is in any given product that claims to be &#8220;trans fat free&#8221;. All we are allowed to know is that the quantity is under 0.5g per serving. So it could be 0.4999g or it could be 0.0001g per serving. There is no way for the consumer to know.</p>
<h3>My Wife Thinks I&#8217;m Crazy</h3>
<p>And you may think I&#8217;m a bit crazy also. But I&#8217;m not alone. The country of <a href="http://www.msnbc.msn.com/id/15307763">Denmark</a> is crazy too. Denmark outlawed trans fats 5 years ago. Switzerland is apparently also crazy, since they followed Denmark&#8217;s lead. And now local governments around the US are starting to ban foods with trans fats. So I may be crazy, but the crazy is spreading.</p>
<h3>Let&#8217;s Zero In on the Problem</h3>
<p>In a perfect world we wouldn&#8217;t be forced to ferret out fake food from our diet. Since we have to live with fake food for now, it would be nice if we could have a system where the exact amount of artificial trans fats per serving could be stated. It would also be nice if the &#8220;zero&#8221; was returned to it&#8217;s rightful state of literally meaning &#8220;none&#8221; instead of &#8220;a little bit&#8221;. At the very least we should make food manufacturers declare &#8220;very low trans fats&#8221; instead of &#8220;zero trans fats&#8221;. Specific numbers about trans fat content would be nice too. Then we would be on the right track.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=219</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Internet Works Backwards</title>
		<link>http://www.youell.com/matt/writing/?p=171</link>
		<comments>http://www.youell.com/matt/writing/?p=171#comments</comments>
		<pubDate>Wed, 11 Feb 2009 15:00:40 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[not good enough]]></category>
		<category><![CDATA[problem solving]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=171</guid>
		<description><![CDATA[A few months ago while riding the train through downtown Portland I had a small epiphany: The Internet works backwards. I tweeted about this but didn&#8217;t explain much. I promised to blog about it and then quickly got wrapped up in other things.
This morning I stumbled across this post which comes painfully close to what [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago while riding the train through downtown Portland I had a small epiphany: The Internet works backwards. I tweeted about this but didn&#8217;t explain much. I promised to blog about it and then quickly got wrapped up in other things.</p>
<p>This morning I stumbled across <a href="http://www.editorandpublisher.com/eandp/columns/stopthepresses_display.jsp?vnu_content_id=1003940234">this post</a> which comes painfully close to what I had in mind. Painfully because it heads in the right direction and yet is still thinking in a limited, old-media way about the nature of content. </p>
<p>We punish the value creators on the Internet. We should reward those who add value to the network. Instead, the more value a site adds to the network, the more fees the site owners have to pay. </p>
<p>What if the internet worked exactly the opposite from the way it works now? Instead of charging someone like YouTube for bandwidth, carriers would indirectly pay to carry that bandwidth. Consumers would still have a flat-rate ISP subscription, with part of that money being distributed to content providers.</p>
<p>In this way, users would quite literally vote with their attention. This is not the same as your cable company deciding what channels to carry. In this scheme, bandwidth is the only commodity that carriers need concern themselves with. Specific details of content would not matter. Consumers buy bandwidth. Then they hit the sites they like. Those sites receive a portion of the money collected from consumers. This is not on an individual basis; it is aggregate. So if 20% of my ISPs bandwidth went to Youtube yesterday, so did 20% of the allocated money for that day. From Youtube&#8217;s perspective, the bandwidth is free and they make money for hosting the content that the Internet values. Ditto for Flickr, Google, Gmail, the New York Times, or any other site that provides value. </p>
<p>This scheme would work much better than micropayments, mainly because it is dirt simple. Certainly people would try to game the system, and there will always be low-value websites and services which might get some trickle of bandwidth. But over time the wrinkles would be ironed out and the sites and services that create value would be the ones that consistently earn money.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=171</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>My Kung Fu is the Best</title>
		<link>http://www.youell.com/matt/writing/?p=166</link>
		<comments>http://www.youell.com/matt/writing/?p=166#comments</comments>
		<pubDate>Wed, 04 Feb 2009 22:52:38 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[essays]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=166</guid>
		<description><![CDATA[I don&#8217;t know if it is a phase I&#8217;m going through or if I&#8217;m just starting to show my age, but I&#8217;m growing tired of meta. I spend so much time learning new things about programming that the amount of code I&#8217;m actually generating has deteriorated down to just what I&#8217;m doing for work. 
I [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know if it is a phase I&#8217;m going through or if I&#8217;m just starting to show my age, but I&#8217;m growing tired of meta. I spend so much time learning new things about programming that the amount of code I&#8217;m actually generating has deteriorated down to just what I&#8217;m doing for work. </p>
<p>I didn&#8217;t come to programming from Computer Science. I was an Electrical Engineering major who switched over to Physics and then fell into programming as a hobby which turned into a career. When I first started programming I had a very low opinion of it. I see a lot of EE types with this attitude: software is easy, and what <em>they</em> do is the hard stuff. Even back then I could see that the field of programming was a huge mental quagmire and I swore that I would not get caught up in it. Software is just there to make the hardware do stuff. My attitude was that the &#8220;how&#8221; doesn&#8217;t matter so much as long as it works.</p>
<p>Naturally that&#8217;s not what happened. I got swept up in the industry trends. I became addicted to learning what was new and cool. I was an object zealot and fanboy. Then STL. Scripting languages. ORM. Patterns. TDD. Refactoring. The past few years it&#8217;s been functional and logic programming. And that&#8217;s all great. I&#8217;ve learned a lot and had a lot of fun. But sometimes I wonder if I had just kept my head down and coded more instead of trending more, where I would be. I&#8217;m not talking about ignorance here, just pragmatism. There is a balance between the two and I wonder how far off the mark I am, or if I&#8217;m off the mark at all.</p>
<p>What I&#8217;m growing increasingly intolerant of is zealotry and opinionism. Both of which are almost inseparable from computer programmers. The worst is when I feel it from within. When someone shit-talks the tools I use to do my job, I get a little tight in the chest. And why? Why the hell should I? If I&#8217;m getting my work done the best way I know how and the people who use my software are happy, then what is the problem? The truth is, there isn&#8217;t a problem.</p>
<p>Michelangelo is said to have seen sculpting not as chiseling out an image from stone, but as releasing the sculpture that was already in the stone. That is such a powerful idea because it means that there are an unlimited number of sculptures in that stone. No two sculptors would set the same sculpture free. Programming is like that. Software is so very abstract, and the limitations on what we do are relatively few compared to other disciplines. Anything that works and makes sense to the programmer is probably not wrong in a fundamental sense. Certainly issues of specific application, maintenance and communication can be discussed, but what I&#8217;m getting at is that my methodology or toolset is not dumb just because it isn&#8217;t the one you use.</p>
<p>&#8220;The Tao that can be told is not the eternal Tao.&#8221; </p>
<p>That&#8217;s a nice way of saying that you do <strong>not</strong> have all of the answers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=166</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A layoff is not the time to become a freelancer</title>
		<link>http://www.youell.com/matt/writing/?p=140</link>
		<comments>http://www.youell.com/matt/writing/?p=140#comments</comments>
		<pubDate>Sat, 24 Jan 2009 00:50:24 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[essays]]></category>
		<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=140</guid>
		<description><![CDATA[I&#8217;m starting to see a trend amid the many layoffs happening right now: Those who have been laid off are being encouraged to freelance. Speaking as a freelancer myself, I can&#8217;t think of worse advice. Everyone&#8217;s situation is different, but the vast majority of people simply are not prepared. It&#8217;s not that most people aren&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m starting to see a trend amid the many layoffs happening right now: Those who have been laid off are being encouraged to freelance. Speaking as a freelancer myself, I can&#8217;t think of worse advice. Everyone&#8217;s situation is different, but the vast majority of people simply are not prepared. It&#8217;s not that most people aren&#8217;t capable: I think most people can handle it in the long run. But the &#8220;long run&#8221; is just that: long! Learning how to work for yourself takes time. I&#8217;ve been at this for many years now and I&#8217;m still learning.</p>
<p>If you got laid off, especially if you have responsibilities, kids to feed, bills to pay, etc. then what you need most is a job. Period. You need cash coming in the door. Taking three or six months to start a business, and burning what&#8217;s left of your savings or 401k in the process, is <strong>not</strong> what you want to be doing right now. Better to spend that time, energy, and money on job hunting and interviewing like crazy.</p>
<p>You may think my discouragement is driven by the fact that I&#8217;m a freelancer. Who needs more competition, right? But that&#8217;s largely irrelevant. There is a big world of work out there. I have very little concern about competition. My biggest challenges day-to-day are ones of my own character. Competition is very far down the list. </p>
<p>I fear that if too many of those who have been laid off listen to the articles, authors, and talking heads out there, in six months or a year we&#8217;ll have a situation that is even worse, as we have a rash of would-be small businesses collapse. And that&#8217;s not good for anyone.</p>
<p>Certainly there are those among you who have what it takes. And you won&#8217;t know if you don&#8217;t try. I can certainly understand that. I would simply suggest that you&#8217;re not directing your own destiny much if you&#8217;re letting a layoff tell you when you can and can&#8217;t start working for yourself. Better to have a strong plan that you can execute in 6 months than to learn to juggle in the batting cages now.</p>
<p>If you absolutely must do the freelance thing, here&#8217;s a small list of advice, for what it&#8217;s worth:</p>
<p><strong>Cut your costs mercilessly.</strong><br />
Cable? Gone. Car? Sell it, ride the bus. Starbucks? $4 coffee? Are you f**king kidding me? You get the idea.</p>
<p><strong>Get Clients (duh)</strong><br />
If you&#8217;re at risk of layoffs, get one or more clients before you quit or lose your job. This is absolutely non-negotiable. If you don&#8217;t do it, you&#8217;re not serious. And if you&#8217;ve already been laid off, set a time limit, perhaps a month. No more than that. And if it doesn&#8217;t work, get back on the job hunt. Don&#8217;t dick around. Trust me. I have dicked around. It isn&#8217;t pretty.</p>
<p><strong>Work part time.</strong><br />
There have been layoffs, but there is still work to be done out there. It might not be glamorous but if money is coming in, who cares?</p>
<p><strong>Work as a temp or contractor.</strong><br />
I&#8217;ve done this myself with great success, alternating periods of freelance work with periods of work as a contractor. (During layoffs contractors are usually the first to go. Later &#8211; when things even out &#8211; contractors are some of the first hires as fiscally-cautious companies need labor.)</p>
<p><strong>Have a specific niche.</strong><br />
Telling people you make websites for independent car dealerships is a lot more meaningful than telling people that you make web pages or that you&#8217;re a programmer, designer, etc. Prospective clients tend to trust niche players over generalists. </p>
<p><strong>Be awesome.</strong><br />
Seriously. You may have slumped a little bit while you were sitting in your gray cube in the middle of gray cubetopia. Now everything you do reflects directly on you. That directly impacts future work and referrals. So you&#8217;d better be good at what you do.</p>
<p>That&#8217;s all I&#8217;ve got. If I knew more I would probably be too busy to write a post like this!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=140</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hey Twitter, Please charge me $5 a month.</title>
		<link>http://www.youell.com/matt/writing/?p=61</link>
		<comments>http://www.youell.com/matt/writing/?p=61#comments</comments>
		<pubDate>Wed, 17 Dec 2008 11:24:15 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[culture]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=61</guid>
		<description><![CDATA[Dear Twitter,
Please charge me $5 a month.
At a local tech discussion here in Portland a couple of weeks ago, one of the attendees said that if Twitter started charging money, he&#8217;d move to identi.ca. His rationale was this: software is easy to change but hardware is hard to change.
That thought has stayed in my brain [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Twitter,</p>
<p>Please charge me $5 a month.</p>
<p>At a <a href="http://siliconflorist.com/2008/12/04/portland-web-innovators-portland-tech-2008-in-a-word-community/">local tech discussion</a> here in Portland a couple of weeks ago, one of the attendees said that if Twitter started charging money, he&#8217;d move to <a href="http://identi.ca/">identi.ca</a>. His rationale was this: software is easy to change but hardware is hard to change.</p>
<p>That thought has stayed in my brain for two weeks now. Is software easy to change? No. Absolutely not. That is a flawed premise. If software were easier to change than hardware, Microsoft would have crapped out a long time ago. Software being hard to change is practically the backbone of the software industry. There are entire vertical markets whose existence is predicated upon the near-impossibility of changing software.</p>
<p>As a recent example of how hard it can be to change software, just look at <a href="http://getsatisfaction.com/iwantsandy/topics/a_fork_in_the_road_an_important_announcement_about_i_want_sandy">the people who got screwed</a> by the sudden closure of <a href="http://www.iwantsandy.com/">I Want Sandy</a> and <a href="http://www.stikkit.com/">Stikkit</a>.  And that was just a pair of websites that were free and hadn&#8217;t been around forever.</p>
<p>Certainly I can point to the series of social networking sites that I&#8217;ve used and abandoned with great ease over the years: Friendster, MySpace, Ryze, LinkedIn, and Facebook. I&#8217;m sure I&#8217;m forgetting one or two. But none of those were sites that I actually relied on. I probably invested the most time in MySpace (many years ago), but even after many, many years on that site there is nothing there that I can&#8217;t do without. If MySpace burned down tonight it wouldn&#8217;t phase me at all.</p>
<p>If Twitter burned down tonight, I&#8217;d go <em>nuts</em>.</p>
<p>Twitter has this network of people that I&#8217;m plugged into. Unlike other social networks, I get genuine value every day from Twitter. Sure, I could try to replicate that network on indenti.ca. But you know what I&#8217;d end up with? A network of only the alpha-geeks who bothered to switch over to identi.ca! Well that&#8217;s fine, but only to a point. I like alpha-geeks as much as the next alpha-geek. But those aren&#8217;t the only people I want to be connected to. And I sure as hell don&#8217;t want to have to straddle services like I already do with IM.</p>
<p>I&#8217;m afraid that if Twitter doesn&#8217;t figure out a <em>good</em> (read: non-evil) way to make money, that they&#8217;ll either experience the ultimate Fail Whale (run out of cash and close) or turn to the Dark Side (and ruin Twitter). Either way, I&#8217;d be stuck without this cool network of people.</p>
<p>So, <a href="http://twitter.com/">Twitter</a>, if you&#8217;re listening (and hopefully you&#8217;re too busy improving your service to be reading crap like this), please charge me $5 a month. Trust me on this. You don&#8217;t need to do any market research here. I am a user asking you to charge me. That is a sales person&#8217;s wet dream!</p>
<p>$5 is the limit though &#8211; you can&#8217;t get away with $10 a month. That would piss off too many people and then they really would leave for indenti.ca and parts unknown. And no, you can&#8217;t charge micropayments per tweet. If you charge me 2-cents per tweet, I&#8217;ll probably leave too. Pay-per-tweet is a stupid idea and I wish people would quit suggesting it. You don&#8217;t want to punish the people who create value on Twitter. A flat-fee is simple and fair.</p>
<p>Certainly let people have a free account if they want to receive Tweets. And let them DM their friends from their free account. Why not? That would be great. But please charge those of us who want to talk. Get some cash in your door before you run out of whatever fickle VC steam you&#8217;ve got and we lose you entirely. In exchange, as a paid subscriber I will receive no ads in my Twitter stream. (Or anywhere else!) And you&#8217;ll make twit-spam nearly impossible, since other users won&#8217;t be able to talk to me without my permission. You&#8217;ll effectively cut off the MLM and Get-Rich-Quick idiots who want to put me in their downline or have me put water in my gas tank.</p>
<p>Then you can start adding some more features to the cool system you&#8217;ve created.</p>
<p>Thanks for listening,</p>
<p><a href="http://twitter.com/built">@built</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=61</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Miyamoto Musashi Wouldn&#8217;t Have Had a Blog</title>
		<link>http://www.youell.com/matt/writing/?p=35</link>
		<comments>http://www.youell.com/matt/writing/?p=35#comments</comments>
		<pubDate>Thu, 11 Dec 2008 22:54:06 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[rants]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=35</guid>
		<description><![CDATA[He&#8217;d be too busy killing motherfuckers with his sword. Or boat oars. Or tree branches. You know, whatever was handy at the time.
I just thought I&#8217;d point that out.
Every time I think about writing a post lately, I think about this. It has discouraged some of my posts. But it has also encouraged me to [...]]]></description>
			<content:encoded><![CDATA[<p>He&#8217;d be too busy killing motherfuckers with his sword. Or boat oars. Or tree branches. You know, whatever was handy at the time.</p>
<p>I just thought I&#8217;d point that out.</p>
<p>Every time I think about writing a post lately, I think about this. It has discouraged some of my posts. But it has also encouraged me to do more and talk less. For the most part.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=35</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wanted for Christmas: The most dreadful, impossible, legacy project from hell</title>
		<link>http://www.youell.com/matt/writing/?p=29</link>
		<comments>http://www.youell.com/matt/writing/?p=29#comments</comments>
		<pubDate>Thu, 20 Nov 2008 22:56:34 +0000</pubDate>
		<dc:creator>matt</dc:creator>
				<category><![CDATA[problem solving]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[software industry]]></category>

		<guid isPermaLink="false">http://www.youell.com/matt/writing/?p=29</guid>
		<description><![CDATA[By definition, self-employed software developers are always looking for new projects. But lately something else has been nagging at me. I&#8217;ve enjoyed some of the projects I&#8217;ve worked on this year, but they&#8217;ve only stretched my skills a tiny bit. I&#8217;m not just looking for a new project, I&#8217;m looking for a new kind of [...]]]></description>
			<content:encoded><![CDATA[<p>By definition, self-employed software developers are always looking for new projects. But lately something else has been nagging at me. I&#8217;ve enjoyed some of the projects I&#8217;ve worked on this year, but they&#8217;ve only stretched my skills a tiny bit. I&#8217;m not just looking for a new project, I&#8217;m looking for a new <em><strong>kind</strong></em> of project.</p>
<p>Looking back on my career up to this point, the projects that have entertained me most have been ones with blank slates, using new, cutting edge technologies. That is very common with programmers; we like to be entertained by our work. But entertainment alone turns out to be a poor reason to take a project. I can see now that the projects which have stretched my problem solving skills the most have been the nasty legacy projects. The ones where I&#8217;m asked to do the impossible. To make things happen that otherwise couldn&#8217;t.</p>
<p>Most programmers run away from legacy code and projects. Not me. Legacy code is like sculpting clay to me. And lately I&#8217;ve been wanting to sculpt something. Something mighty. That&#8217;s right, I said mighty.</p>
<p>I want the gnarly project. The one with spaghetti code that has passed from programmer to programmer over the years, both competent and incompetent. The one that has been ported to 5 different platforms and/or languages over 20 years. The one that other programmers have looked at and thrown their hands up and run away from saying &#8220;Fuck <em><strong>that</strong></em>&#8220;. The one that the entire company is running on and dare not be touched for fear of taking down the business. The one that is holding everyone back and requires mindless redundant data-shuffling by humans just to be kept happy. The one that you&#8217;d replace in a heartbeat if only you could pull it off.</p>
<p>That&#8217;s what I want for Christmas. Someone tell Santa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.youell.com/matt/writing/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
