<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>/home/dkramer</title>
	<atom:link href="http://www.thekramers.net/wordpress/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.thekramers.net/wordpress</link>
	<description>David Kramer's high-entropy blog</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:55:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Research Before You Buy</title>
		<link>http://www.thekramers.net/wordpress/index.php/20120109/research-before-you-buy/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20120109/research-before-you-buy/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 19:44:13 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Hackers]]></category>
		<category><![CDATA[Kindle Fire]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Nook Tablet]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1171</guid>
		<description><![CDATA[Geeks and non-geeks alike should do their research when buying electronic devices to make sure they can actually do what they want, and don't have unacceptable attributes.  In this post I'll give some examples, and some helpful guidelines.]]></description>
			<content:encoded><![CDATA[<p>I have been an early adopter for many electronic devices, especially mobile ones. I&#8217;ve had the dream of walking around with some sort of computing device, ideally connected to the Internet, much longer than it&#8217;s been practical.  I went through the <a href="http://rskey.org/CMS/index.php/exhibit-hall/7?manufacturer=Hewlett-Packard&amp;model=HP-100LX" target="_blank">HP100LX</a> (which I could hook up to my <a href="http://en.wikipedia.org/wiki/Motorola_StarTAC" target="_blank">Motorola Startac</a> phone or my 300 baud modem), the <a href="http://en.wikipedia.org/wiki/Sharp_Zaurus" target="_blank">Sharp Zaurus SL-5500</a> (which ran Linux), and the <a href="http://en.wikipedia.org/wiki/Psion_Series_5" target="_blank">Psion 5MX</a>.  Then some Palm PDAs, etc.  Unfortunately, the PDA market is pretty much dead.  I really wish I knew why, as it was years between when the PDA market vanished (at least here in the US) and when smartphones became capable of taking their place.</p>
<p>My first smartphone was a Windows Mobile 6.0 phone (bought months before Microsoft declared Windows Mobile 6.x an utter dead end), and eventually an iPhone.  But not the first iPhone.  Or even the second iPhone.  Why?  Because, as groundbreaking and powerful as they were, my research determined they were missing certain key features that I needed to do what I want, and being a relatively closed and restricted environment, those features were not going to be added on by someone else.  I did my research, and said &#8220;Not soup yet&#8221;.  How do you release a device you say surpasses anything else without cut/copy/paste??!?!?  I am very much NOT an Apple Fanboy, but why, being a Linux Fanboy, would I not go with an Android phone?  because (1) At least at the time, you couldn&#8217;t back up or sync any data with an Android phone without surrendering all your contacts, schedule, etc with Google, which is an unacceptable privacy violation to me, and (2) AT&amp;T had modified the phones to be even more locked down than the iPhone!!!  But I wold not have known that if I just simply said &#8220;The Linux-based phone <em>must</em> be more open, so let me get that one&#8221;.</p>
<p>When the <a href="http://www.amazon.com/dp/B0051VVOB2/?tag=googhydr-20&amp;hvadid=8302881517&amp;ref=pd_sl_7gl7b2uwu2_e" target="_blank">Kindle Fire</a> was announced, I started thinking about getting that device, or something like it (7&#8243; form factor Android device around $200 with a high quality display).  Days later the <a href="http://www.barnesandnoble.com/p/nook-tablet-barnes-noble/1104687969" target="_blank">Barnes and Noble Nook Tablet</a> was announce to be available for sale a week after the Kindle Fire, and I quickly narrowed down my choices to these two.  But the rumors and predicted specs on review sites differed enough I knew I had to wait until they were available and I could play with them.  I ended up developing <a href="http://wiki.agilenewengland.org/bin/view/Main/EReaderNotes" target="_blank">a detailed, objective comparison between them</a>, and the Nook Tablet won handily (for me. YMMV).  I got active in the Nook Tablet &#8220;hacking&#8221; community, and even started working on <a href="http://www.nooktabletdev.org" target="_blank">a wiki site on it</a>. My research found that the boot loader was heavily locked down, and while there&#8217;s a lot of hacks to load other software and markets and customizations for it, it&#8217;s unlikely that a completely new ROM would be loaded on it any time soon.  I was OK with that, because while I wanted to do much more than originally intended with the device, I still wanted it to function as an ereader, too,</p>
<p>I noticed, long after the word had spread that you couldn&#8217;t [yet] replace the ROM as you could in its predecessor, that people were buying them and discovering this after the fact, and returning them.  These people had bought this device for $250 or more hoping to load the latest version of AndroidOS on it, use bluetooth keyboards, hook up external hard drives to it, and Skype their friends with it, without spending half an hour finding out whether any of this is possible (none of it is yet, though Ice Cream Sandwich is close)!</p>
<p>This leads to unhappy geeks.  Geeks and hackers, as a group, tend to expect the world to work they way they want it to, or at least be configurable to.  Only big corporations aren&#8217;t always on board with this.  In the case of the Nook Tablet, B&amp;N had to lock the tablet down more than its predecessor in order for Netflix to allow streaming on it.  After the security vulnerabilities came out that allowed us to gain root access to the Nook Tablet and load software from wherever we wanted on it, B&amp;N pushed an update to the software that closed those security holes, and that update got installed on Tablets with no warning, and certainly without consent.  There was an endless barrage of flame wars complaining that B&amp;N should not have done that, and &#8220;how dare they&#8221;.  I would calmly point out each time that B&amp;N was operating in their own best interests (protecting their relationship with Netflix and other companies), and it&#8217;s silly and unrealistic to expect B&amp;N to act against their own best interest to enable a small group of people who will never buy books, movies, or apps from B&amp;N to have their fun, any more that one would expect Apple to allow Adobe Flash on the iPhone or Ford to allow you to connect your computer to the diagnostic interface of their cars with a simple USB plug.</p>
<p>So here&#8217;s my message: When you&#8217;re planning on buying some sort of complicated and/or expensive item:</p>
<ol>
<li>Make sure you&#8217;ve identified exactly what you want to do with it (establish acceptance criteria).  This not only helps you with your research, and help determine when you&#8217;re done with it, but it can prevent you from falsely claiming you&#8217;ve found &#8220;the perfect solution&#8221; if you really haven&#8217;t.  It also helps convey to others what you&#8217;re looking for.  Be honest with yourself.</li>
<li>Make sure you&#8217;ve made a reasonable effort to identify all possible items that could meet your needs.  &#8220;Premature optimization and/or filtering&#8221; can lead to excessive narrowing of the result set.</li>
<li>Make sure you look at both the good and bad features of each item, identifying any deal-breakers.</li>
<li>If you absolutely need a feature, and the device doesn&#8217;t have it yet, don&#8217;t assume that it will be added in the near future, or ever.  Even barring external influences like regulations and partnerships, their idea of the future of the device may be very different than your own.</li>
<li>If you can afford to wait even a week later, you will benefit from the experience of the others who were not so thorough.  Learning from other peoples&#8217; mistakes is <em>much</em> cheaper than learning from your own.  Learning from other peoples&#8217; successes can save you hour of research.</li>
<li>If you can&#8217;t find evidence either way whether the device can do what you want it to or not, don&#8217;t be afraid to ask.  And ideally, spread the new knowledge.</li>
</ol>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20120109/research-before-you-buy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lies, Damn Lies, and Burn Down Charts</title>
		<link>http://www.thekramers.net/wordpress/index.php/20110711/lies-damn-lies-and-burn-down-charts/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20110711/lies-damn-lies-and-burn-down-charts/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 05:14:54 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1159</guid>
		<description><![CDATA[Agile methodologies, like most flexible yet powerful systems, rely on knowing exactly where things stand.  You may not know exactly what&#8217;s coming in the future, but you know what you&#8217;ve already got, and roughly how close work in process is to done.  This is one of the many reasons short iterations are a good idea.  [...]]]></description>
			<content:encoded><![CDATA[<p>Agile methodologies, like most flexible yet powerful systems, rely on knowing exactly where things stand.  You may not know exactly what&#8217;s coming in the future, but you know what you&#8217;ve already got, and roughly how close work in process is to done.  This is one of the many reasons short iterations are a good idea.  Not only do you know on a frequent basis (the end of each iteration) where you stand, but if what was done is acceptable to the stakeholders (and QA) and can really be considered done.  The product backlog tells you what needs to be done in the future (based on current knowledge, which may change, and that&#8217;s OK) and the iteration backlog tells you what&#8217;s done and what needs to be done <em>now</em>.  The burndown chart shows how things are going inside the iteration.</p>
<p><span id="more-1159"></span>It&#8217;s often said that a broken watch is right twice a day (the joke presumes a mechanical  analog watch).  With a complex processes involving lots of parties like software development, misinformation can be much worse than no information at all, because you don&#8217;t know what you don&#8217;t know, so you make plans based on lies.  Here are some bad practices to watch out for:</p>
<ul>
<li>The list of requirements must be complete when the iteration begins.  Significant changes to requirements inside an iteration invalidates all the planning that went into it.  In my current day job, we&#8217;re trying to prevent this by having the UI team develop mock-ups and have them approved the sprint before the work is to be done.</li>
<li>The list of tasks for a story must be complete and fully described.  I have seen iterations destroyed just because the planners forgot to task out creation of test data.  I&#8217;ve also personally experienced work stoppage because a task was insufficiently defined, and the stakeholder with the details was out of town.</li>
<li>Done has to mean done.  And Done has to include the code being checked into source control, QA testing what&#8217;s in source control, and ideally integration tests.  The mindset of &#8220;<em>It compiles, so let&#8217;s ship it</em>&#8221; creates the worst kind of technical debt.</li>
</ul>
<p>When I compare Agile to Waterfall to people with no Agile knowledge at all, I often compare a torpedo to a boat.  A torpedo will usually get to where it&#8217;s going quickly, but if the target moves (market changes, company changes focus, customer changes focus), or if anything does go wrong (available resources change, regulatory changes), the torpedo is most likely not going to be very effective.  It&#8217;s pretty &#8220;fire and forget&#8221;, so there&#8217;s no way to change course, or even tell that it&#8217;s no longer heading towards where the target now is.  A boat, on the other hand, moves slower than a torpedo, but is steerable and even stoppable.  It may (or may not) take more time to get where it&#8217;s going, but when it&#8217;s done it&#8217;s much more likely to be where you need it (the product does what the customer currently needs, whether that matches what the original goal or not).</p>
<p>If the pilot of the boat doesn&#8217;t know where the boat is or how fast it&#8217;s going, it can end up anywhere,  and just like the torpedo, the pilot won&#8217;t know until it&#8217;s too late to correct the boat&#8217;s course.</p>
<p>I&#8217;ll leave you with a real-world example I experienced.  A previous employer of mine developed a very large product that was really a platform to build applications from.  Each customer needed very heavy customization to make it suit their needs.  The product was designed to be that flexible.  The problem was that this process could take seven months or more before the system could pass user acceptance and we could get paid.  The company decided the solution was to develop several application templates for different target markets to use as a starting point to greatly speed up deployment.  That sounds like a sensible solution, right?  The problem is they spent more than $600,000 and close to a year to decide what those templates should be (you read that right, that&#8217;s just the market research to figure out what they should be, not the coding to develop them).  In that time, the market had totally changed, and their results no longer matched what their potential customers would need.</p>
<p>&nbsp;</p>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20110711/lies-damn-lies-and-burn-down-charts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Wait for Big Changes.  Do What You Can Now.</title>
		<link>http://www.thekramers.net/wordpress/index.php/20110626/dont-wait-for-big-changes-do-what-you-can-now/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20110626/dont-wait-for-big-changes-do-what-you-can-now/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 16:59:37 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Culture]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1150</guid>
		<description><![CDATA[I&#8217;ve been focusing on change a lot lately.  Thankfully, not because of my day job this time.  This time, it&#8217;s more to do with one of the not-for-profit groups I&#8217;m involved with.  A couple of other things have planted this bug in my ear, though.  Someone I know told me about the book Switch: How [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been focusing on change a lot lately.  Thankfully, not because of my day job this time.  This time, it&#8217;s more to do with one of the not-for-profit groups I&#8217;m involved with.  A couple of other things have planted this bug in my ear, though.  Someone I know told me about the book <a title="Amazon.com link to Switch: How to Change Things When Change Is Hard" href="http://www.amazon.com/Switch-Change-Things-When-Hard/dp/0385528752" target="_blank">Switch: How to Change Things When Change Is Hard</a>, which is a fantastic book (so far.  I just got my own copy and am reading it now).  The other thing that got me thinking was an episode of <a title="The Travel Channel" href="http://www.travelchannel.com/TV_Shows/Anthony_Bourdain" target="_blank">Anthony Bourdain: No Reservations</a> I saw recently.  More on both of those later.  The message I want to throw out there is that you can often achieve much better progress making small changes you can make today instead of waiting until there&#8217;s buy-in, resources, and removal of obstacles to a much larger effort.  And those smaller changes are likely to have more direct beneficial effect, because contrary to what large corporations like to think, big changes often introduce larger problems.  I have always tried to do this in my personal life and at work, and try to get others to do the same.</p>
<p><span id="more-1150"></span>Take the aforementioned Anthony Bourdain episode.  He was in Haiti in one of the poorer areas.  He came across this woman selling food on the street.  Anthony noticed her sales were very low and she had too much food, and also that there were many hungry kids around that had no money to buy food.  He talked to the producer, who authorized him to buy her whole supply at full-price and give it out for free to the kids.  Win-win, right?  Wrong.  What ensued was massive fighting over the food, with kids whipping and beating up other kids over who would get the food.  In the end the strong and violent ones got the food, not the most needy.  I&#8217;m not trying to criticize Haiti, or even human nature, but point out an example of big change having unintended consequences that helping on a smaller level might not have had.</p>
<p>The book <a title="Amazon.com link to Switch: How to Change Things When Change Is Hard" href="http://www.amazon.com/Switch-Change-Things-When-Hard/dp/0385528752" target="_blank">Switch</a> contained an example of a health organization trying to decrease malnutrition in Vietnam with almost no budget and very little cooperation from the local government.  Instead of trying to solve the problems of food distribution, clean water, safe waste disposal, and hygiene, they did a study of what was different about the poor families who were <em>not</em> suffering from malnutrition, and spread those practices (it turned out that doing small changes like feeding kids the same amount of food but four times a day instead of two, and adding a little bit of crab and vegetable to their rice, was enough to make a huge difference).</p>
<p>Here are some personal examples:</p>
<ul>
<li>At a recent job, our software build system was &#8220;a bit finicky&#8221;, required several steps to do common tasks, and required the same command line parameters again and again.  I could have lobbied for changing the build system, but there was political/emotional commitment to keeping it the way it was.  Rather than <a title="Wikipedia entry" href="http://en.wikipedia.org/wiki/Tilting_at_windmills" target="_blank">tilting at windmills</a> and not getting anywhere, I developed an environment that wrapped those commands, putting all the required steps into simpler commands, and reading the required parameters from environment variables.  I then advertised it and helped others use it too.  Immediate benefit for myself and others, without the political casualties.  At that same job, I spent a fair amount of time documenting what I learned on the intranet wiki as I learned it (I was the first developer they hired in years, so there wasn&#8217;t a culture of documenting things the newbies would need), so others that came after me wouldn&#8217;t have to go through the same discovery process of mind melding with the Elders.</li>
<li>At my current job, our cafeteria uses disposable Styrofoam trays and cups, plastic utensils, and cardboard plates.  In order to reduce my ecological footprint, I bought a plastic tray at Target for $2 and brought in a plate and metal utensils from home.  I just did this a week ago, so nobody has done the same yet, but several have stated that they want to.  I could have petitioned them to switch to plastic trays and real plates, but even if they were willing, they don&#8217;t have the facilities or manpower to wash them all.  Instead of waiting for that big change, I am doing what I can now, and leading by example.  I also turn my monitors completely off overnight (the computer has to stay on in case I need to remote in from home).</li>
<li>I tend to tip big.  I&#8217;ve worked in the restaurant industry (both in corporate and in the restaurants), and understand what those people are going through.  Most people don&#8217;t even know their salary is minimum wage less their expected tips.  Yes, if their customers tip poorly, they can make less than minimum wage.  Having been blessed with the desire and ability to work in the software industry for a long time now, I try to spread the wealth a bit.  Sorta like Robin Hood, but I&#8217;m stealing from myself <img src='http://www.thekramers.net/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
<li>Before donating to charities, I research just how much of the money goes  towards the cause.  You would be totally shocked if you found out how  much money went into just running some of the very large, very popular  charity organizations out there.  In fact, some charities even <a title="Huffington Post article on the Susan G Komen Foundation" href="http://www.huffingtonpost.com/2010/12/07/komen-foundation-charities-cure_n_793176.html" target="_blank">spend money suing other charities</a>.  Others don&#8217;t actually <a title="GiveWell article on percent of money going to research from several charities" href="http://blog.givewell.org/2010/05/18/how-the-american-cancer-society-and-susan-g-komen-for-the-cure-spend-their-money/" target="_blank">spend that much on solutions to their cause</a>.  Do your research to make sure your money goes to what you want it to.  Or help directly.  That&#8217;s one reason I tip big.  Anyone working in a customer-facing service industry job needs help, even if it&#8217;s a little.  Even if it just makes up for those that don&#8217;t tip well.</li>
<li>I volunteer for four different not-for-profit groups (one related to <a title="WIND Networking" href="http://www.windnetworking.net" target="_blank">helping unemployed people</a>, one related to <a title="Agile New England" href="http://www.agilenewengland.org" target="_blank">Agile software development</a>, one related to <a title="Boston Linux and UNIX Group" href="http://www.blu.org" target="_blank">Linux</a>, and one as part of my religious institution).  There are many reasons why getting involved with groups like this can benefit both you as well as the group (networking, new knowledge and skills, sense of accomplishment, etc), and these are all communities I feel strongly about helping.  All of these groups are trying to help others in the small ways that they can.  In many ways, the unemployment group is much more helpful than the federal or state groups, because they focus on people helping each other and giving out fishing poles instead of fish (small amounts of money the Division of Employment and Training are going to give you for training is not going to do as much good as a group that helps you handle tough interview questions and polish your elevator speech).</li>
</ul>
<p>Maybe the tendency to do small changes now instead of waiting for big changes comes out of my Agile background, with its short iterations and active tracking of blockers.  Maybe it comes from my strong tendency for action over inaction.  Or maybe it&#8217;s just because I&#8217;m an impatient New Yorker.  Most of the time, though, hindsight has shown that course to be the right one.  So please, if you want to save the planet (or just your family, your job, or your sanity), strive for small changes you can do today.</p>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20110626/dont-wait-for-big-changes-do-what-you-can-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Flex For Software Engineers</title>
		<link>http://www.thekramers.net/wordpress/index.php/20110520/adobe-flex-for-software-engineers/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20110520/adobe-flex-for-software-engineers/#comments</comments>
		<pubDate>Sat, 21 May 2011 04:34:39 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1145</guid>
		<description><![CDATA[I have to admit when I first experienced Adobe Flex, the successor to Adobe Flash for rich internet application development, I thought it was a fragile toy that wasn&#8217;t good for much more than pretty moving pictures.  At my current day job, I had to not only learn it, but spend about half my time [...]]]></description>
			<content:encoded><![CDATA[<p>I have to admit when I first experienced <a title="Adobe Flex" href="http://www.adobe.com/products/flex/" target="_blank">Adobe Flex</a>, the successor to Adobe Flash for rich internet application development, I thought it was a fragile toy that wasn&#8217;t good for much more than pretty moving pictures.  At my current day job, I had to not only learn it, but spend about half my time working in it (as opposed to my current favorite language, Java).  One thing I&#8217;ve learned from the experience is that it wasn&#8217;t so much Flex that I had a problem with, as much as Flex Developers.  The Flex developers I&#8217;ve worked with up until this job came to Flex from being Illustrators, Graphic Artists, or just kinda fell into it.  They never learned the art of software development, never learned to appreciate best practices, and never learned to value code quality or readability.  But as a long-time Software Engineer, I know you can create bad software in <em>any</em> language.  But now I&#8217;ve spent about 10 months working in Flex, and feel I can opine fairly.<span id="more-1145"></span></p>
<h2>Visual Work</h2>
<p>When I started doing more serious page layouts, I though that I was back working in HTML with table layouts.  Great.  Then I remembered the problem of using tables for layout in HTML wasn&#8217;t the mechanics of it, but the semantics of it.  Tables are for representing data in columns, not laying things out on a page.  The Flex containers <em>are</em> designed for layout, so it &#8220;makes more sense&#8221; to use them for that.</p>
<p>The properties of these containers used to shape and align these containers and controls can be quite confusing and inconsistent, but they are powerful.</p>
<h2>The Language</h2>
<p>The programming language behind Flex and Flash is ActionScript.  In fact, FlexBuilder compiles Flex down into Flash and ActionScript, which is why it can be played in the same exact Flash Player.  As a Java developer who spent a lot of time with Perl, PHP, Python et al in the past, it frustrates me to once again be working with weakly-typed variables that can contain anything you can imagine.  It makes runtime debugging a necessity.</p>
<p>Objects in ActionScript are like associative arrays (Map&lt;String, Object&gt; for the Java folks out there).  When you declare an object to be of a particular type, you can think of it as creating an array containing certain properties, some of which are functions (methods).  What happens after that is anyone&#8217;s guess, as properties can be added and taken away arbitrarily.</p>
<p>Scope rules in ActionScript are like &#8220;frontier justice&#8221;.  You can declare a variable inside a for loop, and it will still be there <em>with its last value</em> outside the loop.  At least packages work in a way you would expect.</p>
<h2>Connection to the back end</h2>
<p>Flex actually does shine here, for the right combination of front end and back end.  Adobe made it pretty easy to pass serializable objects between a Java back end and a Flex front end.  A layer called AMF deals with most of the messiness, but there are gaps.  For instance, since ActionScript has no concept of enumerations, they kinda haveta be faked.  There are also several MVC frameworks if you&#8217;re into that kind of thing.</p>
<h2>Quality</h2>
<p>FlexBuilder, the IDE, is built on Eclipse.  It&#8217;s not bad, but it leaks memory like a sieve, so expect to shut down and restart it once a day.  The real quality problem is in the SDK itself.  I&#8217;ve run into many situations where the debugger stopped at an error in the SDK code caused by poor quality code that didn&#8217;t verify whether operations succeeded or expected parameters were really there.  Some of the most basic objects, like List, are the worst offenders.  I spent about four hours today just trying to get a List to sort.  Never got it working.  We&#8217;re using a tree control at work that has four bugs reported against it because we haven&#8217;t figured out how to work around the underlying tree&#8217;s limitations and bugs.</p>
<h2>Portability</h2>
<p>You can look at this from two different angles; portability from a developer point of view, or portability from a user point of view.  From a Developer point of view, the picture is not pretty.  Adobe had a beta version of a FlexBuilder port to Linux.  They&#8217;ve since abandoned the effort, leaving cross-platform developers in a pinch.  I believe the SDK still runs under Linux, but with no IDE it would be difficult to develop new software using it.  Personally, I&#8217;m very surprised they gave up on a Linux version, given how much there is to gain by doing so.</p>
<h2>Conclusion</h2>
<p>For real complicated applications, unless there was no other practical ways to do what you want, I would stay away from it.  Other than that, it&#8217;s worth a try,    But given the capabilities of modern-day JavaScript libraries, and the promising features in HTML5, I would have to think hard about recommending going this route for everyone.</p>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20110520/adobe-flex-for-software-engineers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agile New England Going Strong!</title>
		<link>http://www.thekramers.net/wordpress/index.php/20110409/agile-new-england-going-strong/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20110409/agile-new-england-going-strong/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 19:03:35 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1142</guid>
		<description><![CDATA[Agile New England, one of the groups I&#8217;m on the board of, had a sold out meeting this week. We even asked our hosts to expand the capacity of the room and still had a waiting list.  Janet Gregory spoke about the pitfalls of testing, how to tell when you&#8217;re in trouble, and how to [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Agile New England" href="http://www.agilenewengland.org" target="_blank">Agile New England</a>, one of the groups I&#8217;m on the board of, had a sold out meeting this week. We even asked <a title="IBM Research Center, Waltham, MA" href="http://www-304.ibm.com/isv/spc/waltham.htm" target="_blank">our hosts</a> to expand the capacity of the room and still had a waiting list.  <a href="http://janetgregory.ca/" target="_blank">Janet Gregory</a> spoke about the pitfalls of testing, how to tell when you&#8217;re in trouble, and how to get out of it.  The audience was fully engaged, and there were lots of great questions.  Next month, <a href="http://www.jrothman.com/" target="_blank">Johanna Rothman</a> speaks on Agile project management vs non-Agile project management.  Sign up quick!</p>
<p>Just as exciting, next week is <a href="http://agilegames2011.com" target="_blank">our Agile Games 2011 event</a>, which is <em>almost</em> sold out.  There are four or five tickets next.  What is it you say?</p>
<blockquote><p>The Agile Games conference is an exploration of how concepts like serious play, collaboration, and experiential learning apply to the field of Agile software development and project management. Our theme for this year is &#8220;Learn. Share. Play!&#8221; More than a conference, this will be an experience where attendees will be able to learn new concepts, then immediately share and experiment with other professionals. Forget death by PowerPoint. Every single session we offer will be interactive, hands on, and &#8211; dare we say &#8211; fun! Whether you&#8217;re new to Agile, a capable practitioner, or a seasoned veteran, this conference has something for you.</p></blockquote>
<p>This promises to be a great event for people at all levels.  If it interests you, sign up soon.</p>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20110409/agile-new-england-going-strong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Doing Just What&#8217;s Needed</title>
		<link>http://www.thekramers.net/wordpress/index.php/20110402/doing-just-whats-needed/</link>
		<comments>http://www.thekramers.net/wordpress/index.php/20110402/doing-just-whats-needed/#comments</comments>
		<pubDate>Sun, 03 Apr 2011 01:03:55 +0000</pubDate>
		<dc:creator>David Kramer</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://www.thekramers.net/wordpress/?p=1130</guid>
		<description><![CDATA[As a creative person (and as a geek), when building something (software or hardware), I often say to myself &#8220;For just a little more time and/or effort, I can add this cool feature.&#8221; There are many good reasons why this is a bad idea.  I would like to lead with the reason that has caused [...]]]></description>
			<content:encoded><![CDATA[<p>As a creative person (and as a geek), when building something (software or hardware), I often say to myself <em>&#8220;For just a little more time and/or effort, I can add this cool feature.&#8221;</em> There are many good reasons why this is a bad idea.  I would like to lead with the reason that has caused my blog to be stagnant for months, which is that doing more than you have to gets in the way of actually <em>finishing</em>.  An artist I almost knew once said &#8220;<em>The hard part about painting, is not the painting, but knowing when to stop.</em>&#8221;</p>
<p>Since my last post, I&#8217;ve started about six posts that I never finished because I just wanted to add this one last point, or tweak that paragraph one more time.  The result was no visible work output, which is inexcusable for an Agilista.<span id="more-1130"></span>I hope to change my ways here as I have at my day job.  Everything I do has to be at the request of the Product Owner.  That&#8217;s the balance of power; we the developers dictate how long each story will probably take and how they&#8217;ll be implemented, and the product owner dictates the priorities and acceptance criteria.  But focusing on the high priority tasks and knowing when to stop are hardly Agile-specific concepts.  Here&#8217;s some more reasons why it&#8217;s so important:</p>
<ul>
<li>The more you do, the more opportunities there are to do wrong. Statistically speaking, the more software, the more bugs.  The same goes for building houses and first dates.</li>
<li>Spending time on things that may not be needed means you&#8217;re not spending time on things you know are needed</li>
<li>Even if you will eventually need the unplanned features, you may have forced yourself into a particular implementation that may not turn out to be the best one in the end.  In an Agile project, you&#8217;re constantly learning more about the requirements, making more implementation decisions, and getting more feedback from the product owner.  That&#8217;s why Agile preaches making decisions as late as possible.  The essence of Agile is expecting and accepting change.</li>
<li>Even if you have time to do the extra work, there may be higher priority stories to do first.</li>
</ul>
<p>There.  I did it.  Guess I&#8217;m done!</p>
<p>&copy;2012 <a href="http://www.thekramers.net/wordpress">/home/dkramer</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.thekramers.net/wordpress/index.php/20110402/doing-just-whats-needed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

