<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Justin's Tangentially Technical Mumbojumbo</title>
	<atom:link href="http://justinmetatech.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://justinmetatech.wordpress.com</link>
	<description>Something deeply personal, masquerading under technical sheath</description>
	<lastBuildDate>Tue, 07 Apr 2009 22:50:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='justinmetatech.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Justin's Tangentially Technical Mumbojumbo</title>
		<link>http://justinmetatech.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://justinmetatech.wordpress.com/osd.xml" title="Justin&#039;s Tangentially Technical Mumbojumbo" />
	<atom:link rel='hub' href='http://justinmetatech.wordpress.com/?pushpress=hub'/>
		<item>
		<title>On Abstraction and Encapsulation</title>
		<link>http://justinmetatech.wordpress.com/2009/04/07/on-abstraction-and-encapsulation/</link>
		<comments>http://justinmetatech.wordpress.com/2009/04/07/on-abstraction-and-encapsulation/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 21:57:39 +0000</pubDate>
		<dc:creator>ine8181</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justinmetatech.wordpress.com/?p=23</guid>
		<description><![CDATA[People don't think in terms of contracts. They think in terms of behaviours, hows and whys.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=23&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:right;"><em><br />
</em></p>
<p style="text-align:right;"><span><em> </em></span><em>&#8230; or &#8216;OO is hurting the industry because encapsulation&#8217;</em></p>
<p>The ability to abstract is a powerful one. I have seen my share of uni-freshers. There are a million different kinds of students and they all have their different ways of understanding. Obviously, some are better than others, and some are worse.</p>
<p>The worse kind of students are those who cannot abstract. Of course all human beings can abstract to some degree or other, otherwise no one would be able to drive a modern motor vehicle, or eat a pie. But some students insist on &#8216;knowing all the details&#8217; because &#8216;that&#8217;s how they understand things&#8217;.</p>
<p>To those students, the concept of an API is difficult to explain.</p>
<blockquote><p>&#8216;You call this method, and fun things happen.&#8217;</p></blockquote>
<blockquote><p>&#8216;But how does it happen?&#8217;</p></blockquote>
<blockquote><p>&#8216;You shouldn&#8217;t care.&#8217;</p></blockquote>
<blockquote><p>&#8216;But I <em>need to know</em>!&#8217;</p></blockquote>
<p>And there are sighs. They most likely won&#8217;t pass 101, or if they do get through, they&#8217;ll be miserable for the rest of the course, unless you&#8217;re a hot chick and have a full set of 14 geeky Asian guys to help you out with the assignments.</p>
<p><span id="more-23"></span></p>
<p>There are a couple of explanations that can be offered for this. Most people, even some experienced developers, tend to side with one explanation: they are bad at abstraction. Without it, you won&#8217;t get far.</p>
<p>I beg to differ.</p>
<p>The reason why they won&#8217;t do well is that they are asking clearly the wrong person. They should not be asking lab demonstrators, who in all their infinite (well, 2 extra years&#8217; worth of) wisdom, <em>have no clue </em>about how that API works. They should be asking the professors, the writers of that API, internet forums, or read the documentation, whatever. The information is available, but not from the lab demonstrators who get paid 13 dollars an hour including tax.</p>
<p>Their weakness is lack of confidence that stops them from asking difficult questions to the proper authority, and laziness in their quest for information.</p>
<p>Look at the top students on the other hand. The chances are, they fully well know how their favourite APIs work underneath the covers. They probably know how the chips are manufactured, how gates are made, circuits are designed, machine code is executed, assembly code is written, compilers are architected, and so on, and so forth. All the way up, all the way down.</p>
<p>My point is this: abstraction is a powerful tool, but it&#8217;s only a tool and it&#8217;s only one of the tools.</p>
<p>To pretend that the students &#8216;shouldn&#8217;t care&#8217; about how an API works is at best ignorant and at worst, well, just ignorant. Of course they should fucking care, you know? Like Knuth or Dijkstra or someone rather really important once said in one of their immortal essays, although what we produce is computer code, we should never forget that what we&#8217;re really crafting is the behaviour of the machine. The runtime <em>matters</em>. It&#8217;s the thing that we&#8217;re trying to get the computer to do.</p>
<p>How else, other than finding out what your function call does, are you going to determine what the computer will do? Reading documentation is fine and dandy, but that guarantees neither the completeness nor the correctness.</p>
<p>You will never learn how to fix a car by reading the owner&#8217;s manual, or even the repair manual, or even the blueprints of the car straight from the manufacturer. You have to open it up. Take the wheels off. Lift the car from its axle. Pry open the diff. Feel how broken that bearing is. Shake it and see what sound it makes. That is how you learn how to fix something. That is how you learn _<em>anything</em>.</p>
<p>Furthering my point, I make this claim: Currently, the &#8216;abstraction&#8217; is severely overrated, especially in OO- and component-oriented programming circles.</p>
<p>What they write is this: the blue button makes it go. The red one makes it go faster. Do not press them at the same time. That&#8217;s the extent of the 90% of the API documentation there are.</p>
<p>And they expect us to work with it. What if you want to make it go slower? The trick is to press the two buttons at the same time, except for in the next minor version update, pressing the both buttons at the same time makes it blow up, and you&#8217;re punished for using an undocumented feature.</p>
<p>&#8216;We told you not to&#8217;, says the smug author. And we agree with him. All the OO people agree that this is the way it should happen. Don&#8217;t do things that you&#8217;re not told to.</p>
<p>But hang on a minute. Don&#8217;t you think that&#8217;s even slightly weird? Why such change in behaviour? Why did it make it go slower in the first version? What deficiency in the original design prompted the authors to make such changes? Wouldn&#8217;t you want to know? Wouldn&#8217;t you be curious?</p>
<p>Most of all, wouldn&#8217;t you be pissed off if it broke your app?</p>
<p>But no. We&#8217;re told it&#8217;s just like a contract between two entities. You keep to the words, and don&#8217;t do things that are not specified it in the contract, or there be consequences.</p>
<p>Bullshit, I say: in the real world, if pressing those two buttons made things go slower for more than 12 months, it would be in the de-facto go-slow-mode contract, which would be enforceable. The wordings of the contract itself be damned.</p>
<p>The proper way to make things would be to let people know why and how the things work. Abstract it, document it, that&#8217;s all fine, but do not hide how and why things happen. Craft every bit, every level of the application correctly, thoughtfully. Then let people see it. Let people see your fucking craftsmanship. If you ain&#8217;t got one, this is a very good time to get one.</p>
<p>This brings around me to the final point: although I started off this article by talking about abstraction, it&#8217;s not about abstraction as such. It&#8217;s about hiding behind it and thinking that kludge is OK as long as you stick to the contract, the API, the interface, whatever.</p>
<p>People don&#8217;t think in terms of contracts. They think in terms of behaviours, hows and whys. When you ring up your ISP, you don&#8217;t have the service contract in your mind. You want the internet to work, and you want them to keep quiet about your midget-porn download usage. Fuck the contract. Who gives a shit? Who even reads them? If they didn&#8217;t have the explicit midget-porn-secrecy clause in their contract, and if they spill the beans, you&#8217;d be furious, wouldn&#8217;t you?</p>
<p>So there. Be honest, write good code, let people see what&#8217;s going on. Do not hide behind the encapsulation. If you do, you&#8217;re a midget-porn lover.</p>
<p>.J</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/justinmetatech.wordpress.com/23/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/justinmetatech.wordpress.com/23/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/justinmetatech.wordpress.com/23/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=23&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://justinmetatech.wordpress.com/2009/04/07/on-abstraction-and-encapsulation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/853cff1b42d46675979ef5f92c5f3e09?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ine8181</media:title>
		</media:content>
	</item>
		<item>
		<title>There is no good coffee.</title>
		<link>http://justinmetatech.wordpress.com/2009/04/03/there-is-no-good-coffee/</link>
		<comments>http://justinmetatech.wordpress.com/2009/04/03/there-is-no-good-coffee/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 09:29:21 +0000</pubDate>
		<dc:creator>ine8181</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justinmetatech.wordpress.com/?p=19</guid>
		<description><![CDATA[I have a very platonic notion of coffee. I enjoy it, although it&#8217;s bitter and often hot, sometime sour and more often that not, just foul. For me, there exists a cup of &#8216;platonic&#8217; espresso, in which everything is good, no bitterness, no scalding heat, no aftertaste of chlorine, no burnt beans, no old beans, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=19&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have a very platonic notion of coffee.</p>
<p><span id="more-19"></span></p>
<p>I enjoy it, although it&#8217;s bitter and often hot, sometime sour and more often that not, just foul.</p>
<p>For me, there exists a cup of &#8216;platonic&#8217; espresso, in which everything is good, no bitterness, no scalding heat, no aftertaste of chlorine, no burnt beans, no old beans, just &#8230; you know, coffee.</p>
<p>It is my firm belief that any realisation of this platonic coffee can only take away from the perfect, ideal, platonic version of itself. Brewing a cup of coffee is a process in which you try your very best not to deviate too far away from the logos of coffee.</p>
<p>But recently, as my coffee brewing skills improve, I started enjoying coffee a bit more. May be even a bit too much. I solemnly confess that there were a couple of cups of espresso last week that I even found to be wholly enjoyable. No, no, this won&#8217;t do.</p>
<p>Much like the platonic and real coffee, digitised images suffer from a similar problem. That is, there is the &#8216;perfect image&#8217;, which is, obviously, the scene which was photographed by God, then there are &#8216;realisations&#8217; of the image, which are taken by real cameras. At the very moment we take the picture, there are imperfections. Dynamic ranges are lost, colours and definitions are inaccurate, and so on.</p>
<p>This is entirely excusable. We do not want to blame the coffee farmers for not having the God&#8217;s One Coffee Tree. Camera manufacturer are good people, making a lot of money, having an interesting, satisfying job.</p>
<p>However, there is one chronic and inexcusable place in which to introduce further imperfections; and that is the rendering time &#8211; i.e., when the digitised image is displayed on the screen. It is akin to going through the trouble of getting the beans all the way from Java (where, as we all know, where God once planted his One Coffee Tree), then not having hot enough to water to brew the coffee.</p>
<p>I mean, imagine: A perfect moment happens somewhere in the universe. This moment is unique in space-time, nothing EVER, ANYWHERE will be exactly the same. It happens once.</p>
<p>Then there is the perfect photographer, who, using his powers of divination, predicted this event, and set up his camera.</p>
<p>When the moment came, he pressed the shutter. The clockwork of metal and plastic and copper and nylon, electrons and spring completes its circle within one one-hundred-and-twentieth of a second. Oh, no, Nikon engineers made a mistake, got past the QA person, it was more like one one-hundred-and-nineteenth of a second. Zeiss engineers, also, made an imperfection on the lens, which smudges lower right hand corner of the image, very slightly, almost unnoticeable. There was one speck of dust on the front element.</p>
<p>But the moment is captured. It has 14-bits per channel. There are three channels. There are more mega-pixels than there are brain cells in the average photoshop user.</p>
<p>The pain begins. Like every other aspect of photography (and coffee) the process is continuous subtraction from the perfection. The art of subtraction leading to its own, less Godly and more human perfection. As the roasting of the beans is the subtraction of the freshness, the cropping subtracts part of the perfection, leads to a more concentrated whole, and so on, and so forth.</p>
<p>And after hours, days, months of hard work and pain and blood and sweat, the product is ready&#8230;. and it&#8217;s a fucking jpeg.</p>
<p>It can display 256 levels of red.</p>
<p>Jesus Fucking Wept.</p>
<p>What&#8217;s funnier? The modern LCDs. You&#8217;re lucky if your panel can display more than 100 shades of pure red.</p>
<p>Ok, here&#8217;s the technical part of this blog:</p>
<p>1. Invent a file format that contains arbitrary bits per channel of colour (TIFF does that? good. I don&#8217;t know).</p>
<p>2. Given that the current generation of graphics can do only 8 bits per channel, but it can do 60 frames per second quite happily, we map the x-bit per channel into 8-bit, but randomise it over time. So when the average is taken over a second, it reproduces the original colour.</p>
<p>3. Add extra room for oscillation to cater for the shitty displays. The net effect will be a still photograph that looks like having motion-picture film-grain.</p>
<p>4. Not sure whether this will actually lead to a better looking image.</p>
<p>.J</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/justinmetatech.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/justinmetatech.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/justinmetatech.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=19&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://justinmetatech.wordpress.com/2009/04/03/there-is-no-good-coffee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/853cff1b42d46675979ef5f92c5f3e09?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ine8181</media:title>
		</media:content>
	</item>
		<item>
		<title>Designed by Committee.</title>
		<link>http://justinmetatech.wordpress.com/2009/03/07/designed-by-committee/</link>
		<comments>http://justinmetatech.wordpress.com/2009/03/07/designed-by-committee/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 21:31:44 +0000</pubDate>
		<dc:creator>ine8181</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justinmetatech.wordpress.com/?p=17</guid>
		<description><![CDATA[Watchmen is awesome. Let me get this out of the way, first of all. And for those who didn&#8217;t enjoy it: I still think that you might be decent human beings, but by God, what&#8217;s wrong with you? But now that&#8217;s out of they way, what I want to write about today is about the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=17&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Watchmen is awesome. Let me get this out of the way, first of all.</p>
<p>And for those who didn&#8217;t enjoy it: I still think that you might be decent human beings, but by God, what&#8217;s <em>wrong</em> with you?</p>
<p><span id="more-17"></span>But now that&#8217;s out of they way, what I want to write about today is about the &#8216;standardisation process&#8217;. If you do not like the topic (like I don&#8217;t) or believe it irrelevant, you may stop reading now.</p>
<p>Plato, when asked the question of &#8216;Who will watch the watchmen&#8217;, he said that they themselves will, because they will believe that they are better than the other people. Through this egotism and alpha-male altruism, Plato believed, that the society could have a safeguard against failure.</p>
<p>What an idiot.</p>
<p>Government-sanctioned technical committee are a bit like that. They are entrusted (and that&#8217;s where the word comes from) by the people to produce something useful, and what they produce will have large legal, technical and financial implications.</p>
<p>If the enforcement is the person wielding a hammer, and the law is something that gives him the right to use it, the committee decides what the hammer is made of.</p>
<p>And the answer is not always as straightforward as you might imagine. What is the manufacturer of Egyptian cotton doing in this committee?</p>
<p>The year was 2005, and I found myself at the round table of a HISO committee. I was to write the draft standard for what would dictate how various health-IT organisations in New Zealand would exchange electronic data.</p>
<p>I was a software developer with four years under my belt - which is like fucking forever, right? - and for the first time in my life, had a &#8216;team&#8217;. (I was cocky enough to call myself a &#8216;senior software developer&#8217; or a &#8216;technical lead&#8217;)</p>
<p>I was bulletproof.</p>
<p>I made jokes about the committee and others around me laughed with me, but I believed firmly that I was in the committee because I was better, I knew better, and I could lead all of them to a better place.</p>
<p>And by God, how quickly the power corrupts. And by God, what an idiot I was.</p>
<p>The first thing I did was to grab the requirement specification document of the product that we were busy implementing, deleted all the trademarked words, and submitted it as the draft standards document.</p>
<p>It had holes in it, it had some strange decisions that were not fully justified (or justifiable), it was still in pre-alpha stage of development, and it was all around propriety, ignored all existing related W3C standards. But it works, ok? Isn&#8217;t that what&#8217;s required of the committee?</p>
<p>My ulterior motive was to get my document accepted; that would mean I wouldn&#8217;t need to implement a standard; my programme would be the standard. Everyone would want to buy a copy of my software; it will be the only one available; and you&#8217;ll be required by law to purchase a &#8216;standardised&#8217; software.</p>
<p>Looking back now, I see that pushing an ulterior motive through a committee is impossible. On the other hand, blocking other people&#8217;s motives is dead simple: stall.</p>
<p>There are four all-day meetings a year. And by &#8216;all-day&#8217;, we mean about 4 hours long. first hour will be spent on recapping, the middle two on lunch, and the last hour on organising the next meeting. There is very little stalling to do.</p>
<p>They stalled me, I stalled them. All along the watchtower, watchmen were busy stalling themselves.</p>
<p>I&#8217;ll save you the details. It&#8217;s not interesting. What I want to say is this:</p>
<p>Do not attend a committee with an ulterior motive, because you won&#8217;t get it through, and you&#8217;ll make everyone else&#8217;s life a little bit more pointless. It does not matter whether you think it&#8217;s clever (it&#8217;s not) and it&#8217;ll work (it won&#8217;t) and other people on the committee are idiots (so are you).</p>
<p>If you have an ulterior motive, go with a little bit more direct approach. And yes, I&#8217;m fully condoning the use of violence and blackmailing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/justinmetatech.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/justinmetatech.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/justinmetatech.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=17&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://justinmetatech.wordpress.com/2009/03/07/designed-by-committee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/853cff1b42d46675979ef5f92c5f3e09?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ine8181</media:title>
		</media:content>
	</item>
		<item>
		<title>On Tim&#8217;s Treaties On Sloths</title>
		<link>http://justinmetatech.wordpress.com/2009/02/25/on-tims-treaties-on-sloths/</link>
		<comments>http://justinmetatech.wordpress.com/2009/02/25/on-tims-treaties-on-sloths/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 11:30:01 +0000</pubDate>
		<dc:creator>ine8181</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justinmetatech.wordpress.com/?p=6</guid>
		<description><![CDATA[Tim writes [...] they are SLOW. I couldn&#8217;t agree more. In all seriousness, however, I should point out that from my limited experience, WordPress just deleted my post, that there are differences between a bespoke development project and a generalised solution/product development. For a bespoke development, I couldn&#8217;t agree more that we simply don&#8217;t write that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=6&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://devtim.wordpress.com/2009/02/25/why-unit-testing-is-a-waste-of-time/">Tim writes</a></p>
<blockquote><p>[...] they are SLOW.</p></blockquote>
<p>I couldn&#8217;t agree more.</p>
<p><span id="more-6"></span></p>
<p>In all seriousness, however, I should point out that from my limited experience, WordPress just deleted my post, that there are differences between a bespoke development project and a generalised solution/product development.</p>
<p>For a bespoke development, I couldn&#8217;t agree more that we simply don&#8217;t write that much difficult code that is worth testing.</p>
<p>In a generalised product that is supposed to work out of the box, configure itself in a foreign and what must be considered harmful environment, facing endless molestation and little games of feeding &#8216;funny&#8217; shaped input, unit tests are extremely valuable.</p>
<p>I must add, though, that even in this case I believe that &#8216;a Java class as a unit&#8217; is a ludicrous notion. I&#8217;m talking about at least a package/assembly, or a whole component that could be made up of several of those. I know by now I&#8217;m no longer talking about unit tests, but hear me out:</p>
<p>I once wrote a system that takes XML and generates Java code, that compiles against a Java library (also written by me) and supposed to do something. There were tests written about really really anal behaviours, such as &#8216;what if the user adds 59 minutes to 2AM just before daylight saving&#8217; and so on.</p>
<p>Some time later, we had to port our system across to C++, and of course we didn&#8217;t have a requirement specification. The C++ guru we specially brought on board went &#8220;what the f?&#8221;</p>
<p>But when I explained that we had test cases and all he had to do was to write the program so it passes the tests, he went &#8220;ok&#8221;. And lo and behold, it was so.</p>
<p>I guess in the end, this anecdote really had nothing to do with unit testing.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/justinmetatech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/justinmetatech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/justinmetatech.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=6&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://justinmetatech.wordpress.com/2009/02/25/on-tims-treaties-on-sloths/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/853cff1b42d46675979ef5f92c5f3e09?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ine8181</media:title>
		</media:content>
	</item>
		<item>
		<title>What My Cat Brought In Last Night</title>
		<link>http://justinmetatech.wordpress.com/2009/02/25/what-my-cat-brought-in-last-night/</link>
		<comments>http://justinmetatech.wordpress.com/2009/02/25/what-my-cat-brought-in-last-night/#comments</comments>
		<pubDate>Wed, 25 Feb 2009 10:50:58 +0000</pubDate>
		<dc:creator>ine8181</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://justinmetatech.wordpress.com/?p=3</guid>
		<description><![CDATA[Let me start the paragraph above all over again.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=3&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>First of all, please to forgive. I have been lived under a rock for the past two years and also a little bit more, which brings my level of English further southward than the latitude of my current abode, along with the level of technical knowledge I possess. If you came here to read an intellectually stimulating discussion about cutting edge technology, methodology or synergy, I am sure to disappoint.</p>
<p><span id="more-3"></span></p>
<p>Secondly, the title of today&#8217;s blog is a lie: My cat did not bring anything last night, and I do not have a cat.</p>
<p>Which leads to my third point:</p>
<p>Technology is a lie, just like my cat.</p>
<p>I really should clarify: current generation of business computing technology is a lie, just the same way my title was.</p>
<p>There is no &#8216;technology&#8217; going on. We have run around in a giant circle past ten years, relying on hardware manufacturers to accommodate for our ever bloating layers of layers of abstractions upon abstractions. We still rely on HTTP, and AJAX is a (very shallowly) glorified &lt;iframe width=0 height=0&gt;. Development of the languages that we use day-in day-out has been making something that looks like C behave more like LISP.</p>
<p>Technology. Give me a fucking break.</p>
<p>Technology is defined as &#8216;the application of scientific knowledge for practical purposes, especially in industry&#8217;. What part of what we doing can be described as &#8216;Technology&#8217;? If any among you want to cry out &#8216;it has adopted a new meaning because languages change&#8217; just fucking shoot me in the eye now.</p>
<p>There is no &#8216;Computing&#8217; going on, either. Current generation of computing has as much to do with computers as the current driving has to do with horses.</p>
<p>If you take a long drive down the lane all the way to the wops, you might hit one.</p>
<p>We write a few eXtensible Markup Language Documents, that is to be read by some program being run on an interpreter running in a virtual machine running in a virtualised environment. Sometimes I do wonder whether it&#8217;s virtual machines all the way down.</p>
<p>But anyhow, the fact that computers don&#8217;t do any real computation shouldn&#8217;t come as a surprise to anyone by now.</p>
<p>Then there is Business; Business is the last thing we are worried about in any given day. How often do you gloss over a bug, a feature, an unimplemented button, saying to yourself or to a colleague or a manager or a client saying &#8216;that&#8217;s a business problem.&#8217;?</p>
<p>How effing often, do you really worry, care, think about, talk in terms of, the business, the final product that we are supposed to be delivering? How often do you brush this thought aside for someone who knows better, deep down fully well knowing that there is NO ONE who understands it better?</p>
<p>Business, whether you, a J2EE developer, an ASP.NET developer, SQL junky, Javascript monkey, whatever you might be, like it or not, is what differentiates you from John F Carmack&#8230;. and also the fact that he&#8217;s good enough to have made it and owns Ferraris which is also his middle name by now, but that&#8217;s beside the point.</p>
<p>Let me start the paragraph above all over again.</p>
<p>Business is what differentiates us from other sufferers of the modern computing technologies. Whether we like it or not, as long as we are in this field, and pretend that it&#8217;s an application of science and that it&#8217;s going somewhere and the world is not made of turtles all the way down, we bloody well should care what we are applying it to.</p>
<p>Every line of code of Java or .NET that you write, wishing that you were writing a new breakthrough algorithm that will  turn the world into a giant bathtub filled with supermodels and peanut butter jelly sandwiches in Ruby, is killing baby Jesus.</p>
<p>If you are going to do the job and get paid for it, start caring. Start firstly from the first word. Start from Business. Then care about computers, then worry about applying science. If you don&#8217;t know any science, like I don&#8217;t, stick to the first two. Please to cease and desist to pretending, or start to learning, if you will, why not.</p>
<p>Please become an expert in your domain. If you are in insurance business, please understand how a broker works, what an underwriter does, who processes a claim. If you are in health IT, learn about ICD codes, learn how hospitals operate. If you&#8217;re in banking or accounting, please know what Basel-II and IFRS are (if you still have a job, that is).</p>
<p>Because then you&#8217;ll write better software, and your work will be more focused. You&#8217;ll ask fewer stupid questions. You&#8217;ll become far more valuable. I&#8217;ll curse a little less when I use the software you wrote.</p>
<p>That is all I wanted to say.</p>
<p>And of course, I&#8217;m saying all that to myself.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/justinmetatech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/justinmetatech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/justinmetatech.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=justinmetatech.wordpress.com&amp;blog=6726154&amp;post=3&amp;subd=justinmetatech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://justinmetatech.wordpress.com/2009/02/25/what-my-cat-brought-in-last-night/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/853cff1b42d46675979ef5f92c5f3e09?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">ine8181</media:title>
		</media:content>
	</item>
	</channel>
</rss>
