<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.nobugleftbehind.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>No bug left behind</title>
	
	<link>http://nobugleftbehind.com</link>
	<description>Software quality, testing and programming.</description>
	<lastBuildDate>Mon, 27 Jul 2009 17:12:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.nobugleftbehind.com/nblb" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="nblb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">nblb</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Software Quality Digest – 2009-07-27</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-07-27/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-07-27/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 17:09:23 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=1035</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality [...]]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://www.codinghorror.com/blog/archives/001288.html">Software Engineering: Dead?</a> &#8211; &#8220;And yet, it&#8217;s also a release. It&#8217;s as if a crushing weight has been lifted from my chest. I can publicly acknowledge what I&#8217;ve slowly, gradually realized over the last 5 to 10 years of my career as a software developer: what we do is craftsmanship, not engineering. And I can say this proudly, unashamedly, with nary a shred of self-doubt.&#8221;</li>
<li><a href="http://philltopia.com/blog/2009/07/12/the-four-essential-laws-of-software-updates/">The four essential laws of software updates</a> &#8211; &#8220;Automatic updates are becoming more and more common, which is a good thing. They save us time and hassle: instead of finagling with installers, we can just sit back, relax, and let all our programs do the work for us. Oh, if only it were that easy.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/07/21/good-lazy-and-bad-lazy/">Good Lazy and Bad Lazy</a> &#8211; &#8220;Something which I&#8217;ve come to realise more recently is that it&#8217;s not necessarily true that being lazy as a developer is always a good thing &#8211; it depends in what way you are being lazy because there are certainly good and bad ways in which you can express your laziness!&#8221;</li>
<li><a href="http://devlicio.us/blogs/tim_barcz/archive/2009/07/23/book-review-the-art-of-unit-testing.aspx">Book Review: The Art of Unit Testing</a> &#8211; &#8220;Given my personal commitment to software quality through testing, I was excited to get my hands on a copy of Roy Osherove’s The Art of Unit Testing from Manning. A few weeks ago our copy was delivered and I have been excited for an upcoming vacation which would give me the time to sit down and churn through the book.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://www.eflorenzano.com/blog/post/my-thoughts-nosql/">My Thoughts on NoSQL</a> &#8211; &#8220;In the late nineties and early thousands, websites were mostly read-only&#8211;a publisher would create some content and users would consume that content. [..] And with that fundamental shift away from read-heavy architectures to read/write and write-heavy architectures, a lot of the way that we think about storing and retrieving data needed to change.&#8221;</li>
<li><a href="http://highscalability.com/latency-everywhere-and-it-costs-you-sales-how-crush-it">Latency is Everywhere and it Costs You Sales &#8211; How to Crush it</a> &#8211; &#8220;Latency matters. Amazon found every 100ms of latency cost them 1% in sales. Google found an extra .5 seconds in search page generation time dropped traffic by 20%. A broker could lose $4 million in revenues per millisecond if their electronic trading platform is 5 milliseconds behind the competition. &#8220;</li>
<li><a href="http://alwaysnewmistakes.wordpress.com/2009/07/20/scalability-issues-what-are-they-and-their-repercussions/">Scalability issues for dummies</a> &#8211; &#8220;Every once in a while I get people asking me what’s taking me so long to open my startup Inkzee to the public. They also ask me what exactly have I been doing as the web seems exactly the same. I normally answer that things aren’t easy, that it takes time, specially if you are alone, like I am. After a while I end up explaining my problems with scalability and that’s the point where people just can’t follow you. I’m going to explain here what are scalability problems and how deep the repercussions are for a small company.&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://www.brendel.com/consulting/blog/2009/07/considering-agile-deciding-against-it.html">Considering Agile, deciding against it</a> &#8211; &#8220;Some time ago, while managing a distributed software project, I spoke to a developer who was thinking about joining our team. This individual was a big proponent of Agile development. When he found out that in our particular project we were not using an Agile development model, he began to lose interest. He compared my position there to the position of the Tom Smykowski character from the movie Office Space.&#8221;</li>
<li><a href="http://www.noop.nl/2009/07/planning-for-featurecomplete-deadlines.html">Planning for Feature-Complete Deadlines</a> &#8211; &#8220;Planning to catch a plane is a perfect example of risk management for contained change: problems are expected, but they usually fall within a range you can still make an estimate of. (I wrote about this in my post The Three Types of Change.) Using experience I can make a probabilistic forecast of the time required to catch the plane. It will take two hours at the least to be there on time. But when Murphy&#8217;s Law hits me (and it usually does in some way) it could be anywhere up to four hours.&#8221;</li>
</ul>
<h2>Usability and Accessibility</h2>
<ul>
<li><a href="http://www.useit.com/alertbox/mobile-usability.html">Mobile Usability</a> &#8211; &#8220;When designing for mobile, there&#8217;s a tension between (a) making content and navigation salient so that people do not work too hard to get there, and (b) designing for a small screen and for slow downloading speeds. That&#8217;s why almost every design decision must be made in the context of the site being designed, and what works for a site may not work for another. &#8220;</li>
<li><a href="http://www.alistapart.com/articles/the-inclusion-principle/">The Inclusion Principle</a> &#8211; &#8220;Affordance allows us to look at something and intuitively understand how to interact with it. For example, when we see a small button next to a door, we know we should push it with a finger. Convention tells us it will make a sound, notifying the homeowner that someone is at the door. This concept transfers to the virtual environment: when we see a 3D-shaped button on a web page, we understand that we are supposed to “push” it with a mouse-click.&#8221;</li>
<li><a href="http://brianwill.net/blog/2009/07/20/reinventing-the-desktop-for-real-this-time-part-1/">Reinventing the desktop (for real this time) – Part 1</a> &#8211; &#8220;Since the 1980’s, this functionality has been presented to users on most systems with only minor variations upon the standard WIMP (Window, Icons, Menu, Pointer) model handed down from Xerox PARC and the first Mac, so, obviously, the modern desktop is not really broken: people have been getting by with essentially the same design for decades now. Still, there is a perennial longing for something better, so the question is what motivates this feeling?&#8221;</li>
</ul>
<h2>Security</h2>
<ul>
<li><a href="http://securethoughts.com/2009/07/hacking-csrf-tokens-using-css-history-hack/">Hacking CSRF Tokens using CSS History Hack</a> &#8211; &#8220;In this exploit, we discover the csrf token by brute forcing the various set of urls in browser history. We will try to embed different csrf token values as part of url and check if the user has visited that url. If yes, there is a good chance that the user is either using the same CSRF token in the current active session or might have used that token in a previous session. Once we have a list of all such tokens, we can just try our csrf attack on the server using that small list.&#8221;</li>
</ul>
<div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=_sk-_Sra3FQ:e7rx29XAre0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=_sk-_Sra3FQ:e7rx29XAre0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=_sk-_Sra3FQ:e7rx29XAre0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=_sk-_Sra3FQ:e7rx29XAre0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=_sk-_Sra3FQ:e7rx29XAre0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=_sk-_Sra3FQ:e7rx29XAre0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=_sk-_Sra3FQ:e7rx29XAre0:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-07-27/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-07-13</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-07-13/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-07-13/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 19:54:34 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Digest]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=973</guid>
		<description><![CDATA[The Software Quality Digest is back. The last two months were too busy to compile a decent digest, sorry about that. We prepared our new website and were working on our upcoming product. So, without further ado, here&#8217;s the digest with interesting articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest is back. The last two months were too busy to compile a decent digest, sorry about that. We <a href="http://blog.gurock.com/postings/new-gurock-software-website-launched/654/">prepared our new website</a> and <a href="http://blog.gurock.com/postings/introducing-testrail-test-case-management-software/636/">were working on our upcoming product</a>. So, without further ado, here&#8217;s the digest with interesting articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two-three weeks. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://hamletdarcy.blogspot.com/2009/06/forgotten-refactorings.html">Forgotten Refactorings</a> &#8211; &#8220;I don&#8217;t know how much more emphasized step 1 of refactoring could be: don&#8217;t touch anything that doesn&#8217;t have coverage. Otherwise, you&#8217;re not refactoring; you&#8217;re just changing shit. And not a single IDE enforces or encourages you to have test coverage before mucking about with the refactorings.&#8221;</li>
<li><a href="http://sdk.org.nz/2009/02/25/why-unit-testing-is-a-waste-of-time/">Benefits of automated functional testing</a> &#8211; &#8220;In the last few years of writing “enterprise” software in Java I’ve created and maintained thousands of unit tests, often working on projects that require 80% or better code coverage. Lots of little automated tests, each mocking out dependencies in order to isolate just one unit of code, ensuring minimal defects and allowing us to confidently refactor code without breaking everything. Ha! I’ve concluded that we’d be better off deleting 90% of these tests and saving a lot of time and money in the process.&#8221;</li>
<li><a href="http://www.aptmediainc.com/About/Apt-Lab/Designers-Who-Wireframe">Designers who wireframe: pros and cons</a> &#8211; &#8220;There are plenty of conflicts of interest inherent in running a small creative shop where everyone has to wear lots of hats (or where one person wears all the hats)—like the account manager ideally should not be responsible for quality control because there&#8217;s too much conflict between the need to keep the job within budget and the need to take the time to do things right.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://adam.blog.heroku.com/past/2009/7/6/sql_databases_dont_scale/">SQL Databases Don&#8217;t Scale</a> &#8211; &#8220;A question I’m often asked about Heroku is: “How do you scale the SQL database?” There’s a lot of things I can say about using caching, sharding, and other techniques to take load off the database. But the actual answer is: we don’t. SQL databases are fundamentally non-scalable, and there is no magical pixie dust that we, or anyone, can sprinkle on them to suddenly make them scale.&#8221;</li>
<li><a href="http://natishalom.typepad.com/nati_shaloms_blog/2009/07/no-to-sql-anti-database-movement-gains-steam-my-take.html">No to SQL? Anti-database movement gains steam</a> &#8211; &#8220;One of the requirement for this new service was the need to build a graph that includes friends of friends, and products in catalogs. The process for building that graph with an In-Memory-Data-Grid took 2-3 msec vs. tens of seconds with a traditional approach (note that part of the complexity in this case is that the query itself is ad-hoc and can’t be easily partitioned). Building that graph on-the-fly at these speeds just couldn&#8217;t be done with traditional SQL database.&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://blogcoward.com/archive/2009/07/04/The-problem-with-BDUF-is-the-lsquoBrsquo-not-the-lsquoUFrsquo.aspx">The problem with BDUF is the ‘B’ not the ‘UF’</a>  &#8211; &#8220;I’m sure every developer with even the slightest amount of experience has run into a situation where a proposed design for a domain concept is initiated, and then someone (perhaps even the developer in question) has decided something along the lines of: “We need to generalize this so that it covers future requirements.”&#8221;</li>
<li><a href="http://agilesoftwaredevelopment.com/blog/janusz-gorycki/agile-dead">Agile is Dead</a> &#8211; &#8220;The agile revolution has won. There is no doubt about it. No longer are its evangelists the pioneers who blaze new trails and chart the unknown, like they used to a couple of years ago. Agile principles, methodology, tool sets, even agile lingo, have become mainstream. Frankly, everybody and their dog is “doing agile” these days. Of course, there are pockets of resistance in the more backward (or “conservative” to be more polite) companies, but they are destined to eventually see the error of their ways and switch over.&#8221;</li>
</ul>
<h2>Usability and Accessibility</h2>
<ul>
<li><a href="http://www.useit.com/alertbox/respect.html">Building Respect for Usability Expertise</a> &#8211; &#8220;Respect comes only from proven performance. Once content owners see how much better customers react to websites that are written and designed according to established usability guidelines, they&#8217;ll start respecting you more. Sadly, this is a chicken-and-egg situation: you get to demonstrate the value of your advice only if it&#8217;s being implemented. &#8220;</li>
<li><a href="http://www.marcozehe.de/2009/06/22/my-first-experience-using-an-accessible-touch-screen-device/">My first experience using an accessible touch screen device</a> &#8211; &#8220;And I must say this was an amazing experience! My fingers definitely need to get used to gestures such as flicking or tapping, or using a rotor. But having an iPod Nano 4th generation helped with that, since moving the finger over the screen like on a dialer felt most like tracking around the iPod’s click wheel. Even the sound the rotor makes is the same. <img src='http://nobugleftbehind.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/">Low Level Bit Hacks You Absolutely Must Know</a> &#8211; &#8220;Bit hacks are ingenious little programming tricks that manipulate integers in a smart and efficient manner. Instead of performing some operation (such as counting the 1 bits in an integer) by looping over individual bits, these programming nuggets do the same with one or two carefully chosen bitwise operations.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://www.sirlin.net/articles/subtractive-design.html">Subtractive Design</a> &#8211; &#8220;Subtractive design is the process of removing imperfections and extraneous parts in order to strengthen the core elements. You can think of a design as something you build up, construct and let grow, but it’s pruning away the excess that gives a design a sense of simplicity, elegance, and power.&#8221;</li>
<li><a href="http://www.red-sweater.com/blog/825/getting-pretty-lonely">Getting Pretty Lonely</a> &#8211; &#8220;WordPress is licensed under the terms of the Gnu Public License (GPL) which, in a nutshell, stipulates that you are free to use the software however you like, but if you make changes and distribute those changes, then you must share those changes under the same terms. This simple, radical restriction means that you are prohibited from taking a GPL project and incorporating it with a closed-source project.&#8221;</li>
<li><a href="http://www.entertainingcode.com/archives/making-games/">Making Games</a> &#8211; &#8220;I hear from programmers every now and then who are considering trying to get into the games industry. Our projects are strange beasts that are similar to other software projects in some ways, yet vastly different in other ways. Still, if you look at it from outside, most of these differences will be hard to spot.&#8221; and <a href="http://www.entertainingcode.com/archives/getting-into-games-a-follow-up/">a follow-up</a>.</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=LJfAVdLv9dI:6bDt-sWmCWE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=LJfAVdLv9dI:6bDt-sWmCWE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=LJfAVdLv9dI:6bDt-sWmCWE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=LJfAVdLv9dI:6bDt-sWmCWE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=LJfAVdLv9dI:6bDt-sWmCWE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=LJfAVdLv9dI:6bDt-sWmCWE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=LJfAVdLv9dI:6bDt-sWmCWE:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-07-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-05-05</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-05-05/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-05-05/#comments</comments>
		<pubDate>Tue, 05 May 2009 20:00:25 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Digest]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=947</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://devlicio.us/blogs/anne_epstein/archive/2009/04/24/the-case-for-multiple-dbs-in-multi-tenancy-situations.aspx">The Case for Multiple DBs in Multi Tenancy situations</a> &#8211; &#8220;There are two major, reasonable approaches that I know of:  First, to have a database per tenant. (This is the approach discussed by Ayende in his multi tenancy series) A second common alternative is to have a tenant id column in all tables that require differentiation by client.  My team was in a situation requiring multitenancy, and needed to select an approach.   Wary of the idea of multiple databases, the team immediately decided to go with the tenant column approach.&#8221;</li>
<li><a href="http://cacm.acm.org/magazines/2009/5/24646-api-design-matters/fulltext">API Design Matters</a> &#8211; &#8220;After more than 25 years as a software engineer, I still find myself underestimating the time it takes to complete a particular programming task. Sometimes, the resulting schedule slip is caused by my own shortcomings: as I dig into a problem, I simply discover it is a lot more difficult than I initially thought, so the problem takes longer to solve—such is life as a programmer.&#8221;</li>
<li><a href="http://blog.objectmentor.com/articles/2009/04/20/is-the-supremacy-of-object-oriented-programming-over">Is the Supremacy of Object-Oriented Programming Over?</a> &#8211; &#8220;I never expected to see this. When I started my career, Object-Oriented Programming (OOP) was going mainstream. For many problems, it was and still is a natural way to modularize an application. It grew to (mostly) rule the world. Now it seems that the supremacy of objects may be coming to an end, of sorts.&#8221;</li>
<li><a href="http://codebetter.com/blogs/gregyoung/archive/2009/04/28/java-vs-net-developers.aspx">Java vs .NET Developers</a> &#8211; &#8220;Much of what we discuss in .NET is far more common in Java as Java has a far healthier community than Microsoft. You will find terrible developers on both side but the terrible developers on the Java side have more mainstream exposure to good ideas than on the Microsoft side.&#8221;</li>
<li><a href="http://ayende.com/Blog/archive/2009/04/25/the-difference-between-infrastructure-amp-application.aspx">The difference between Infrastructure &#038; Application</a> &#8211; &#8220;Recently I am finding myself writing more and more infrastructure level code. Now, there are several reasons for that, mostly because the architectural approaches that I advocate don’t have a good enough infrastructure in the environment that I usually work with. Writing infrastructure is both fun &#038; annoying.&#8221;</li>
<li><a href="http://nplus1.org/articles/a-crash-course-in-failure/">A Crash Course In Failure</a> &#8211; &#8220;When is the last time you intentionally unplugged a live, production server? Better still, when is the last time you intentionally unplugged a rack of live, production servers? I can think of a couple of reasons why the answer might be &#8216;never.&#8217;&#8221;</li>
<li><a href="http://thinkvitamin.com/business/to-spec-or-not-to-spec/">To Spec or Not to Spec</a> &#8211; &#8220;There’s been much debate of late regarding speculative or ’spec’ work and the associated problems (and benefits) of it. [..] But what exactly is spec work? Some people don’t seem to know. Why all the hoo-ha and what, if anything, should we do about it?&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://www.facebook.com/note.php?note_id=76191543919">Needle in a haystack: efficient storage of billions of photos</a> &#8211; &#8220;The Photos application is one of Facebook’s most popular features. Up to date, users have uploaded over 15 billion photos which makes Facebook the biggest photo sharing website. For each uploaded photo, Facebook generates and stores four images of different sizes, which translates to a total of 60 billion images and 1.5PB of storage. The current growth rate is 220 million new photos per week, which translates to 25TB of additional storage consumed weekly. At the peak there are 550,000 images served per second. These numbers pose a significant challenge for the Facebook photo storage infrastructure.&#8221;</li>
<li><a href="http://henry.precheur.org/2009/4/23/GZIP_encoding_%3D_happier_users%3F.html">GZIP encoding = happier users?</a> &#8211; &#8220;I guess there are very few cases where you shouldn’t use gzip your content. If your typical page is less than 100 bytes then gzipping it could hurt the client’s and the server’s performance. But no website —except maybe a few web-services— serves pages with a typical size of 100 bytes or less. So there’s no excuse for serving uncompressed HTML.&#8221;</li>
<li><a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=216500409">Use Thread Pools Correctly: Keep Tasks Short and Nonblocking</a> &#8211; &#8220;Thread pool tasks should be as small as possible, but no smaller. One reason to prefer making tasks short is because short tasks can spread more evenly and thus use hardware resources well. [...] The larger the tasks, the more unwieldy the pool&#8217;s workload is, and the harder it will be to spread the work evenly across the machine all the time. On the other hand, tasks shouldn&#8217;t be too short because there is a real cost to executing work as a thread pool task.&#8221;</li>
</ul>
<h2>Usability and Accessibility</h2>
<ul>
<li><a href="http://www.alistapart.com/articles/indefenseofeyecandy">In Defense of Eye Candy</a> &#8211; &#8220;We’ve all seen arguments in the design community that dismiss the role of beauty in visual interfaces, insisting that good designers base their choices strictly on matters of branding or basic design principles. Lost in these discussions is an understanding of the powerful role aesthetics play in shaping how we come to know, feel, and respond.&#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://blogs.msdn.com/ericlippert/archive/2009/04/27/the-stack-is-an-implementation-detail.aspx">The Stack Is An Implementation Detail</a> &#8211; &#8220;Almost every article I see that describes the difference between value types and reference types explains in (frequently incorrect) detail about what “the stack” is and how the major difference between value types and reference types is that value types go on the stack. I’m sure you can find dozens of examples by searching the web.&#8221; and <a href="http://blogs.msdn.com/ericlippert/archive/2009/05/04/the-stack-is-an-implementation-detail-part-two.aspx">part 2</a></li>
<li><a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/26/validation-part-1-getting-started.aspx">Validation &#8211; Part 1 &#8211; Getting Started</a> &#8211; &#8220;There are a lot of good and free frameworks to help you deal with validating user-submitted data. [..] Despite these frameworks, there may be situations where you need to roll your own, which is what we&#8217;re going to look at in this series. We won&#8217;t be doing anything fancy, but we will look at an end-to-end custom solution.&#8221; <a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/27/validation-part-2-client-side.aspx">part 2</a> and <a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/28/validation-part-3-server-side.aspx">part 3</a></li>
<li><a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">The Mystery Of CSS Sprites: Techniques, Tools And Tutorials</a> &#8211; &#8220;CSS Sprites are not new. In fact, they are a rather well-established technique and have managed to become common practice in Web development. Of course, CSS sprites are not always necessary, but in some situation they can bring significant advantages and improvements – particularly if you want to reduce your server load.&#8221;</li>
<li><a href="http://codebetter.com/blogs/karlseguin/archive/2009/04/24/is-asp-net-mvc-a-half-baked-solution.aspx">Is ASP.NET MVC a half-baked solution?</a> &#8211; &#8220;Let&#8217;s be clear, ASP.NET MVC is an improvement over WebForms &#8211; and those developers refusing to leverage ASP.NET MVC (or something else) for new projects are simply lazy. WebForms is full of leaky abstraction, really tight coupling, and ridiculous concepts &#8211; such as viewstates and postbacks.&#8221; and a <a href="http://codebetter.com/blogs/jeremy.miller/archive/2009/04/24/my-quick-oversimplified-asp-net-mvc-pros-and-cons.aspx">follow-up</a></li>
<li><a href="http://blog.wekeroad.com/blog/i-spose-ill-just-say-it-you-should-learn-mvc/">I Spose I’ll Just Say It: You Should Learn MVC</a> &#8211; &#8220;WebForms is a lie. It’s abstraction wrapped in deception covered in lie sauce presented on a plate full of diversion and sleight of hand. Nothing you do with Webforms has anything to do with the web – you let it do the work for you. This, friends, is a big deal (at least to me): You’re working in a lie.&#8221;</li>
<li><a href="http://asserttrue.blogspot.com/2009/04/two-techniques-for-faster-javascript.html">Two techniques for faster JavaScript</a> &#8211; &#8220;I like things that go fast, and that includes code that runs fast. With JavaScript (and Java, too), that can be a challenge. So much the better, though. I like challenges too.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://www.codinghorror.com/blog/archives/001258.html">Has The Virtualization Future Arrived?</a> &#8211; &#8220;The attraction of virtualizing older operating systems is that it throws off the eternal yoke of backwards compatibility. Instead of bending over backwards to make sure you never break any old APIs, you can build new systems free of the contortions and compromises inherent in guaranteeing that new versions of the operating system never break old applications. &#8220;</li>
<li><a href="http://www.ericsink.com/entries/time_space_tradeoffs.html">Time and Space Tradeoffs in Version Control Storage</a> &#8211; &#8220;Storage is one of the most difficult challenges for a version control system.  For every file, we must store every version that has ever existed.  The logical size of a version control repository never shrinks.  It just keeps growing and growing, and every old version needs to remain available. So, what is the best way to store every version of everything?&#8221;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=4ncbGwC8BU4:TqMcu_WIgW0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=4ncbGwC8BU4:TqMcu_WIgW0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=4ncbGwC8BU4:TqMcu_WIgW0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=4ncbGwC8BU4:TqMcu_WIgW0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=4ncbGwC8BU4:TqMcu_WIgW0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=4ncbGwC8BU4:TqMcu_WIgW0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=4ncbGwC8BU4:TqMcu_WIgW0:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-05-05/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-04-21</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-04-21/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-04-21/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 18:43:03 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Digest]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=933</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks this time. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past two weeks this time. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://asserttrue.blogspot.com/2009/04/turn-off-your-step-thru-debugger.html">Turn off your step-thru debugger</a> &#8211; &#8220;My mentor suggested a couple more approaches to try (and when I tried them, they worked, of course). Then he made a remark that has stayed with me ever since. &#8216;I try to stay away from debuggers,&#8217; he said. &#8216;A debugger is a crutch. You&#8217;re better off without it.&#8217;&#8221;</li>
<li><a href="http://www.codinghorror.com/blog/archives/001239.html">Exception-Driven Development</a> &#8211; &#8220;When a user informs me about a bona fide error they&#8217;ve experienced with my software, I am deeply embarrassed. And more than a little ashamed. I have failed to see and address the issue before they got around to telling me. I have neglected to crash responsibly.&#8221;</li>
<li><a href="http://www.lostechies.com/blogs/joshua_lockwood/archive/2009/04/13/quot-i-don-t-have-time-to-test-quot.aspx">&#8220;I don&#8217;t have time to test!&#8221;</a> &#8211; &#8220;Now, I think that abandoning testing due to time constraints is reckless and irresponsible.  I sometimes catch myself thinking that I don&#8217;t have time for test writing, but I soon find myself proving this argument wrong.  Often people who don&#8217;t have time to test will waste hours debugging code that they are desperately trying to force into production.  This code ends up being brittle and costly to produce anyway.&#8221;</li>
<li><a href="http://www.threeriversinstitute.org/blog/?p=104">Coupling and Cohesion</a> &#8211; &#8220;One of the things about design that makes it such a joy is that it requires balance. If elements are too large, each change will be more expensive than it needs to be. If elements are too small, changes will ripple across elements. And optimizing the design takes place against the backdrop of an unpredictable stream of changes.&#8221;</li>
<li><a href="http://bradwilson.typepad.com/blog/2009/04/its-not-tdd-its-design-by-example.html">It’s Not TDD, It’s Design By Example</a> &#8211; &#8220;The word “test” in software is a very loaded term. The first time I came across a tester (as in, a person performing the quality assurance role) was in my first professional job. We were never taught about testing at college, as we were all there to learn to be developers.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://www.electricmonk.nl/log/2009/04/19/performance-optimization-the-first-thing-to-do/">Performance optimization: The first thing to do</a> &#8211; &#8220;So, here is my point: The most important thing about optimization is analysis. You can&#8217;t fix a problem by simply trying different solutions to see if they work. In order to fix a problem, you have to understand the problem first.&#8221;</li>
<li><a href="http://www.hfadeel.com/Blog/?p=127">Learned lessons from the largest player (Flickr, YouTube, Google, etc)</a> &#8211; &#8220;If you working in new website; don’t buy too much equipment just because you want your website to be faster. Start slow, and small, and using the right statistics you will know the right direction. Measuring the right thing is fundamental and important. Selecting a benchmark and comparing the results seems, initially at least, to be a simple problem, but a host of mistakes are made during this process.&#8221;</li>
<li><a href="http://agiletesting.blogspot.com/2009/04/experiences-deploying-large-scale.html">Experiences deploying a large-scale infrastructure in Amazon EC2</a> &#8211; &#8221;<br />
You&#8217;ll say that you&#8217;ve done lots of load testing before. This is very good&#8230;.but it still will not prepare you for the sheer amount of traffic that the internets will throw at your application. That&#8217;s when all the things I mentioned before &#8212; automated deployment of new instances, charting of the important variables that you want to keep track of, quick identification of bottlenecks &#8212; become very useful.&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://codeofdoom.com/wordpress/2009/04/19/why-do-our-time-estimates-suck/">Why do our time estimates suck?</a> &#8211; &#8220;Everyone dealt with it in some form of another. Either you have given your estimations and you missed it by a long shot or someone handed you some estimations and they grossly underestimated the amount of work. And when that mark is missed, its the wag of the finger and the rain cloud of shame upon you. Management has deemed you a failure. Way to go.&#8221;</li>
<li><a href="http://www.randsinrepose.com/archives/2009/04/15/the_pond.html">The Pond</a> &#8211; &#8220;I cringe. It’s Ian and Ian is a senior engineer. He’s a rock. He gets it done. I never have to ask him twice and, after six years, Ian has every right to ask to work remote. But I’m still freaked because my first thought when anyone asks to work remote is, “This fine person is a year away from either quitting or being fired.” Why? Because they’re asking to leave the Pond.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/04/10/pair-programming-the-code-fairy/">Pair Programming: The Code Fairy</a> &#8211; &#8220;One of the hardest situations that comes up when pair programming is when you want to solve a problem in a certain way but you can&#8217;t persuade your pair that it&#8217;s the approach you should take. The temptation in these situations is to wait until your pair isn&#8217;t around, maybe by staying late at the end of the day or coming in early the next day and then making the changes to the code that you wanted to make but didn&#8217;t when you were pairing with them.&#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://www.simple-talk.com/sql/t-sql-programming/constraint-yourself!/">Constraint Yourself!</a> &#8211; &#8220;Part of this epiphany is realizing that DDL (Data Declaration Language), DML (Data Manipulation Language) and DCL (Data Control Language) are all an intrinsic part of SQL and not disjoint languages that stand apart.  This article deals with the DDL, but better DDL makes for better DML and DCL.  When a business rule is in the DDL, it is done one way, one place, one time.  You do not have to hope that every application and every DML statement gets all the rules right.  You do not have to hope that a change in the rules will be corrected in hundred or even thousands of places in the system. &#8220;</li>
<li><a href="http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/">The Dangers of the Large Object Heap</a> &#8211; &#8220;Usually, .NET developers don’t need to think too much about how their objects are being laid out in physical memory: after all, .NET has a garbage collector and so is capable of automatically removing ‘dead’ objects and rearranging memory so that the survivors are packed in the most efficient manner possible. The garbage collector has limits to what it can do, however; and when these limits are reached, then the runtime can exhaust memory in a way that is surprising and confusing to any developer who is not aware of how .NET chooses to lay out objects in memory.&#8221;</li>
<li><a href="http://www.smashingmagazine.com/2009/04/07/15-essential-checks-before-launching-your-website/">15 Essential Checks Before Launching Your Website</a> &#8211; &#8220;Your website is designed, the CMS works, content has been added and the client is happy. It’s time to take the website live. Or is it? When launching a website, you can often forget a number of things in your eagerness to make it live, so it’s useful to have a checklist to look through as you make your final touches and before you announce your website to the world.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://brendan.enrick.com/blog/we-slice-software-vertically-just-like-bread/">We Slice Software Vertically Just Like Bread</a> &#8211; &#8220;Some tasks look like they&#8217;ll take weeks to complete. That my friend is not a task. We need to split that. There is probably some aspect of that which could be completed in a day.&#8221;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=PcuFUvSpA-I:zH9WWAXBa3A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=PcuFUvSpA-I:zH9WWAXBa3A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=PcuFUvSpA-I:zH9WWAXBa3A:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=PcuFUvSpA-I:zH9WWAXBa3A:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=PcuFUvSpA-I:zH9WWAXBa3A:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=PcuFUvSpA-I:zH9WWAXBa3A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=PcuFUvSpA-I:zH9WWAXBa3A:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-04-21/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choosing a Development Stack for Installable Web Applications: Part II</title>
		<link>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-ii/</link>
		<comments>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-ii/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 19:17:58 +0000</pubDate>
		<dc:creator>Dennis Gurock</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=231</guid>
		<description><![CDATA[As I&#8217;ve explained in the first posting of this small blog series, we have been looking for an ideal web development stack for a new installable product. We looked at the most popular development stacks, platforms and frameworks before eventually deciding which one to use. I will try to summarize the pros and cons of [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve explained in the <a href="http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-i/">first posting</a> of this small blog series, we have been looking for an ideal web development stack for a new installable product. We looked at the most popular development stacks, platforms and frameworks before eventually deciding which one to use. I will try to summarize the pros and cons of the stacks we evaluated and explain how we&#8217;ve come to the final decision.</p>
<div style="margin: 1em 0">
<img width="580" height="275" alt="Photo of books about web development" src="http://nobugleftbehind.com/wp-content/uploads/2009/04/webapps1.jpg"/></div>
<p>We aren&#8217;t experts in all the different frameworks and platforms we evaluated and there are probably some details we got wrong. Feel free to correct us by leaving a comment. So without further ado, here are the pros and cons of the different development stacks in regards to installable web applications:</p>
<ul>
<li><strong>Java (including Grails and Spring)</strong>
<p>Java and the various frameworks such as <a href="http://www.springsource.org/">Spring</a> and the dynamic counterpart <a href="http://groovy.codehaus.org/">Groovy</a> combined with the <a href="http://www.grails.org/">Grails</a> framework qualify in many ways to be the perfect web development stacks for installable applications. The Java platform is very mature and has very good support for cross-platform and cross-database development. If you use frameworks such as Spring, you also benefit from the MVC pattern and from enterprise features and libraries. Java also isn&#8217;t going anywhere and it&#8217;s safe to say that Java will be available for the next 10+ years and probably a lot longer. Unicode support is also excellent, which is rare for cross-platform development stacks.</p>
<p>However, one of the biggest drawbacks of this platform also made us decide against using Java: deploying Java web applications is complicated and scares the hell out of us. We wouldn&#8217;t feel comfortable having to support deployment scenarios with all the different available Java application servers out there, which you need to run a Java web application. The need for an application server such as Tomcat or JBoss is a serious disadvantage, especially if your customers aren&#8217;t experienced with installing and configuring such a solution.</li>
<li><strong>Ruby on Rails</strong>
<p><a href="http://rubyonrails.org/">Ruby on Rails</a> is a modern and productive web development stack and framework. Using Ruby as the programming language of choice, it&#8217;s best known for the MVC architecture and the well-integrated ActiveRecord object-relational mapping system for database access. Ruby on Rails also emphasizes the <a href="http://en.wikipedia.org/wiki/Convention_over_Configuration">convention over configuration</a> concept, making it very easy to get started developing web applications. Rails also comes with reasonable support for multiple database servers, but is usually used with MySQL and PostgreSQL.</p>
<p>Recent versions of Rails also improved the support for Unicode and UTF-8 encoding, making it more suitable for applications that are used by users from non-western countries. Rails is usually deployed by configuring a Mongrel cluster (which is easier than it sounds) and using a front-end web server such as Apache, nginx or lighthttp for static content serving and load balancing the different Mongrel processes. Although setting up a run-time environment for Rails applications is still a lot easier than for Java web applications, it can still be problematic for customers who have no experience with Rails and/or Unix environments.</p>
<p>This leads us to the big problem with Rails: the support for Windows servers is miserable. Because most Rails applications are developed, tested and deployed in Unix environments, either for hosted web applications or in-house intranet applications, supporting Windows servers isn&#8217;t an important issue for the Rails team or developer community. However, if you are trying to sell an installable web application to typical companies, Windows servers are still extremely popular for internal application and workgroup servers. And if your potential customers are used to running Windows servers, you better make sure that your solution works flawlessly in this environment.</li>
<li><strong>ASP.NET</strong>
<p>ASP.NET is a good choice for many installable web applications. It&#8217;s reasonable easy to deploy an ASP.NET web application on a Windows Server with IIS and most companies (and potential customers) already have such a server running as an internal application server. The Unicode and localization support is also top-notch and if this is one of your most important requirements, you should definitely consider going with this development stack.</p>
<p>Another big plus for ASP.NET is the strong developer community with countless of blogs, books, websites and forums. The rich offering of user interface controls, libraries and development tools for the .NET platform in general and ASP.NET in particular by third-party vendors is also unmatched. However, ASP.NET also has its problems. ASP.NET Web Forms really encourages mixing application logic with the user interface code, which can result in badly designed applications and hard-to-maintain code. The abstraction in ASP.NET Web Forms that&#8217;s supposed to make web development easier for Windows desktop developers makes the development stack hard to debug and overcomplicates things.</p>
<p>Experienced ASP.NET developers try to workaround these limitations by using patterns such as MVP or MVC. Especially Microsoft&#8217;s new <a href="http://www.asp.net/mvc/">ASP.NET MVC</a> framework is an interesting alternative to Web Forms, as it encourages the separation of business logic, data access/validation and user interface code and makes it easier to build a maintainable application. This leaves us with the biggest drawback of ASP.NET: the lack of cross-platform support. Sure, there&#8217;s <a href="http://mono-project.com/">Mono</a>, an open source .NET implementation that also supports ASP.NET. But while it&#8217;s definitely a nice option to have, it&#8217;s not widely used and I personally would not consider it to develop cross-platform web applications at this point.</li>
<li><strong>PHP</strong>
<p>PHP is arguably the most used web development programming language, despite it&#8217;s many technical <a href="http://www.bitstorm.org/edwin/en/php/">limitations and problems</a>. The main reason PHP has become so popular is that it&#8217;s extremely easy to use and that it&#8217;s supported by virtually all web hosting companies. Developing an PHP application without using a decent application framework will most likely lead to an unmaintainable code base, however. The language itself, although explicitly designed for web development, doesn&#8217;t come with a (MVC) framework and doesn&#8217;t help with separation of concern in any way.</p>
<p>One of the technical limitations is the lack of Unicode support. While most development stacks have quite good Unicode support by now, PHP&#8217;s support for non-western characters is still very limited and if you plan to support most server configurations and multiple databases, it&#8217;s basically non-existent.</p>
<p>Luckily, there are quite a few available PHP frameworks to remove some of the mentioned limitations such as the <a href="http://framework.zend.com/">Zend framework</a>, <a href="http://cakephp.org/">CakePHP</a> or <a href="http://codeigniter.com/">CodeIgniter</a>. Using one of these frameworks makes it a lot easier to write maintainable applications and also provides you with often needed functionality not found in PHP itself, such as a database abstraction layer.</p>
<p>Of course, PHP also has its good sides. Applications written in PHP are very easy to deploy and work on most operating systems and server configurations. Even Microsoft <a href="http://php.iis.net/">is working hard</a> to improve the PHP deployment experience on Windows and IIS, as many popular web applications such as WordPress are written in PHP. The great cross-platform, cross-database support combined with the ease of deployment and available frameworks make PHP a good web development stack, even though it&#8217;s not the best technical choice.
</li>
</ul>
<p>Having evaluated the above mentioned frameworks and having looked at the pros and cons of each development stack, we have come to the conclusion that PHP together with a lightweight framework such as CodeIgniter is the best choice for an installable web development stack, at least today. Yes, from a technical standpoint, PHP is less than great. The ability to easily deploy and run a PHP application on most server configurations, however, easily outweighs its limitations. One drawback that really made us think twice before deciding to go with PHP was the lack of proper Unicode support. Unicode support was originally a really important requirement to us, but we decided that we can do without Unicode support for a few more years until this problem will hopefully solve itself (with better Unicode support in PHP).</p>
<p>You might also be interested in our reasons to choose <a href="http://codeigniter.com/">CodeIginiter</a> as the PHP framework for our application. The great thing about CodeIgniter is that it&#8217;s a really simple framework. Although CodeIgniter only offers the most basic features and you have to implement advanced capabilities such as locale or authentication support yourself, this simplicity makes it really easy to understand the entire code base in a very short amount of time. So even in the unlikely case that we needed to fork this framework because the authors stopped supporting it, we could easily improve and add features to the existing code ourselves, something that is not really feasible with most other frameworks and stacks out there as they are often too complex.</p>
<p>Some months into development we are still happy with our choice. The application is coming along nicely and PHP and CodeIngiter have proven to be a solid development stack for an installable web application so far (of course, the real challenges come when customers deploy our application in many different hosting environments). Our choice of a development stack would most likely be different if we were building a hosted solution where we could control every little aspect of the server environment. But because our customers will have to deploy and host our application themselves, PHP and CodeIgniter are a great choice for us.</p>
<p>Now before you start your next big thing, make sure to consider all your options, as you cannot easily change platforms once you&#8217;ve invested a lot of time and resources.</p>
<div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=JZPtS37fqhA:Oo1bHj8HtOA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=JZPtS37fqhA:Oo1bHj8HtOA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=JZPtS37fqhA:Oo1bHj8HtOA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=JZPtS37fqhA:Oo1bHj8HtOA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=JZPtS37fqhA:Oo1bHj8HtOA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=JZPtS37fqhA:Oo1bHj8HtOA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=JZPtS37fqhA:Oo1bHj8HtOA:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-ii/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-04-06</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-04-06/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-04-06/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 19:26:09 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=850</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality and [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://asserttrue.blogspot.com/2009/03/intentional-api-design.html">Intentional API Design</a> &#8211; &#8220;Don&#8217;t underestimate the importance of having good APIs. And don&#8217;t assume that if the product design is good, APIs will take care of themselves. That&#8217;s like saying if an airplane&#8217;s design is good enough, it will fly itself. That&#8217;s almost true. The problem is the word &#8216;almost.&#8217;&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/04/05/coding-criticising-without-context/">Coding: It&#8217;s all about the context</a> &#8211; &#8220;I&#8217;m not sure who said that &#8216;if you rewrite a system that you didn&#8217;t write the first time you&#8217;ll probably make the same mistakes as the original team did&#8217; but it&#8217;s certainly becoming more clear to me how this would be the case.&#8221;</li>
<li><a href="http://blog.jayfields.com/2009/03/kill-your-darlings.html">Kill Your Darlings</a> &#8211; &#8220;I&#8217;m not sure why so many developers become so attached to code they&#8217;ve written. Perhaps developers have the same attachment to code that artists have to their paintings or music. Or, perhaps they view their legacy code as job security. Whatever the reason, developers seem to have some illogical desire to extend the life of code they&#8217;ve produced.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://www.hfadeel.com/Blog/?p=119">Performance Anti-Patterns</a> &#8211; &#8220;Since software patterns are considered abstractions of positive experience, we can talk about the various approaches that led to these performance problems as anti-patterns—something to be avoided rather than emulated.&#8221;</li>
<li><a href="http://www.hfadeel.com/Blog/?p=120">Art of scalability (series)</a> &#8211; &#8220;At the simplest level, Scalability is about doing more of something. Scaling a web application is about allowing more people to use your application is same time. Scaling it’s the ability to handle larger number of concurrent users.&#8221;</li>
<li><a href="http://www.bluebytesoftware.com/blog/2009/04/01/ARantOnAutomaticParallelism.aspx">A rant on automatic parallelism</a> &#8211; &#8220;I don’t believe the lion’s share of developers want to rearchitect and rewrite their code with parallelism at the forefront of their development process.  They don’t want to think about shipping memory over to the GPU and launching a highly-specialized data parallel kernel of computation, nor do they want to have to add locks and transactions everywhere to make things safe.  But I do, however, believe the lion’s share of developers wouldn’t mind if their code ran faster as hardware got faster (via more cores).&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://www.markhneedham.com/blog/2009/03/31/pair-programming-slowly-but-surely/">Pair Programming: Slowly but surely</a> &#8211; &#8220;Software development for me is a lot more about thinking through our options than coding the first thing that comes to mind and pair programming helps drive this approach to problem solving.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/03/29/pair-programming-from-a-lean-angle/">Pair Programming: From a Lean angle</a> &#8211; &#8220;I&#8217;ve worked on teams which pair programmed the whole time and teams where pair programming was less prevalent and the difference in how well the knowledge of the code base was spread throughout the team is massively different.&#8221;</li>
<li><a href="http://devlicio.us/blogs/vinull/archive/2009/03/28/game-development-going-agile.aspx">Game Development going Agile</a> &#8211; &#8220;Game development differs from business application development in many ways. Performance truly is king and a game dev may write code considered bad form to a business dev. Games have a fixed life cycle; once released there is no new development. This is the opposite of the business apps that are [...]. Differences aside however, it is comforting to see that the same Agile methodology, culture, and process can work for both. &#8220;</li>
<li><a href="http://radar.oreilly.com/2009/03/continuous-deployment-5-eas.html">Continuous deployment in 5 easy steps</a> &#8211; &#8220;It’s a process whereby all code that is written for an application is immediately deployed into production. The result is a dramatic lowering of cycle time and freeing up of individual initiative. It has enabled companies I’ve worked with to deploy new code to production as often as fifty times every day.&#8221;</li>
<li><a href="http://jamesshore.com/Blog/Stumbling-Through-Mediocrity.html">Stumbling Through Mediocrity</a> &#8211; &#8220;Worse, with so many organizations interested in &#8220;being Agile&#8221; rather than &#8220;being great,&#8221; a whole industry is springing up around providing watered-down, non-threatening, non-boat-rocking (and non-functioning) Agile. If the point is to Be Agile, there&#8217;s no need for Agile to actually work. Sell a certificate and walk away. Everyone&#8217;s happy, right? Right?&#8221;</li>
<li><a href="http://agilability.blogspot.com/2009/03/are-some-software-development.html">Are Some Software Development Challenges Too Complex for Agility?</a> &#8211; &#8220;When the concepts of agile software development are introduced to an organization, a common response is, “Sure &#8212; that will work with a simple application, but ours is a very complex ‘Enterprise’ system”. Could it be that core agile software development principles are too simplistic to tackle the really tough situations? I recently found myself in a position in which it appeared that this might be so.&#8221;</li>
</ul>
<h2>Security</h2>
<ul>
<li><a href="http://haacked.com/archive/2009/04/02/anatomy-of-csrf-attack.aspx">Anatomy of a Cross-site Request Forgery Attack</a> &#8211; &#8220;A Cross-site request forgery attack, also known as CSRF or XSRF (pronounced sea-surf) is the less well known, but equally dangerous, cousin of the Cross Site Scripting (XSS) attack. Yeah, they come from a rough family.&#8221;</li>
</ul>
<h2>Usability and Acessibility</h2>
<ul>
<li><a href="http://www.smashingmagazine.com/2009/03/24/designing-drop-down-menus-examples-and-best-practices/">Designing Drop-Down Menus: Examples and Best Practices</a> &#8211; &#8220;As a general rule, most Web developers, especially usability enthusiasts, say it is bad practice to use drop-down menus because they are confusing, annoying and oftentimes dysfunctional. From a design standpoint, however, drop-down menus are an excellent feature because they help clean up a busy layout. If structured correctly, drop-down menus can be a great navigation tool, while still being a usable and attractive design feature.&#8221;</li>
<li><a href="http://www.noupe.com/design/10-creative-rich-ui-interfaces-how-to-create-them.html">10 Creative &#038; Rich UI &#038; How to Create Them</a> &#8211; &#8220;Sometimes it’s just amazing to see, which level of usability, legibility and visual appeal can be achieved using some basic design techniques. In fact, some talented web-developers manage to deliver powerful, functional and gorgeous web-design in “look-and-feel”-style, which is easy to use and nice to see.&#8221;</li>
<li><a href="http://www.smashingmagazine.com/2009/04/03/8-simple-ways-to-improve-typography-in-your-designs/">8 Simple Ways to Improve Typography In Your Designs</a> &#8211; &#8220;Many people, designers included, think that typography consists of only selecting a typeface, choosing a font size and whether it should be regular or bold. For most people it ends there. But there is much more to achieving good typography and it’s in the details that designers often neglect.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://www.codekana.com/blog/2009/04/02/on-the-speed-of-light-innovation-and-the-future-of-parsing/">On the Speed of Light, Innovation, and the Future of Parsing</a> &#8211; &#8220;These are the very early days of computing. We have just started exploring the shore of a new continent, and it’s shocking, because many are already proclaiming that it’s over. But the good news is that there is plenty of unconquered territory, most of the settlers have their eyes covered, and they’re not even attempting to grab any of it.&#8221;</li>
<li><a href="http://www.codinghorror.com/blog/archives/001249.html">Should Competent Programmers be &#8220;Mathematically Inclined&#8221;?</a> &#8211; &#8220;On the other hand, I have not found in practice that programmers need to be mathematically inclined to become great software developers. Quite the opposite, in fact. This does depend heavily on what kind of code you&#8217;re writing, but the vast bulk of code that I&#8217;ve seen consists mostly of the &#8220;balancing your checkbook&#8221; sort of math, nothing remotely like what you&#8217;d find in the average college calculus textbook, even. &#8220;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=DIzZQfSxeVs:fdASX7xUtFM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=DIzZQfSxeVs:fdASX7xUtFM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=DIzZQfSxeVs:fdASX7xUtFM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=DIzZQfSxeVs:fdASX7xUtFM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=DIzZQfSxeVs:fdASX7xUtFM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=DIzZQfSxeVs:fdASX7xUtFM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=DIzZQfSxeVs:fdASX7xUtFM:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-04-06/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-03-30</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-03-30/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-03-30/#comments</comments>
		<pubDate>Mon, 30 Mar 2009 18:57:33 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Digest]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=808</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality and [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://www.codinghorror.com/blog/archives/001244.html">Five Dollar Programming Words</a> &#8211; &#8220;Why are these words worth five dollars? They&#8217;re uncommon words that have a unique and specialized meaning in software development. They are a bit off the beaten path. Words you don&#8217;t hear often, but also words that provide the thrill of discovery, that &#8216;aha&#8217; moment as you realize a certain programming concept you knew only through experimentation and intuition has a name.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/03/22/coding-making-the-debugger-redundant/">Making the debugger redundant</a> &#8211; &#8220;It got me thinking about how the way that we can reduce the need to use the Debugger when writing code in imperative languages. Debugging is so boring and takes so long that spending large amounts of doing it both crushes the spirits and slows you down considerably.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/03/20/coding-reassessing-what-the-debugger-is-for/">Reassessing what the debugger is for</a> &#8211; &#8220;Admittedly the name &#8216;debugger&#8217; doesn&#8217;t really help us here as the name describes a tool that &#8220;helps in locating and correcting programming errors&#8221; which is all well and good but I think it should be one of the last tools that we turn to rather than one of the first.&#8221;</li>
<li><a href="http://ejohn.org/blog/javascript-testing-does-not-scale/">JavaScript Testing Does Not Scale</a> &#8211; &#8220;It&#8217;s become increasingly obvious to me that cross-browser JavaScript development and testing, as we know it, does not scale.&#8221;</li>
<li><a href="http://www2.computer.org/portal/web/csdl/abs/html/mags/so/2007/03/s3024.htm">TDD: The Art of Fearless Programming</a> &#8211; &#8220;Test-driven development is a discipline of design and programming where every line of new code is written in response to a test the programmer writes just before coding.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://asserttrue.blogspot.com/2009/03/how-to-write-fast-code.html">How to write fast code</a> &#8211; &#8220;Key takeaway: Don&#8217;t think in terms of making a slow piece of code run faster. Instead, think in terms of making it do less.&#8221;</li>
<li><a href="http://asserttrue.blogspot.com/2009/03/twice-as-fast-isnt-good-enough.html">Twice-as-fast isn&#8217;t good enough</a> &#8211; &#8220;In very few cases will your life be changed by a two-fold speedup of anything computer-related. If your business plan (for a new technology) is predicated on speed, and the promised performance boost is less than a factor of ten (a full order of magnitude), rethink what you&#8217;re doing. &#8216;Twice as fast&#8217; is not a competitive advantage. Not by a long shot.&#8221;</li>
<li><a href="http://arstechnica.com/open-source/news/2009/03/google-launches-project-to-boost-python-performance-by-5x.ars">Google searches for holy grail of Python performance</a> &#8211; &#8220;Google&#8217;s Python engineers have launched a new project called Unladen Swallow that seeks to improve the performance of the Python programming language. One of the project&#8217;s goals is to replace the Python virtual machine with an LLVM-based JIT.&#8221;</li>
<li><a href="http://pravanjan.wordpress.com/2009/03/24/performance-when-do-i-start-worrying/">Performance &#8211; When do I start worrying?</a> &#8211; &#8220;A common problem of the application designers is to predict when they need to start worrying about the Architectural/System improvements on their application. Do I need to add more resources? If yes, then how long before I am compelled to do so? The question is not only when but also what.&#8221;</li>
<li><a href="http://gojko.net/2009/03/16/qcon-london-2009-upgrading-twitter-without-service-disruptions/">Upgrading Twitter without service disruptions</a> &#8211; &#8220;For every incoming tweet, the messaging system gets notifications for all the folowers, which are then processed asynchronously. One of the most important changes they introduced to improve performance in the last nine months is moving from a Ruby messaging middleware to a custom build JVM-based messaging middleware written in Scala.&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://asserttrue.blogspot.com/2009/03/developers-should-not-be-allowed-to.html">Developers should not be allowed to work overtime</a> &#8211; &#8220;I have a very simple tip for software companies and engineering managers who want to make their developers happier and more productive (and less likely to produce buggy code). Forbid overtime.&#8221;</li>
<li><a href="http://www.45royale.com/blog/articles/the-importance-of-wireframing/">The Importance of Wireframing</a> &#8211; &#8220;Since wireframes take considerably less time to generate than full color comps, you can spend time early on using them to map out all of the pages for a particular site. Even at this early stage you can get a sense of the user experience and therefore spot potential usability problems with your design.&#8221;</li>
<li><a href="http://www.gracesmith.co.uk/get-wireframing-the-all-in-one-guide/">Get Wireframing: The All-In-One Guide</a> &#8211; &#8220;Wireframing is a great tool to incorporate into your projects as it allows for rapid prototyping and helps to pinpoint any potential problems. I personally find it invaluable on projects to have a visual representation of content, hierarchy and layout. Overall it’s an excellent step to incorporate into your project before the design process begins for both you and your clients.&#8221;</li>
<li><a href="http://devlicio.us/blogs/christopher_bennage/archive/2009/03/24/idealistic-vs-practical.aspx">Idealistic vs. Practical</a> &#8211; &#8220;Is Agile idealistic or practical? Agile does embraces a set of principles (ideals) and I’ve seen many of its adherents become drunk with the beauty of it. I’ve been there a few times myself. So yes, it is idealistic in that respect. However, I think a better question is this: Is Agile merely idealistic?&#8221;</li>
</ul>
<h2>Usability and Acessibility</h2>
<ul>
<li><a href="http://www.useit.com/alertbox/mega-dropdown-menus.html">Mega Drop-Down Navigation Menus Work Well</a> &#8211; &#8220;Big, two-dimensional drop-down panels group navigation options to eliminate scrolling and use typography, icons, and tooltips to explain the user&#8217;s choices. &#8220;</li>
<li><a href="http://thinkvitamin.com/features/white-space-how-to-get-it-right/">White Space: How to Get it ‘Right’</a> &#8211; &#8220;Space is important in layout. Space can be created by content – such as text, images, lists, logos etc. – or it can be created by the space in—between content, called negative space, or whitespace. Space can be passive; a by—product of the layout process. Or, it can be active; there for a reason, to guide the user’s eye, or help them make a decision.&#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://amix.dk/blog/viewEntry/19414">Fast polling using C, memcached, nginx and libevent</a> &#8211; &#8220;In this post I&#8217;ll show you how to implement really fast polling using C and libevent, memcached and nginx. The performance of the server is over 2400 request pr. second on a not optimized Mac Book &#8211; that&#8217;s 144.000 requests pr. minute.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://asserttrue.blogspot.com/2009/03/java-as-legacy-language.html">Java as Legacy Language</a> &#8211; &#8220;We owe a lot to Java, clearly, but the sheer cost of using Java for smaller-scale projects is driving the creation of new, lighter-weight languages and frameworks that offer a better impedance match with agile working styles. Going forward, it simply won&#8217;t be economical to use Java for most kinds of development.&#8221;</li>
<li><a href="http://www.alistapart.com/articles/theeleganceofimperfection">The Elegance of Imperfection</a> &#8211; &#8220;Bringing heart to web experiences can be difficult, since websites and applications are fundamentally a construct of logic (via code). While you can’t create a website that functions as a pure expression of wabi-sabi, finding ways to infuse our creations with a hint of wabi-sabi adds a new dimension to our work.&#8221;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=BrAn0fhQGks:MauaRuvgyuc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=BrAn0fhQGks:MauaRuvgyuc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=BrAn0fhQGks:MauaRuvgyuc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=BrAn0fhQGks:MauaRuvgyuc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=BrAn0fhQGks:MauaRuvgyuc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=BrAn0fhQGks:MauaRuvgyuc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=BrAn0fhQGks:MauaRuvgyuc:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-03-30/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Choosing a Development Stack for Installable Web Applications: Part I</title>
		<link>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-i/</link>
		<comments>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-i/#comments</comments>
		<pubDate>Thu, 26 Mar 2009 18:40:35 +0000</pubDate>
		<dc:creator>Dennis Gurock</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Software Quality]]></category>
		<category><![CDATA[Technical]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=228</guid>
		<description><![CDATA[Besides improving our flagship product SmartInspect, we&#8217;ve started working on a completely new product a few months ago. We aren&#8217;t ready to announce what it is just yet, but we will hopefully be able to share some early screenshots and more information in the coming weeks on our company blog. Our next product will be [...]]]></description>
			<content:encoded><![CDATA[<p>Besides improving our flagship product <a href="http://www.gurock.com/products/smartinspect/">SmartInspect</a>, we&#8217;ve started working on a completely new product a few months ago. We aren&#8217;t ready to announce what it is just yet, but we will hopefully be able to share some early screenshots and more information in the coming weeks on our <a href="http://blog.gurock.com/">company blog</a>. Our next product will be delivered as an installable web application. Similar to applications such as <a href="http://www.fogcreek.com/fogbugz/">FogBugz</a> or <a href="http://www.wordpress.org">WordPress</a>, customers will be able to download our application and install and host it directly on their servers. We decided to go with an installable version of the product first (instead of offering it as a hosted solution), because we believe that our target market still prefers to host their sensitive data themselves.</p>
<p>One of the first decisions we had to make regarding the product was to choose a development stack. This sounds easier than it really is: there are quite a few requirements that a development stack and platform has to meet in order make it suitable for an installable product. When you develop a hosted solution, you don&#8217;t have to care so much about things like ease of deployment, cross-platform support or support for multiple databases. Other requirements such as Unicode support are also a lot easier to implement if you can control every little detail of the run-time environment. So these are our main requirements for an ideal development stack:</p>
<ul>
<li>
<p><strong>Ease of deployment</strong><br />
Because our customers have to install the application themselves, it must be very easy to deploy. The application will of course come with a convenient installer to setup a database, configure the initial settings and so on. However, a platform with complex dependencies should be avoided as it would cause endless support headaches and would make it much harder for customers to evaluate our product.</p>
</li>
<li>
<p><strong>MVC framework</strong><br />
We have been using different frameworks and patterns for web development over the years and we strongly believe in using the MVC pattern for building web applications. Our ideal web development stack comes with a solid and clean MVC framework to make it easier to build a maintainable application.</p>
</li>
<li>
<p><strong>Cross-platform</strong><br />
We fully expect that 80%+ of our customers will install our web application on a Windows server (those are still extremely popular for internal application and workgroup servers). However, to make it easier for us to offer hosted trials (or even fully hosted application instances), we also need the application to run on Linux machines. Linux support is also handy for customers with distributed teams who want to host our application on cheap dedicated Linux servers on the net.</p>
</li>
<li>
<p><strong>Multiple databases</strong><br />
Similar to the cross-platform requirement, our development stack of choice should support multiple databases. Many companies already have a preference for a certain database (because it’s already installed, maintained and backuped etc), so having easy-to-use support for multiple databases is a big plus. We initially plan to support MS SQL and MySQL only, but we might add support for additional databases such as PostreSQL in the future.</p>
</li>
<li>
<p><strong>Support for Unicode and localization</strong><br />
In an ideal world, every application would have great Unicode and localization support. In reality, though, many applications (and web frameworks) still have a lot of problems with non-Western characters, languages and locales. To make our application suitable for an international audience, good Unicode and localization support in a web framework is key.</p>
</li>
<li>
<p><strong>Safe future and strong community</strong><br />
Of course, the ideal development stack and platform has a strong and clear future. However, it’s not easy to tell which technologies have a safe future. Open platforms with a strong community certainly have better chances to survive in case the owner or original organization behind it loses interest.</p>
</li>
</ul>
<p>I can already reveal that none of the evaluated platforms and frameworks met all our requirements. Some platforms make it really easy to deploy applications and have excellent Unicode support, but fail the cross-platform requirement at the same time. Other frameworks and stacks provide great cross-platform support, but have really bad support for Unicode.</p>
<p>If you are planning to build a web application yourself, make sure to read the upcoming second part of this series to learn about the pros and cons of the available development stacks and platforms (if you haven&#8217;t subscribed to this blog yet, <a href="http://feeds.nobugleftbehind.com/nblb">here&#8217;s the feed</a>). I will also reveal which development stack we have chosen and explain the reasons behind the decision.</p>
<div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=GeTZWh-m9cY:dX0VWLBXzLY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=GeTZWh-m9cY:dX0VWLBXzLY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=GeTZWh-m9cY:dX0VWLBXzLY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=GeTZWh-m9cY:dX0VWLBXzLY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=GeTZWh-m9cY:dX0VWLBXzLY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=GeTZWh-m9cY:dX0VWLBXzLY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=GeTZWh-m9cY:dX0VWLBXzLY:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/choosing-a-development-stack-for-installable-web-applications-part-i/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-03-18</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-03-18/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-03-18/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 20:45:53 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[Digest]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=785</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality and [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://www.satisfice.com/blog/archives/251">Quality is Dead #2: The Quality Creation Myth</a> &#8211; &#8220;One of the things that makes it hard to talk about quality software is that we first must overcome the dominating myth about quality, which goes like this: The quality of a product is built into it by its development team.&#8221;</li>
<li><a href="http://www.markhneedham.com/blog/2009/03/18/coding-make-it-obvious/">Coding: Make it obvious</a> &#8211; &#8220;One of the lessons that I&#8217;ve learned the more projects I work on is that the most important thing to do when coding is to do so in a way that you make life easier for the next person who has to come across that code, be it yourself or one of your team mates. I think the underlying idea is that we need to make things as obvious as possible.&#8221;</li>
<li><a href="http://www.noctovis.net/blog/index.php/2009/03/16/introduction-to-test-doubles/">Introduction to test-doubles</a> &#8211; &#8220;As soon as you start unit-testing or test-driving your development, you’ll learn about test-doubles and how they can make your tests lightening-fast sooner or later.&#8221;</li>
<li><a href="http://www.21apps.com/agile/futurecreep/">Future Creep – You aren’t gonna need it!</a> &#8211; &#8220;How many times have you added an additional parameter or bit of logic to your code because you thought it could be useful and it’s easier to add whilst your already changing the code? If you are your introducing Future Creep!  and should stop doing it.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://highscalability.com/are-cloud-based-memory-architectures-next-big-thing">Are Cloud Based Memory Architectures the Next Big Thing?</a> &#8211; &#8220;The next era is the age of Memory and Cloud which will allow for new players to succeed. The tipping point is soon.&#8221;</li>
<li><a href="http://www.niallkennedy.com/blog/2009/03/measuring-cloud-efficiency.html">Measuring efficiency in the cloud</a> &#8211; &#8220;What can the world of green energy teach us about the future of cloud computing? How can we measure computing resources in the cloud for efficiency, replacement costs, and cost savings?&#8221;</li>
<li><a href="http://www.ddj.com/go-parallel/article/showArticle.jhtml?articleID=215900465">Use Threads Correctly = Isolation + Asynchronous Messages</a> &#8211; &#8220;Explicit threads are undisciplined. They need some structure to keep them in line. In this column, we&#8217;re going to see what that structure is, as we motivate and illustrate best practices for using threads &#8212; techniques that will make our concurrent code easier to write correctly and to reason about with confidence. &#8220;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://blogs.msdn.com/saraford/archive/2009/03/16/how-i-learned-to-program-manage-an-agile-team-after-6-years-of-waterfall.aspx">How I Learned to Program Manage an Agile Team after 6 years of Waterfall</a> &#8211; &#8220;If I could go back in time… 3 things I would tell myself about Agile&#8221;</li>
<li><a href="http://www.agile-software-development.com/2009/03/power-of-whiteboard.html">The Power of a Whiteboard</a> &#8211; &#8220;I think a whiteboard offers loads of advantages over electronic tools. They&#8217;re mainly soft factors, I admit, but I think a whiteboard is hard to beat.&#8221;</li>
<li><a href="http://agilesoftwaredevelopment.com/blog/mattgrommes/my-agile-team-more-code-more-problems">My Agile Team: More Code, More Problems</a> &#8211; &#8220;What I&#8217;m going to discuss this time is our approach to trying to fix these critical bugs while maintaining at least a semblance of our Agile nature. It&#8217;s hard to do a planning meeting and decide on what to work on when you&#8217;ve got new things popping up and old things dragging on.&#8221;</li>
<li><a href="http://devlicio.us/blogs/derik_whittaker/archive/2009/03/13/if-you-cannot-do-a-source-pull-and-compile-you-are-doing-it-wrong.aspx">If you cannot do a source pull and compile you are doing it wrong!</a> &#8211; &#8220;For those of you who may NOT think that pulling and compiling is absolutely necessary let me ask you one thing.  What value are you providing your organization if a someone who is new to a project (could be new employee, new team member, or even someone with a new computer) cannot pull and compile your source code in about 5 minutes?&#8221;</li>
<li><a href="http://wattf.com/wp/2009/03/16/customer-development-the-missing-piece/">Customer Development &#8211; The Missing Piece!</a> &#8211; &#8220;I’ve spent a lot of time making agile development work in startups and it ain’t easy. Necessary but not easy.&#8221; and a <a href="http://startuplessonslearned.blogspot.com/2009/03/combining-agile-development-with.html">response by Eric</a> from <a href="http://startuplessonslearned.blogspot.com/">Lesson Learned</a></li>
<li><a href="http://agilesoftwaredevelopment.com/blog/peterstev/how-hold-daily-scrum">How to Hold the Daily Scrum</a> &#8211; &#8220;Scrum is simple and Scrum is hard. The Daily Scrum is simple daily routine to help the team self-organize, focus, and identify and eliminate impediments to progress. How do you conduct the Daily Scrum and how do you know if the Daily Scrum is achieving its purpose? &#8220;</li>
<li><a href="http://davybrion.com/blog/2009/03/continuous-integration-101/">Continuous Integration 101</a> &#8211; &#8220;More and more people are working in teams where Continuous Integration is used. Not everyone truly ‘gets’ it though… Below is a quick list of things you, as a member of the team, need to keep in mind.&#8221;</li>
</ul>
<h2>Usability and Acessibility</h2>
<ul>
<li><a href="http://alreadytakenflo.wordpress.com/2009/03/17/accessibility-10/">Accessibility 1.0</a> &#8211; &#8220;For those unfamiliar with accessibility issues pertaining to Web page design, consider that many users may be operating in contexts very different from your own&#8221;</li>
<li><a href="http://davidbomphrey.wordpress.com/2009/03/13/brand-logos-as-home-links/">Brand logos as home links</a> &#8211; &#8220;My preferred solution would always be for a proper home link but sometimes that is not always practical. Second best would be to combine the word &#8216;home&#8217; or &#8216;homepage&#8217; with the logo.&#8221;</li>
</ul>
<h2>Security</h2>
<ul>
<li><a href="http://www.schneier.com/blog/archives/2009/03/it_security_bla.html">IT Security: Blaming the Victim</a> &#8211; &#8220;Blaming the victim is common in IT: users are to blame because they don&#8217;t patch their systems, choose lousy passwords, fall for phishing attacks, and so on. But, while users are, and will continue to be, a major source of security problems, focusing on them is an unhelpful way to think.&#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://www.makelinux.net/kernel_map_intro">Interactive map of the Linux kernel</a> &#8211; &#8220;There are a lot of books, however it is still a difficult subject to comprehend. The Interactive map of Linux Kernel gives you a top-down view of the Kernel.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://www.artima.com/weblogs/viewpost.jsp?thread=252441">The Positive Legacy of C++ and Java</a> &#8211; &#8220;Java itself will diminish, just as C++ did, to be used in special cases (or perhaps just to support legacy code, since it doesn&#8217;t have the same connection to hardware as C++ does). But the unintentional benefit, the true accidental brilliance of Java is that it has created a very smooth path for its own replacements, even if Java itself has reached the point where it can no longer evolve.&#8221;</li>
<li><a href="http://thenetsetter.com/blog/startups/do-you-need-to-be-a-developer-to-found-a-web-startup/">Do You Need to Be a Developer to Found a Web Startup?</a> &#8211; &#8220;So it all begs the question, if you’re not from a tech background do you even have a shot at starting a web startup?&#8221;</li>
<li><a href="http://www.ericsink.com/entries/dbts_fossil.html">DVCS and Bug Tracking</a> &#8211; &#8220;Industry-wide, there is a trend toward more integration between version control and other stuff like project tracking, wikis, discussion forums, build tracking, etc. [...] While DVCS is one of the more interesting things happening right now, it does represent a setback in this particular area.&#8221;</li>
<li><a href="http://www.webdesignerdepot.com/2009/03/best-practices-for-designing-a-social-news-website/">Best Practices for Designing a Social News Website</a> &#8211; &#8220;In this article I’ll showcase some of the current top social news sites, will identify trends and patterns in their designs and suggest some best practices to follow when designing such sites.&#8221;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=1X8SIJNr9tY:l9xMmgsgNWk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=1X8SIJNr9tY:l9xMmgsgNWk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=1X8SIJNr9tY:l9xMmgsgNWk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=1X8SIJNr9tY:l9xMmgsgNWk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=1X8SIJNr9tY:l9xMmgsgNWk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=1X8SIJNr9tY:l9xMmgsgNWk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=1X8SIJNr9tY:l9xMmgsgNWk:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-03-18/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Quality Digest – 2009-03-13</title>
		<link>http://nobugleftbehind.com/software-quality-digest-2009-03-13/</link>
		<comments>http://nobugleftbehind.com/software-quality-digest-2009-03-13/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 18:19:35 +0000</pubDate>
		<dc:creator>Tobias Gurock</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://nobugleftbehind.com/?p=737</guid>
		<description><![CDATA[The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. If you have a relevant link for the Software Quality Digest, please let us know and we would be happy to include it in the next digest.
Software Quality and [...]


Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol>]]></description>
			<content:encoded><![CDATA[<p>The Software Quality Digest with the latest articles, blog postings and discussions about software quality, testing, usability, accessibility, scalability and related topics of the past week. <em>If you have a relevant link for the Software Quality Digest, please <a href="mailto:team@nobugleftbehind.com">let us know</a> and we would be happy to include it in the next digest.</em></p>
<h2>Software Quality and Testing</h2>
<ul>
<li><a href="http://www.satisfice.com/blog/archives/224">Quality is Dead #1: The Hypothesis</a> &#8211; &#8220;You know it’s dead, too, don’t you? You long ago stopped expecting anything to just work on your desktop, right? Same here.&#8221; .. and a response by <a href="http://blog.objectmentor.com/articles/2009/03/07/quality-its-alive-its-alive">Uncle Bob</a></li>
<li><a href="http://codebetter.com/blogs/matthew.podwysocki/archive/2009/03/09/which-is-more-beautiful-architecture-fp-or-oop.aspx">Which Is More Beautiful Architecture &#8211; FP or OOP?</a> &#8211; &#8220;So, who wins?  That’s a good question.  If you’re in a world resigned to side effects then OOP might just be for you.  Else, Haskell and the lessons learned from the language can be powerful instruments in creating rich and beautiful architectures using pure functional techniques. &#8220;</li>
<li><a href="http://use.perl.org/~Ovid/journal/38616">Anecdote Driven Development, or Why I Don&#8217;t Do TDD</a> &#8211; &#8220;Two words: tee dious (sic).&#8221;</li>
<li><a href="http://dubroy.com/blog/2009/03/09/method-length-are-short-methods-actually-worse/">Are short methods actually worse?</a> &#8211; &#8220;Another way of putting it is: short methods may have more defects per line, but they still have fewer defects overall.&#8221;</li>
<li><a href="http://codebetter.com/blogs/jeremy.miller/archive/2009/03/12/what-makes-a-system-hard-to-work-with.aspx">What makes a system hard to work with?</a> &#8211; &#8220;My point here is that I definitely believe that there are certain &#8216;qualities&#8217; of a system’s design that either hinder or accelerate the progress of the system.&#8221;</li>
<li><a href="http://railspikes.com/2009/3/10/slow-tests-are-a-bug">Slow tests are a bug</a> &#8211; &#8220;And slow tests are a problem for at least two reasons: they slow down your development and decrease code quality.&#8221;</li>
</ul>
<h2>Usability and Acessibility</h2>
<ul>
<li><a href="http://thinkvitamin.com/features/bargain-basement-usability-testing/">Bargain Basement Usability Testing</a> &#8211; &#8220;We know it is good to focus on usability. We need only look at Apple and the iPod to know that it provides tangible beneﬁts. However, in reality we often shy away. It is hard to prioritize usability when deadlines are looming and budgets are tight.&#8221;</li>
<li><a href="http://www.useit.com/alertbox/kindle-usability-review.html">Kindle 2 Usability Review</a> &#8211; &#8220;The new version of Kindle, Amazon.com&#8217;s dedicated e-book device, recently shipped with an improved display and various other upgrades. It now provides good usability for reading linear fiction (mainly novels), though it&#8217;s less usable for other reading tasks.&#8221;</li>
<li><a href="http://www.noupe.com/php/beautiful-forms.html">Beautiful Forms &#8211; Design, Style, &#038; make it work with PHP &#038; Ajax</a> &#8211; &#8220;We will go through designing and usability you need to keep in mind, styling your form, spicing it up with some nice javascript effects, validating user’s input and finally getting it to work using PHP and Ajax.&#8221;</li>
</ul>
<h2>Performance and Scalability</h2>
<ul>
<li><a href="http://www.codinghorror.com/blog/archives/001235.html">The Computer Performance Shell Game</a> &#8211; &#8220;If you&#8217;re interested in performance, the absolute first thing you have to do is determine which of these bottlenecks is currently impeding performance &#8212; and eliminate it.&#8221;</li>
<li><a href="http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/">Performance Impact of CSS Selectors</a> &#8211; &#8220;This had me convinced that optimizing CSS selectors was a key step to fast pages.&#8221;</li>
</ul>
<h2>Technical Tips</h2>
<ul>
<li><a href="http://www.thoughtclusters.com/2009/03/understand-normalization-before.html">Understand Normalization Before Denormalizing</a> &#8211; &#8220;Database denormalization is an area which is frequently misunderstood and gets software developers into trouble. Many developers seem to think that denormalization is the antithesis of normalization and have conflicting goals.&#8221;</li>
</ul>
<h2>Process and Methodology</h2>
<ul>
<li><a href="http://joelonsoftware.com/items/2009/03/09.html">How to be a program manager</a> &#8211; &#8220;Having a good program manager is one of the secret formulas to making really great software. And you probably don’t have one on your team, because most teams don’t.&#8221;</li>
<li><a href="http://www.codinghorror.com/blog/archives/001236.html">Sharpening the Saw</a> &#8211; &#8220;Sharpening the saw is shorthand for anything you do that isn&#8217;t programming, necessarily, but (theoretically) makes you a better programmer.&#8221;</li>
<li><a href="http://codebetter.com/blogs/karlseguin/archive/2009/03/11/the-bare-minimum.aspx">The Bare Minimum</a> &#8211; &#8220;When it comes to project management, I tend to favor the less-is-more approach. For the most part, I think teams should be self-managed and organized. I&#8217;ve never seen project managers actually add value &#8211; they merely get in the way and slow teams down.&#8221;</li>
<li><a href="http://itknowledgeexchange.techtarget.com/software-quality/agile-management-tools-help-small-team-boost-software-quality/">Agile, management tools help small team boost software quality</a> &#8211; &#8220;Indeed, Comet estimates that these tactics have improved software quality by 25% and time-to-market by 10 to 20%.&#8221;</li>
<li><a href="http://devlicio.us/blogs/tim_barcz/archive/2009/03/05/improving-software-process-a-letter-to-upper-management.aspx">Improving Software Process &#8211; A Letter to Upper Management</a> &#8211; &#8220;Any process, principle, practice we choose should have quality at its heart. Regardless of what process, principles, practices we adopt they will only be successful if we are disciplined enough to follow them.&#8221;</li>
</ul>
<h2>Misc</h2>
<ul>
<li><a href="http://blog.wolfram.com/2009/03/05/wolframalpha-is-coming/">Wolfram|Alpha Is Coming!</a> &#8211; A new search engine by the makers of <a href="http://www.wolfram.com/">Mathematica</a>, launching in May</li>
<li><a href="http://littlecomputerscientist.wordpress.com/2009/03/10/how-to-succeed-at-anything/">How to Succeed at Anything</a> &#8211; &#8220;The good news: Talent is meaningless. You can be world-class at anything.&#8221;</li>
</ul>


<p>Related posts:<ol><li><a href='http://nobugleftbehind.com/software-quality-digest-2009-07-27/' rel='bookmark' title='Permanent Link: Software Quality Digest &#8211; 2009-07-27'>Software Quality Digest &#8211; 2009-07-27</a></li></ol></p><div class="feedflare">
<a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=muH9fqeXv0Y:WsHfIgDOr0c:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/nblb?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=muH9fqeXv0Y:WsHfIgDOr0c:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/nblb?i=muH9fqeXv0Y:WsHfIgDOr0c:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=muH9fqeXv0Y:WsHfIgDOr0c:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/nblb?i=muH9fqeXv0Y:WsHfIgDOr0c:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.nobugleftbehind.com/~ff/nblb?a=muH9fqeXv0Y:WsHfIgDOr0c:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/nblb?i=muH9fqeXv0Y:WsHfIgDOr0c:V_sGLiPBpWU" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://nobugleftbehind.com/software-quality-digest-2009-03-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
