<?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>Stacey on Software</title>
	<atom:link href="http://svetzal.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://svetzal.wordpress.com</link>
	<description>A geek&#039;s take on business.</description>
	<lastBuildDate>Mon, 02 Jan 2012 01:00:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='svetzal.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/27aa2b7c0bf74455d584a23df39935f1?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Stacey on Software</title>
		<link>http://svetzal.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://svetzal.wordpress.com/osd.xml" title="Stacey on Software" />
	<atom:link rel='hub' href='http://svetzal.wordpress.com/?pushpress=hub'/>
		<item>
		<title>7 Simple Steps to a Successful Software Project</title>
		<link>http://svetzal.wordpress.com/2011/10/09/7-simple-steps-to-a-successful-software-project/</link>
		<comments>http://svetzal.wordpress.com/2011/10/09/7-simple-steps-to-a-successful-software-project/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 21:04:26 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=233</guid>
		<description><![CDATA[1.  Imagine an end-result in only the coarsest detail Let&#8217;s face it, we&#8217;re all human. We can&#8217;t juggle everything in our heads, and we don&#8217;t have perfect clarity on day 1 of a project. You want to get your system in place quickly, and you definitely don&#8217;t want to waste time playing imagination games for [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=233&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>1.  Imagine an end-result in only the coarsest detail</h3>
<p>Let&#8217;s face it, we&#8217;re all human. We can&#8217;t juggle everything in our heads, and we don&#8217;t have perfect clarity on day 1 of a project. You want to get your system in place quickly, and you definitely don&#8217;t want to waste time playing imagination games for weeks on end writing detailed documentation and pixel-perfect mock-ups that will be difficult for others to understand, and could be impossible to implement.</p>
<p>There is definitely value in a study of business requirements, written project requirements, and simple sketched mockups, but stay high level!</p>
<p>The more you layer imagined details on top of other imagined details, the further from reality you get. Write down and verify your facts, sketch out your vision, and get the ball moving!</p>
<h3>2. Keep and <em>communicate</em> a clear and consistent vision</h3>
<p>It&#8217;s OK if you realize during a project that your best chance of success means a slight change in direction.</p>
<p>However, be wary of too many or drastic changes in direction &#8211; pause your development until you&#8217;ve re-established your vision and reconfirmed your facts. It doesn&#8217;t make sense to continue spending time and money along any direction to which you&#8217;re not fully committed.</p>
<h3>3. Stay engaged</h3>
<p>Don&#8217;t send your development team away on auto-pilot. They will need your help, and you will need theirs &#8211; daily communication is healthy. As each iteration goes by, they will rely on you to imagine more and more detail on top of the code they deliver. Imagining the details on top of real concrete running software is what will keep you on track towards delivering your product.</p>
<p>In addition, if you see something going in the wrong direction, the sooner you talk about it with the team the more you&#8217;ll be moving towards your goal.</p>
<h3>4. Ship</h3>
<p>It&#8217;s OK if the product is not perfect on day 1. Call it an open beta if it makes you more comfortable, but the sooner you can get your product into the hands of your users, the sooner you will start collecting valuable feedback.</p>
<p>Remember, <em>don&#8217;t imagine what your users will want, find out for sure</em> by putting the product in front of them.</p>
<p>Sometimes you&#8217;ll hear the idea of focusing on your &#8220;Minimum Viable Product&#8221;, the simplest product you can build that has some value to your users. How can you fully imagine this without your users&#8217; direct feedback?</p>
<h3> 5. Keep the feature set small</h3>
<p>Remember the words of Antoine de Saint-Exupery, “Perfection is achieved not when there is nothing more to add, but when there is nothing left to take away.”</p>
<p>It doesn&#8217;t take much effort to build something complicated, and it is very challenging indeed to build something simple. It&#8217;s compelling as the project moves forward to imagine all the extra things it could do. However remember that by and large every new feature you add will make the product harder to use, and more expensive to maintain moving forward. Be very, very sparing.</p>
<p>This includes incorporating user feedback. You will get a volume of feedback from your users, but don&#8217;t take it at face value. Understand where it&#8217;s coming from, read between the lines, and either discard what doesn&#8217;t align with your vision, or re-align your vision.</p>
<h3>6. The Long Haul</h3>
<p>Your software isn&#8217;t an island. It lives in a world that constantly changes, and as with everything it must either adapt, or fail.</p>
<p>If you approach the project with a single up-front budget and leave nothing for ongoing maintenance, you&#8217;re ensuring the future failure of your product – it&#8217;s as simple as that.</p>
<p>Some technologies will be inherently most expensive to integrate from a maintenance perspective. Right now, social platforms like Facebook and Google+ are in constant flux and products that integrate with them can carry the highest maintenance costs as they adapt to what can be weekly changes. But who doesn&#8217;t want their product to integrate with Facebook these days?</p>
<p>Choose carefully and with your eyes open what technologies you integrate. Some will have a far higher impact on your maintenance costs than others.</p>
<h3>7. Have Fun</h3>
<p>Creating software is a uniquely rewarding experience. When you can see it in the hands of your users, and they appreciate it, it is tremendously gratifying.</p>
<p>But also remember the journey, product life cycles can span years or decades &#8211; revisiting the path to maintain and better it should be a positive and pleasant experience. If it&#8217;s not, you&#8217;re not going to want to do it.</p>
<p>Everyone does their job better when they enjoy what they&#8217;re doing. Keep your vision front and centre, keep a positive attitude, treat your users, peers and developers with respect, and it will be hard not to build something meaningful.</p>
<h1></h1>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/233/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/233/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/233/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=233&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2011/10/09/7-simple-steps-to-a-successful-software-project/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>The Chaos in the Matryoshka</title>
		<link>http://svetzal.wordpress.com/2011/08/24/the-chaos-in-the-matryoshka/</link>
		<comments>http://svetzal.wordpress.com/2011/08/24/the-chaos-in-the-matryoshka/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 12:38:26 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[opinion]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=228</guid>
		<description><![CDATA[Those that know me know that I&#8217;m not afraid of change. I&#8217;m a big proponent of &#8220;strong opinions loosely held&#8221;. When something makes sense, grab ahold, if you can disprove it, move along. Don&#8217;t become too attached or you&#8217;ll find you&#8217;ve turned into an apologist. About 4 years ago I announced I was done with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=228&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Those that know me know that I&#8217;m not afraid of change. I&#8217;m a big proponent of &#8220;strong opinions loosely held&#8221;. When something makes sense, grab ahold, if you can disprove it, move along. Don&#8217;t become too attached or you&#8217;ll find you&#8217;ve turned into an apologist.</p>
<p>About 4 years ago I announced I was done with fixed price projects. It was the best business move I ever made.</p>
<p>There wasn&#8217;t really any change in the amount of money we made on each project. But the spirit of collaboration we were able to bring to customers, stopping the seemingly constant disagreements over what was included or not included, what was a bug or not a bug, just ceased for the customers that understood what we were about. Software development became fun again, fulfilling. We have delivered much better work because of it.</p>
<p>Of course, the odd customer (who we&#8217;ve gotten better at purging) would still want to argue these points. For whatever reason, maybe they grew up in a world of fixed-price contracts, they&#8217;d try and turn collaboration into confrontation. Try and change the terms of our engagement.</p>
<p>I spend a lot of time thinking about the whys and hows of this, and I think it comes down to this &#8211; they&#8217;ve become blind to the chaos around them.</p>
<p>Chaos is everywhere, and builds on itself. It starts with a poorly understood requirement, snowballs into misunderstood emails and conversations, avalanches into the maelstrom of shifts in understanding.</p>
<p>Chaos is deceiving. It wears a mask of order and alignment. The human brain is brilliant at finding patterns, and it is so tuned to the idea of patterns that it will perceive them where none exist. Countless times, a customer has presented a requirement as a simple thing, we listen, we write it down, &#8220;this should be trivial&#8221; we think. And then through conversation and examination the mask comes off. Then we find it&#8217;s like a <a href="http://en.wikipedia.org/wiki/Matryoshka_doll" target="_blank">matryoshka doll</a>, behind each mask is yet another that appears ordered and aligned. Eventually deep enough into the project we take apart the last piece and voila, chaos.</p>
<p>Real life is messy. Countless times we&#8217;ve had the conversation around the whiteboard where we&#8217;ve just scrapped a really elegant data model saying &#8220;Wow, this is awful! If only this business case didn&#8217;t exist&#8230;&#8221; We just discovered the chaos in the middle of the matryoshka.</p>
<p>Customers tend to get this. They know their business is complicated. Sometimes they&#8217;ve been ingrained in it so long that they&#8217;ve become blind to the ways in which it is complicated, but when things are drawn out logically they tend to say things like &#8220;Yeah, I know it&#8217;s strange, but that&#8217;s just the way it is.&#8221;</p>
<p>The risk in the software project lies in not knowing how deep in the matryoshka the chaos lies.</p>
<p>A fixed-price fixed-feature contract expects the software developer, with little to no prior knowledge of the customer&#8217;s day to day business dealings, to take on that risk and price the project accordingly. They&#8217;ll take wild stabs, based on their own prior experiences, sometimes masking it in a thin veil of reason. A fixed-price contract will never reflect the true cost of the software, you&#8217;ve either bludgeoned the business into paying more than they should, or the developer into delivering more than they could afford to (or worse, they walk away).</p>
<p>A target-budget contract has more of a shared risk. The customer accepts that they may not have a &#8220;complete&#8221; solution at the end, but that it was fairly priced because it cost exactly according to the work that was put into it. The risk on the part of the software developer is simply that they do their job professionally, and engage the customer appropriately to explore taking the matryoshka apart.</p>
<p>Over the past couple years though we&#8217;ve very much enjoyed a more holistic and sustainable approach than target-budget, but that&#8217;s the subject of another post&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/228/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/228/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/228/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=228&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2011/08/24/the-chaos-in-the-matryoshka/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>Changes</title>
		<link>http://svetzal.wordpress.com/2011/07/22/changes/</link>
		<comments>http://svetzal.wordpress.com/2011/07/22/changes/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 11:15:13 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=211</guid>
		<description><![CDATA[I’m writing today with some important personal news. Over the past several years, I have made a number of very positive changes in my life leading up to the most important life change I’ve ever made. In a nutshell, I’m transgender and have struggled from a very young age with Gender Dysphoria &#8211; my gender [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=211&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://svetzal.files.wordpress.com/2011/07/avatar-2011-06.jpg"><img class="alignright size-medium wp-image-215" title="Avatar 2011-06" src="http://svetzal.files.wordpress.com/2011/07/avatar-2011-06.jpg?w=225&#038;h=300" alt="" width="225" height="300" /></a>I’m writing today with some important personal news.</p>
<p>Over the past several years, I have made a number of very positive changes in my life leading up to the most important life change I’ve ever made.</p>
<p>In a nutshell, I’m transgender and have struggled from a very young age with Gender Dysphoria &#8211; my gender identity, how I feel inside, does not match my gender assigned at birth. <em>Being</em> transgender is not a choice, but what you <em>do</em> about it is.</p>
<p>After two years of therapy, and a great deal of soul searching, I realized that I could not achieve my full personal potential until I began living my life authentically as a female. As a result, in 2010 I began taking permanent steps towards this end.</p>
<p>After August 1st, I will finally begin living permanently as Stacey Gillian Vetzal. “Steve” will cease to exist.</p>
<p>Initially I realize this may be a little awkward for some. For those of you who have known “Steve” for a while, it will take some time to remember to use female pronouns and my new legal name — and that’s OK.</p>
<p>I already live much of my life as a woman, in fact I have many friends that only know me this way. However unravelling 40 years of socialization as a male doesn’t happen overnight.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Transgender">wikipedia page on Transgender</a> gives a great, if academic explanation of the term, but for folks close to me I keep a copy of Joanne Herman&#8217;s excellent and brief book – <a href="http://www.amazon.com/Transgender-Explained-Those-Who-Are/dp/1449029574">Transgender Explained for Those Who Are Not</a> – for lending. Because transgender describes such a wide variety of people, it is hard finding resources that I actually relate to. I generally discourage people from using Google and the Internet at large to learn about transgender, it&#8217;s not very helpful.</p>
<p>Unlike many transgender folks, my life is at peace. I have an incredibly supportive family, very supportive friends, and a great work environment. Because I am an entrepreneur my transition is a bit more public than I&#8217;d have originally chosen, but when seeking personal growth it&#8217;s important to step outside your comfort zone.</p>
<p>The reality is I’m the same inner person I’ve always been. My interests are the same, my hobbies are the same, and my work ethic is the same. I will now simply be able to do these things with a greatly improved sense of inner peace and dignity.</p>
<p>I look forward to continuing to work with all of you, and welcome any questions you might have moving forward.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=211&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2011/07/22/changes/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>

		<media:content url="http://svetzal.files.wordpress.com/2011/07/avatar-2011-06.jpg?w=225" medium="image">
			<media:title type="html">Avatar 2011-06</media:title>
		</media:content>
	</item>
		<item>
		<title>Decisions In The Dark</title>
		<link>http://svetzal.wordpress.com/2010/11/24/decisions-in-the-dark/</link>
		<comments>http://svetzal.wordpress.com/2010/11/24/decisions-in-the-dark/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 11:57:44 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=197</guid>
		<description><![CDATA[We write software today, it&#8217;s important to always remember this. Often when we are asked to write software, we are typically provided with a list of &#8220;business requirements&#8221;, constraints under which we need to build it. Some of these are architectural, some are design, some are technological, some are legal or regulatory constraints, some are business [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=197&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We write software <a title="Today" href="http://svetzal.wordpress.com/2008/10/23/today/">today</a>, it&#8217;s important to always remember this.</p>
<p>Often when we are asked to write software, we are typically provided with a list of &#8220;business requirements&#8221;, constraints under which we need to build it. Some of these are architectural, some are design, some are technological, some are legal or regulatory constraints, some are business goals, and some are expected features.</p>
<p>Depending on the customer, these constraints have received different levels of consideration. A large established business may need a tactical solution under which many constraints are imposed (you must talk to this database, interact with this webservice, solve this problem). A new startup business may have pages full of features they want, but an intense requirement to make money as soon as possible.</p>
<p>The problem is, that every requirements document is incomplete. To the extent that it&#8217;s often said that the most important information in it is the author&#8217;s phone number.</p>
<p>One reason for this problem is that often when we write, the words we put down don&#8217;t always say to everyone what we intended at the moment they were written.</p>
<p>Another reason for this problem is that the requirements document was written at a time at which we knew the absolute least about the project: before it has started (see ﻿<a href="http://www.construx.com/Page.aspx?hid=1648">Steve McConnel&#8217;s &#8220;Cone of Uncertainty&#8221;</a><a href="http://www.construx.com/Page.aspx?hid=1648">﻿</a>.) Invariably and despite the best intentions and utmost upfront scrutiny, it is incomplete.</p>
<p>In our experience, as you begin working on a project, as stakeholders and developers accumulate knowledge about the project, you discover new information and have the opportunity to clarify many things in your original requirements.</p>
<p>Agile and Lean Software Development tenets tell us that if we defer the decisions we make in a project as late as possible, we can make a more informed decision simply because we know more about the project. The key is finding the &#8220;last responsible moment&#8221; &#8211; an idea championed by the <a href="http://www.poppendieck.com/">Poppendiecks</a>.</p>
<p>The last responsible moment is that point in time when you can make the most informed decision, and when that decision can truly no longer be deferred.</p>
<p>So think back to your project constraints, which of them are truly constraints and which of them are decisions made in the dark?</p>
<p>The idea is so insanely simple, who could possibly make a good decision without gathering as many facts as they can muster?</p>
<p>We should all strive to be more aware of the last responsible moment, we owe it to our customers to ensure that our projects aren&#8217;t governed by decisions made in the dark.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=197&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/11/24/decisions-in-the-dark/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>Cannibal: A simple Object permissions framework for Ruby</title>
		<link>http://svetzal.wordpress.com/2010/08/17/cannibal-a-simple-object-permissions-framework-for-ruby/</link>
		<comments>http://svetzal.wordpress.com/2010/08/17/cannibal-a-simple-object-permissions-framework-for-ruby/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 00:58:02 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=192</guid>
		<description><![CDATA[I&#8217;m proud to announce that we&#8217;re releasing one of our newer frameworks into the open-source community &#8211; specifically under the Simplified BSD License. Cannibal is a permissions framework for object-to-object declaration and querying of permissions or capabilities. It is distributed as a standard gem library through rubygems.org. You can also view the source-code at github. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=192&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m proud to announce that we&#8217;re releasing one of our newer frameworks into the open-source community &#8211; specifically under the <a href="http://en.wikipedia.org/wiki/BSD_licenses#2-clause_license_.28.22Simplified_BSD_License.22_or_.22FreeBSD_License.22.29">Simplified BSD License</a>.</p>
<p>Cannibal is a permissions framework for object-to-object declaration and querying of permissions or capabilities. It is distributed as a standard <a href="http://rubygems.org/gems/cannibal">gem library through rubygems.org</a>. You can also view the <a href="http://github.com/ThreeWiseMen/cannibal">source-code at github</a>.</p>
<p>So far, Cannibal has done reasonably well for us on various projects. It&#8217;s syntax could use some improvement but we believe it&#8217;s fairly expressive as it is &#8211; if you have suggestions for improvements, please write!</p>
<p>Basically you declare a class as either an Actor, or a Subject, or both. You do this by including the appropriate Cannibal mix-in:</p>
<pre>class User &lt; ActiveRecord::Base
    include Cannibal::Actor
end

class Thing &lt; ActiveRecord::Base
    include Cannibal::Subject
end</pre>
<p>Then you declare permissions for your Subjects. For example, if you want any User to be able to view any Thing object, but only want users with the &#8220;Administrator&#8221; role to be able to edit them, you might declare that like this:</p>
<pre>class Thing &lt; ActiveRecord::Base
    include Cannibal::Subject
    allow User, :view
    permission({
        :actor =&gt; User,
        :verb =&gt; :edit,
        :actor_proc =&gt; Proc.new{ |user|
            user.role == 'Administrator'
        }
    }) 
end</pre>
<p>Once declared permissions are easy to query, and read very well:</p>
<pre>if @user.can? :edit, @thing
    ...
else
    ...
end</pre>
<p>As you can see the permissions() method on Subject is still a bit ugly, and is the main reason for the &lt; 1.0 release number. I&#8217;m definitely open to suggestions on improving its syntax.</p>
<p>Testing coverage is not bad, though there is some duplication between our rspec tests and our cucumber tests, and there&#8217;s a ton of refactoring yet to be done, but it&#8217;s working on a couple pet projects of mine and will be going into production for a customer project or two within the next couple weeks.</p>
<p>Enjoy <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/192/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/192/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/192/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=192&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/08/17/cannibal-a-simple-object-permissions-framework-for-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>Software Development Is About People</title>
		<link>http://svetzal.wordpress.com/2010/05/24/software-development-is-about-people/</link>
		<comments>http://svetzal.wordpress.com/2010/05/24/software-development-is-about-people/#comments</comments>
		<pubDate>Mon, 24 May 2010 12:30:41 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">https://svetzal.wordpress.com/2010/05/24/software-development-is-about-people/</guid>
		<description><![CDATA[We as an industry forgot this for a long time, and I am proud to be part of the movement to bring it back. I hear all the time from people about projects being late, features missing, broken or &#8220;I can&#8217;t believe that ever worked&#8221; code. Often this is the voice of the customer feeling [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=188&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We as an industry forgot this for a long time, and I am proud to be part of the movement to bring it back. </p>
<p>I hear all the time from people about projects being late, features missing, broken or &#8220;I can&#8217;t believe that ever worked&#8221; code. Often this is the voice of the customer feeling like they&#8217;ve been &#8220;had&#8221;. That their developer just didn&#8217;t listen to them. And now they&#8217;re stuck with something that they didn&#8217;t want.</p>
<p>This is definitely the symptom of a relationship that didn&#8217;t exist or just went bad.</p>
<p>I have seen projects do this, even been intimately involved. Projects where the technology that was delivered was even great but the customer relationship falls apart because it missed the mark, or they became so frustrated with the process that they just gave up.</p>
<p>And make no mistake, it was the software developer that failed here.</p>
<p>I&#8217;ve said and heard this so often that it sounds cliché &#8211; but the vast majority of time spent on a software development project is figuring out what needs to be coded.</p>
<p>Align what&#8217;s in your developers&#8217; heads with what&#8217;s in your customer&#8217;s head. This is easier said than done, but regular face to face collaboration is key here. Two way participative engaged collaboration. Watch for when meetings become one way. You know what I mean, one side talking and the other side nodding giving the illusion that the idea is getting across. Fix this immediately, questions are your best tool here.</p>
<p>If something is said at any time that doesn&#8217;t fit, don&#8217;t let it slide! It could be a contradictory requirement, an unspoken assumption, a change in motivation. Stop and talk about it, figure out where it came from. It might just be a bit of ad-lib that is easily discarded or you may need to abort your sprint and have another planning session.</p>
<p>Also, recognize early when it&#8217;s time to pull the plug. Sometimes a customer is so unfocused that every status meeting they&#8217;re looking in a different direction. Agile tenets tell us this is ok, they can change their mind at any point and queue those changes for the next sprint, but if they aren&#8217;t pulling in roughly the same direction every sprint you may be going from Toronto to Montreal via Boston. Maybe you should have focused on getting to Kingston first.</p>
<p>So, take time during a project to connect everyone. Get them talking, honestly and openly. Don&#8217;t be afraid to look like a fool because you&#8217;re not. Show your courage from the start and you can avoid the illusion of incompetence later.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=188&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/05/24/software-development-is-about-people/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>An American iPad in Canada</title>
		<link>http://svetzal.wordpress.com/2010/04/24/an-american-ipad-in-canada/</link>
		<comments>http://svetzal.wordpress.com/2010/04/24/an-american-ipad-in-canada/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 12:49:12 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[opinion]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPad]]></category>

		<guid isPermaLink="false">https://svetzal.wordpress.com/2010/04/24/an-american-ipad-in-canada/</guid>
		<description><![CDATA[My sister was so proud, she knew I wanted an iPad and she really did too, so on her recent trip to the US, she got one and texted me right away&#8230; So naturally I asked her to pick up 8 more for me and my friends but we settled on her just picking one [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=187&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>My sister was so proud, she knew I wanted an iPad and she really did too, so on her recent trip to the US, she got one and texted me right away&#8230; So naturally I asked her to pick up 8 more for me and my friends but we settled on her just picking one up for me.</p>
<p>For all of 10 minutes she had something that I desperately wanted, and she knew it drove me nuts <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So this is day 1 with my new iPad. The 64GB wifi version.</p>
<p>Setting it up has been pretty painless except for one annoying thing &#8211; it won&#8217;t even open the app store on the device because it is connected to my Canadian iTunes account. Oh, and it took an hour to sync all my stuff to it.</p>
<p>Other than that things have been going fairly well with it. It is super responsive, easy to type on, and since the last iTunes update I have 8 apps that have already been updated for the device. I am writing this on the iPad version of the WordPress app.</p>
<p>With regards to buying new apps, it gets a little tricky. Of course you can&#8217;t buy apps from the US iTunes store with a Canadian credit card, so I&#8217;ve been exploring what&#8217;s available in the Canadian store. Because the iPad isn&#8217;t released in Canada yet, there is no iPad section in the Canadian store but iTunes does show you iPad apps when you search.</p>
<p>Searching on the iTunes store for iBook or Keynote come up blank, but I am wondering if I can justify Plants vs. Zombies HD after buying the iPhone and Mac versions <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The Kindle app was already updated for iPad, but I don&#8217;t own any kindle books yet. Stanza works but hasn&#8217;t been updated yet for iPad so it doesn&#8217;t fill the screen, or is fuzzy if you do.</p>
<p>The WordPress app was a bit funny because there are 2 apps, both with the same name, one for iPad and one for iPhone and you can&#8217;t really tell them apart. Luckily when syncing I noted one was much larger and it happened to be the iPad one. </p>
<p>I&#8217;ve always been very disappointed in the Google app, and was happy for a minute to see that it has been updated for iPad. But alas, it&#8217;s nearly identical. Too bad it&#8217;s little more than a bunch of bookmarks for Safari.</p>
<p>Well, that&#8217;s it for now. Going to go play Plants vs Zombies &#8211; the iPhone version zoomed in &#8211; which isn&#8217;t so bad. The larger screen itself makes a tremendous difference in gameplay. The zombies are coming!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=187&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/04/24/an-american-ipad-in-canada/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>iPhone Applications and Intermediate Tooling Considered Harmful</title>
		<link>http://svetzal.wordpress.com/2010/04/11/iphone-applications-and-intermediate-tooling-considered-harmful/</link>
		<comments>http://svetzal.wordpress.com/2010/04/11/iphone-applications-and-intermediate-tooling-considered-harmful/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 14:40:43 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=181</guid>
		<description><![CDATA[I have to say, I admire Steve Jobs for taking the hard line on so many issues. It isn&#8217;t easy, and he&#8217;s sure taking the flack for it these days. I&#8217;m reminded of Derek Sivers&#8217; recent TED talk on starting a movement. Apple generally isn&#8217;t afraid to be the lone crazy out there. I&#8217;ve been involved as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=181&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have to say, I admire Steve Jobs for taking the hard line on so many issues. It isn&#8217;t easy, and he&#8217;s sure taking the flack for it these days. I&#8217;m reminded of Derek Sivers&#8217; <a href="http://www.ted.com/talks/derek_sivers_how_to_start_a_movement.html">recent TED talk on starting a movement</a>. Apple generally isn&#8217;t afraid to be the lone crazy out there.</p>
<p>I&#8217;ve been involved as a user and as a developer in projects in the past providing intermediate tooling. That is, a software tool that produces a template or even finished code for a different software tool. From Maven archetypes for Java to code-generators for UI, from Flash generators to iKVM.</p>
<p>Believe me, it&#8217;s no bed of roses. About all they&#8217;ve ever accomplished is to allow someone to take what they know about Environment A and find some mapping of that to what they don&#8217;t know about Environment B.</p>
<p>The trouble is, the mapping between Environment A and Environment B is &#8220;lossy&#8221; &#8211; and on a platform like iPhone it&#8217;s like JPEG compression at 10% quality.</p>
<p>You could argue that the intermediate tooling can &#8220;narrow down&#8221; its focus to a subset of a particular problem domain. Like a game generator that builds &#8220;Sim-X&#8221; style games, you just change the calculations some and provide different graphics. Likely it could get a much better match between Environment A and Environment B by not trying to be everything to every developer.</p>
<p>The problem with this approach is you get a very homogenous set of Apps being published that all basically look and work the same.</p>
<p>Then there&#8217;s the issue of keeping the intermediate tooling up to speed with the latest enhancements in the target platform. There&#8217;s an inherent lag here because you can&#8217;t QA or sometimes even start building your tooling until that platform is in production. By then you&#8217;ve got frustrated users in the field who can&#8217;t use the features they want, or worst-case have crashing generated applications because your generator built &#8220;bad&#8221; code.</p>
<p>Jobs doesn&#8217;t want a bunch of crappy or duplicate applications in his App Store. I wouldn&#8217;t either. He wants useful applications with a high-quality end-user experience. Would you rather fish through a sea of 15 crappy apps to find the 1 gem in the mix that was hand-tooled from the ground up, or would you rather just grab the 1 gem and get to work?</p>
<p>I&#8217;m reminded of one of our favourite quotes at TWM:</p>
<p><em>&#8220;To become over-familiar with one weapon is as much a fault as not knowing it sufficiently well.&#8221;</em> -Miyamoto Musashi</p>
<p>We always urge our developers to expand their base of knowledge. Every new programming language and environment they learn makes them a better programmer in <em>all of the environments</em> they know.</p>
<p><strong>If you are so tied to one environment that you refuse to learn well any other, you are not reaching your potential and I guarantee you are producing substandard work even in the environment you feel you have mastered.</strong></p>
<p>If you want an environment of useful and successful software, you don&#8217;t lower your standards to get it &#8211; you raise them.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=181&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/04/11/iphone-applications-and-intermediate-tooling-considered-harmful/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>Apple: Thank You for Leaving Flash Out</title>
		<link>http://svetzal.wordpress.com/2010/01/29/apple-thank-you-for-leaving-flash-out/</link>
		<comments>http://svetzal.wordpress.com/2010/01/29/apple-thank-you-for-leaving-flash-out/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 12:23:04 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=178</guid>
		<description><![CDATA[Something has been weighing heavy on my mind for a while now. Years, in fact. I didn&#8217;t realize it however until the past few weeks while delving back into interactive media for the book publishing industry. In the mid to late 90&#8242;s I spent a lot of effort on interactive media for desktop computers and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=178&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Something has been weighing heavy on my mind for a while now. Years, in fact. I didn&#8217;t realize it however until the past few weeks while delving back into interactive media for the book publishing industry.</p>
<p>In the mid to late 90&#8242;s I spent a lot of effort on interactive media for desktop computers and commercial television. There were promising technologies and great multimedia development platforms, and out of this open specifications emerged like SMIL (Synchronized Multimedia Integration Language) and SVG (Scalable Vector Graphics), while HTML (HyperText Markup Language) flourished.</p>
<p>Interactive tools were built upon the shoulders of visionary products developed in the late &#8217;80s and early &#8217;90s like <a href="http://en.wikipedia.org/wiki/HyperCard">Hypercard</a>, Macromedia Director, and <a href="http://www.atarimagazines.com/compute/issue124/P204_1_REVIEWS_AMIGA.php">AmigaVision</a>.</p>
<p>SMIL was quickly adopted by Quicktime, Windows Media Player, and Real Player &#8211; the trifecta of heavy-weight vendors with a vested interest in interactive media. It was very promising that these vendors could all gather around this common open format for interactive media.</p>
<p>This was at the same time as Flash was also starting to take hold in the market.</p>
<p>Then over the following 10 years, SMIL was virtually assassinated from the landscape.</p>
<p>There&#8217;s a lot that <a href="http://ukwebfocus.wordpress.com/2008/11/18/why-did-smil-and-svg-fail/">can be written</a> about SMIL and SVG&#8217;s failure in the industry. </p>
<p>Quicktime X no longer opens and runs SMIL files (Quicktime Player 7 does, and it&#8217;s <a href="http://www.apple.com/quicktime/technologies/interactivity/smil.html">still in the spec</a>). Quicktime on the iPhone won&#8217;t handle SMIL. WYSIWYG SMIL editors now are nowhere to be found. Evolution of the SMIL specification slowed to a crawl. The once potentially vibrant ecosystem around open standards has withered to nearly nothing &#8211; with obscure projects like <a href="http://www.ambulantplayer.org/">Ambulant</a> remaining as last-chance efforts to keep an open format available to the world for interactive media.</p>
<p>My problem with Flash isn&#8217;t its capabilities &#8211; they are impressive. It is with the fact that it is a vendor proprietary format, with a closed ecosystem. Adobe makes the flash player. Adobe makes the flash development tools. Sure some other companies provide streamlined development tools based on Adobe&#8217;s APIs (like <a href="http://www.swishzone.com/">SWiSH Max</a>) but Adobe controls what they can and can&#8217;t do with those APIs.</p>
<p>Apple is rallying behind emerging and open interactive formats like HTML, which have recently been trying to introduce new features like Video and provide a richer standardized interactive format &#8211; strangely what the world seems to be crying for all the time we let SMIL wither and die. Can you imagine what things would be like if HTML were a vendor-proprietary format? What would the world be like if Microsoft owned HTML? Adobe? Apple? Commodore?</p>
<p>In HTML / JavaScript you can build basic iPhone apps that look and feel just like native iPhone apps. For years now I&#8217;ve argued that most of what you see in Flash has been available using Dynamic HTML techniques pioneered 10 years ago &#8211; and standardized and popularized years ago among savvy web developers with libraries like <a href="http://script.aculo.us/">Script.aculo.us</a> and <a href="http://jquery.com/">jQuery</a>.</p>
<p>What we continue to lack are modern versions of the great pioneering multimedia tools. Classic HTML tools don&#8217;t cut it &#8211; we need tools that average computer users can grasp, that they DID grasp 20 years ago but we seem to have lost. That a teacher can sit down and use to build an interactive aid for students. That a marketing professional can use to build an interactive product demonstration. That aren&#8217;t tied to a vendor proprietary format. That will play natively in a web browser as intended by the author.</p>
<p>So I say to Apple, help us remember that Flash is just ONE option in the world of interactive media. Help us to remember that websites don&#8217;t need Flash to be highly interactive and graphically rich. Help us to remember that we need tooling and support for open standards and to realize the interactive multimedia vision that seemed so clear 20 years ago.</p>
<p>Ignore the whining from the complacent and lazy market, stick to your guns, and KEEP FLASH OFF the iPhone / iPad!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/178/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/178/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/178/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=178&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2010/01/29/apple-thank-you-for-leaving-flash-out/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
		<item>
		<title>Java EE 6 Mess, Continued</title>
		<link>http://svetzal.wordpress.com/2009/12/28/java-ee-6-mess-continued/</link>
		<comments>http://svetzal.wordpress.com/2009/12/28/java-ee-6-mess-continued/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 16:10:36 +0000</pubDate>
		<dc:creator>svetzal</dc:creator>
				<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://svetzal.wordpress.com/?p=171</guid>
		<description><![CDATA[OK, found another brick wall So if you recall, I have a Maven 2 build. I now have discreet API jars isolated for JPA 2, Servlet 3, and EJB 3.1. This allows me to build with a single dependency tree for production and still provide a suitable environment for automated testing by providing EclipseLink as [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=171&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>OK, found another brick wall <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>So if you recall, I have a Maven 2 build. I now have discreet API jars isolated for JPA 2, Servlet 3, and EJB 3.1. This allows me to build with a single dependency tree for production and still provide a suitable environment for automated testing by providing EclipseLink as a JPA2 implementation under my &#8220;test&#8221; scope.</p>
<p>My next challenge came when I wanted to use <a href="http://java.sun.com/javaee/6/docs/tutorial/doc/gjbnr.html">CDI (Contexts and Dependency Injection)</a> to start wiring up components for use in my Facelets templates. If you recall, CDI allows you to do things like name your components and place them into specific scopes (session, request, conversation, application) so that they are lazily instantiated on demand when your web templates need their services. It also provides automatic dependency injection so when your components require other components to work, they can have themselves automatically created and injected by the container.</p>
<p>You&#8217;d think that because CDI largely came from <a href="http://seamframework.org/Download">Weld</a> that the API jar would be reasonably simple to isolate. Strangely however some of the annotations I need (@Named, actually the whole javax.inject.* namespace) are completely missing from the Weld 1.0.0 and 1.0.0.SP1 distributions, and they&#8217;re buried in Glassfish in the weld-osgi-bundle.jar in between all the implementation stuff.</p>
<p>The <a href="http://jcp.org/aboutJava/communityprocess/final/jsr299/index.html">JSR</a> for CDI points to the Weld 1.0.0 distribution so I&#8217;m SNAFU&#8217;d there looking for javax.inject.*, and I&#8217;ve been unable to find another useable jar out there in the wild that contains this part of the API.</p>
<p>Of course, it&#8217;s fully present in the javax / javaee-web-api / 6.0 dependency which <a href="http://svetzal.wordpress.com/2009/12/26/java-ee-6-untestable/">completely FAILS</a> when used with EclipseLink JPA 2 implementation, which is why I moved away from it to begin with.</p>
<p>How can you expect anyone to get anything done in an environment like this?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/svetzal.wordpress.com/171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/svetzal.wordpress.com/171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/svetzal.wordpress.com/171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=svetzal.wordpress.com&amp;blog=1567105&amp;post=171&amp;subd=svetzal&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://svetzal.wordpress.com/2009/12/28/java-ee-6-mess-continued/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/87dc214e84e4a38d7cd94a17e8e52ad4?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">svetzal</media:title>
		</media:content>
	</item>
	</channel>
</rss>
