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

<channel>
	<title>bassistance.de &#187; Worth Reading</title>
	<atom:link href="http://bassistance.de/category/worth-reading/feed/" rel="self" type="application/rss+xml" />
	<link>http://bassistance.de</link>
	<description>Jörn Zaefferer on Bass, Geeks and Rock'n'Roll</description>
	<lastBuildDate>Wed, 28 Jul 2010 11:07:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wallraff Interview, Sozialdebatte, Religion</title>
		<link>http://bassistance.de/2009/12/21/wallraff-interview-sozialdebatte-religion/</link>
		<comments>http://bassistance.de/2009/12/21/wallraff-interview-sozialdebatte-religion/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 14:47:52 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=609</guid>
		<description><![CDATA[Hier sind drei Artikel auf zeit.de, ich die allesamt sehe empfehlen kann.
Zum einen ein Streitgespräch mit Günter Wallraff, zu dessen Buch Aus der schönen neuen Welt (ebenfalls sehr empfehlenswert) und den zugehörigen Film, Schwarz auf Weiss. Auch die am Ende erwähnte Titanic-Satire dazu lesen!
Dann wäre da ein Artikel zur Sozialdebatte, auch wenn in der URL [...]]]></description>
			<content:encoded><![CDATA[<p>Hier sind drei Artikel auf zeit.de, ich die allesamt sehe empfehlen kann.</p>
<p>Zum einen ein <a href="http://www.zeit.de/2009/52/Wallraff-im-Gespraech">Streitgespräch mit Günter Wallraff</a>, zu dessen Buch Aus der schönen neuen Welt (ebenfalls sehr empfehlenswert) und den zugehörigen Film, Schwarz auf Weiss. Auch die am Ende erwähnte <a href="http://www.titanic-magazin.de/fischer_ziegelwagner_wallraff.html">Titanic-Satire</a> dazu lesen!</p>
<p>Dann wäre da ein <a href="http://www.zeit.de/2009/52/Armutsdebatte">Artikel zur Sozialdebatte</a>, auch wenn in der URL Armutsdebatte steht. Es sollte schwer fallen, dem uneingeschränkt zuzustimmen, aber als Denkanstoß sehr gut.</p>
<p>Wieder was ganz anderes: Der <a href="http://www.zeit.de/2009/52/Beichtstuehle">Bericht von Jemand</a>, der wegen das Papstes aus der Kirche austreten will, und dies zunächst mit Pfarrern aus ganz Deutschland bei der Beichte bespricht.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2009/12/21/wallraff-interview-sozialdebatte-religion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>No Best Practices</title>
		<link>http://bassistance.de/2009/04/04/no-best-practices/</link>
		<comments>http://bassistance.de/2009/04/04/no-best-practices/#comments</comments>
		<pubDate>Sat, 04 Apr 2009 13:39:30 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=454</guid>
		<description><![CDATA[Everyonce in a while someone pulls out the rhetorical hammer and calls something a &#8220;best practice&#8221;. In german I call this a Totschlagargument, the best translation I could find seems to be thought-terminating cliché. My favorite political example from that wikipedia page:
&#8220;&#8230;or the terrorists win.&#8221;
Anyway, whenever someone pulled best practices out of his sleeve, I [...]]]></description>
			<content:encoded><![CDATA[<p>Everyonce in a while someone pulls out the rhetorical hammer and calls something a &#8220;best practice&#8221;. In german I call this a Totschlagargument, the best translation I could find seems to be <a href="http://en.wikipedia.org/wiki/Thought-terminating_clich%C3%A9">thought-terminating cliché</a>. My favorite political example from that wikipedia page:</p>
<blockquote><p>&#8220;&#8230;or the terrorists win.&#8221;</p></blockquote>
<p>Anyway, whenever someone pulled best practices out of his sleeve, I want to tell them &#8220;There are no best practices!&#8221;. But lacking good arguments to back me up in a discussion, I usually wouldn&#8217;t. Until now!</p>
<p>This article simply called <a href="http://www.satisfice.com/blog/archives/27">No Best Practices</a> does a good job of explaining why the idea of a best practice is wrong on several levels. For a start, practices depend on context:</p>
<blockquote><p>There are no best practices. By this I mean there is no practice that is better than all other possible practices, regardless of the context. In other words, no matter what the practice and how valuable it may be in one context, I can destroy it by altering things about the situation surrounding the practice.</p></blockquote>
<p>The author, James Bach, later suggests various alternatives:</p>
<blockquote><p>Simple, honest alternatives are available:</p>
<ul>
<li>“Here’s what I would recommend for this situation.”</li>
<li>“Here is a practice I find interesting.”</li>
<li>“Here is my favorite practice for dealing with {x}.”</li>
<li>“{Person X} attributes {practice Y} for his success. Maybe you’d like to learn about it.”</li>
</ul>
</blockquote>
<p>He even covers various responses to his arguments and his replies to them:</p>
<blockquote><p><em>“This practice represents a consensus among industry leaders.”</em>No it doesn’t. You’re just making that up. Industry leaders aren’t able to agree on anything much of substance. I know this because <em>I</em> am an industry leader (based on the fact that some people have said so), and other leaders more often disagree with me instead of obeying my commands. I <em>am</em> influential within a certain clique. The software testing industry is made up of many such tiny cliques, each with its own terminology and values.Whenever people tell you that there’s a consensus in the industry, what they probably mean is that there’s an apparent consensus among those people in the industry whom they happen to respect. The best practice for dealing with discordant voices is: just ignore them.</p></blockquote>
<p>There is more good stuff in the comments, highlighting Jame&#8217;s focus on testing:</p>
<blockquote><p>I would suggest that there is at least one practice which ALL Developers everywhere over the world need to follow all the time:</p>
<p><em>[James' Reply: I don't need to see your idea to know that it can't fulfill the claim you made, above. What does "all the time" mean? What does "all developers"? Have you really considered what ALL means?]</em></p>
<p>Test Early, Test Often. I know enough people that don’t test at all that this isn’t just a way of life, and they NEED to have it drilled into them.</p>
<p>Otherwise, good article.<em> </em></p>
<p><em>[James' Reply: So, if I develop a sandwich, I need to test the sandwich? How much should I test it? It's a bit like Zeno's paradox, isn't it? I will never eat the sandwich because I am never done testing the sandwich.<br />
</em></p>
<p><em>As you come to understand testing, you come to understand the impossibility of complete testing, which leads then to the necessity of making tradeoff choices. These choices are very interesting! Telling someone they must test all the time does not help to highlight the choices that must be made.</em></p>
<p><em>Also, I have to mention the other big issue in your idea of a practice: "Test Early, Test Often" is not a practice. You have specified, intead, an amorphous family of potential practices. How early is early? How often is often? What is testing? I don't know what to do to follow your "practice".</em><em> I don't know how to avoid screwing it up. If this is an acceptable statement of a practice, then why not simply say "Be Virtuous"? After all, virtue is a catch-all. If people just "did the right thing" they would obviously do the right testing at the right time.</em></p></blockquote>
<blockquote><p><em>We don't exhort people to be virtuous, because it is not helpful advice. I submit that test early, test often is also not helpful when offered as a commandment. It is more helpful when offered as a heuristic, which is not in any way the same as a best practice.]</em></p></blockquote>
<p>My conclusion: Whenever you encouter a &#8220;best practice&#8221;, try to take it apart. What&#8217;s the context? Is it really a practice, oder just a goal? Is there anything specific of value, or just generic and ambigious rhetoric bubble?</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2009/04/04/no-best-practices/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Security</title>
		<link>http://bassistance.de/2008/11/24/security/</link>
		<comments>http://bassistance.de/2008/11/24/security/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 00:26:04 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=332</guid>
		<description><![CDATA[I just finished reading Beyond Fear: Thinking Sensibly About Security in an Uncertain World by Bruce Schneier. The last few paragraphs are something I&#8217;d like to quote here, and recommend to get the book for yourself if you are inclined:
Can you make your home absolutely safe? No; that&#8217;s the bad news. Can you do things [...]]]></description>
			<content:encoded><![CDATA[<p>I just finished reading <a href="http://www.amazon.de/gp/product/0387026207?ie=UTF8&amp;tag=bassistancede-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0387026207">Beyond Fear: Thinking Sensibly About Security in an Uncertain World</a><img style="border:none !important; margin:0px !important;" src="http://www.assoc-amazon.de/e/ir?t=bassistancede-21&amp;l=as2&amp;o=3&amp;a=0387026207" border="0" alt="" width="1" height="1" /> by Bruce Schneier. The last few paragraphs are something I&#8217;d like to quote here, and recommend to get the book for yourself if you are inclined:</p>
<blockquote><p>Can you make your home absolutely safe? No; that&#8217;s the bad news. Can you do things to dramatically reduce the risk of having bad things happen to you and your family? Yes; that&#8217;s the good news. But the things you can do generally have more to do with protecting against accidents than protecting against attackers.</p>
<p>When people think of keeping their families safe, they mostly think of protecting them against intruders. They think of preventing the kinds of horrible things that make the front pages of newspapers. But those aren&#8217;t that real risks. Horrifying as those crimes are, they are not what kill most kids. The leading causes of death to children are automobile accidents, gun injuries, drowning, and suicide. The likelihood of each can be reduced greatly, and by means that everyone already knows. Buckle up your kids. Lock up your guns. Pay for swimming lessons and teach your kids to swim. Pay attention to your children&#8217;s state of mind. Don&#8217;t tolerate abuse.</p>
<p>Still scared of a creazed stalker breaking into your house and kidnapping your children? That&#8217;s okay, but make sure you know that the fear is in your mind and not based on the real risks. The best way to protect against intruders in your home is to turn on the bathroom light. Don&#8217;t beliebe me, believe the world&#8217;s smartest ex-burglar, Malcom X: &#8220;I can give you a very good tip if you want to keep burglars of your house. A light on for the burglars to see is the very best means of protection. <strong>One of the ideal things is to leave a bathroom light on all night. The bathroom is one please where somebody could be, for any length of time, at any time of the night, and he would be likely to hear the slightest strange sound.</strong> The burglar, knowing this, won&#8217;t try to enter. It&#8217;s also the cheapest possible protection. The kilowatts are a lot cheaper than your valuables.&#8221;</p>
<p>Or get a dog&#8230;<br />
Now <em>that&#8217;s</em> a security trade-off.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2008/11/24/security/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Artikel im Javamagazin</title>
		<link>http://bassistance.de/2007/09/13/artikel-im-javamagazin/</link>
		<comments>http://bassistance.de/2007/09/13/artikel-im-javamagazin/#comments</comments>
		<pubDate>Thu, 13 Sep 2007 18:27:24 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/09/13/artikel-im-javamagazin/</guid>
		<description><![CDATA[In der 9.2007 des Javamagazin erschien mein Einführungs-Artikel zum Thema jQuery. Feedback dazu habe ich bisher noch von niemand erhalten, den ich nicht sowieso schon kannte. 
Macht aber nichts, und vielleicht ändert sich das noch, da der Artikel jetzt auch online verfügbar ist. Der Artikel ansich ist derselbe, praktischerweise sind aber alle Verweise direkt als [...]]]></description>
			<content:encoded><![CDATA[<p>In der 9.2007 des Javamagazin erschien mein Einführungs-Artikel zum Thema jQuery. Feedback dazu habe ich bisher noch von niemand erhalten, den ich nicht sowieso schon kannte. </p>
<p>Macht aber nichts, und vielleicht ändert sich das noch, da der <a href="http://it-republik.de/jaxenter/artikel/JavaScript-Bibliothek-jQuery-1262.html">Artikel jetzt auch online verfügbar</a> ist. Der Artikel ansich ist derselbe, praktischerweise sind aber alle Verweise direkt als Links realisiert. Die Beispiele sind leicht in den eigenen Editor kopierbar, sogar der sonst nur auf der Heft-CD verfügbare Quellcode der kompletten Beispiele ist als Download am Ende verlinkt.</p>
<p>Das erwähnte Buch, &#8220;<a href="http://www.packtpub.com/jQuery/book/mid/100407j4kh3d">Learning jQuery : Better Interaction Design and Web Development with Simple JavaScript Techniques</a>&#8221; ist mittlerweile erschienen und zusammen mit dem &#8220;<a href="http://www.packtpub.com/jquery-reference-guide-Open-Source/book">jQuery Reference Guide</a>&#8221; empfehlenswert.</p>
<p>Feedback zum Artikel, jQuery allgemein oder zu einem meiner jQuery-Plugins ist höchst willkommen!</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/09/13/artikel-im-javamagazin/feed/</wfw:commentRss>
		<slash:comments>-49</slash:comments>
		</item>
		<item>
		<title>Why open source?</title>
		<link>http://bassistance.de/2007/07/13/why-open-source/</link>
		<comments>http://bassistance.de/2007/07/13/why-open-source/#comments</comments>
		<pubDate>Fri, 13 Jul 2007 19:11:16 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Worth Reading]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/08/13/why-open-source/</guid>
		<description><![CDATA[While glancing over Dr. Dobb&#8217;s article Getting Started With jQuery I read this:
Whether the motivation behind making their labors freely available is a matter of seeking recognition, resume building, free advertising for other services, bragging rights, or just plain old-fashioned altruism, we can gratefully take advantage of these tools. jQuery is one such tool.
I think [...]]]></description>
			<content:encoded><![CDATA[<p>While glancing over Dr. Dobb&#8217;s article <a href="http://www.ddj.com/dept/java/201000935">Getting Started With jQuery</a> I read this:</p>
<blockquote><p>Whether the motivation behind making their labors freely available is a matter of seeking recognition, resume building, free advertising for other services, bragging rights, or just plain old-fashioned altruism, we can gratefully take advantage of these tools. jQuery is one such tool.</p></blockquote>
<p>I think altruism is very far away from the true motivation in most cases. Most free and open source software I can think of is done because someone needed it anyway. And instead of just writing that little tool you needed that one day, why not release it to the great public <a title="Read Jeff's entry about 'Pick a licsense, any license!', its worth its words, like almost everything he writes" href="http://www.codinghorror.com/blog/archives/000833.html">under some appropiate license</a>? If the tool is worth its code its quite likely that someone else has use for it, too. And because they don&#8217;t have to pay anything and can read and modify the source code, its very easy for them to contribute back whatever they can. And using that feedback is again helping the initial author.</p>
<p>You can find good hints at the eat-your-own-dogfoot principle and where it was applied and where not in a lot of open source products. Consider the update manager in <a href="http://www.eclipse.org">Eclipse</a>. To start with, its hidden under the Help menu. You have to manually copy&#038;paste links from update sites into it. And you always have to choose &#8220;search for new features to install&#8221; even if you want to look for updates, because looking for updates most likely never finishes and yields no result after bugging you 20 times for a mirror to choose from a list. That is the stuff the developers (of Eclipse) mostlikely themselves don&#8217;t use, and therefore don&#8217;t care about.</p>
<p>On the other hand, Eclipse&#8217; Java Development Tools is state-of-the-art: I&#8217;m using it now for almost three years and yet I find new helpful features everyday. Its refactoring support alone is worth some gold. Ever wanted to introduce a new parameter in an interface method and its four implementations? Its something very ugly when doing by hand, with Eclipse its simple as hell: Refactor -> &#8220;Change method signature&#8221;, and you&#8217;re nearly done. Learned how to use that just today.</p>
<p>Eclipse is backed by a big corporation (IBM) and a daily growing list of both small and big eclipse foundation members. This isn&#8217;t the case on projects like jQuery. When asking John Resig about his motivation for releasing jQuery he answered:</p>
<blockquote><p>I&#8217;d have to say Altruism + Recognition &#8211; resume building was a nice side effect, but I didn&#8217;t think about that</p></blockquote>
<p>And he added:</p>
<blockquote><p>I mean, I guess if you&#8217;re wondering why open source vs. &#8220;closed source&#8221; (license-restricted). I guess, technically one could get recognition from either, but I don&#8217;t like restrictive software. I&#8217;ve grown up using open source, and benefited so much from it. It just doesn&#8217;t make sense to me to release closed software. I don&#8217;t see how it could possibly benefit me, or help others.</p>
<p>So for me, restricted software just doesn&#8217;t feel right &#8211; whereas open source feels very good. Helping people and feeding back into the community is really what does it for me. Seeing it do well is a nice side effect &#8211; I mean, on my web site alone I&#8217;ve released over 70 pieces of open source software. A couple have done really well &#8211; only one really took off.</p>
<p>So I definitely wasn&#8217;t expecting recognition, but it was nice that it happened.</p></blockquote>
<p>As always he has some good points to argument with. I spent and keep spending a lot of time working on my jQuery plugins because I know (at least now) that I will be most likely developing web applications in the next years (though so far they are all 100% corporate intranet applications, but still running in browsers). And its great to use features of your own plugins in your own project that someone else contributed. Even questions for support help a lot, because you know where you have to improve APIs and examples.</p>
<p>Releasing JavaScript code as opensource is somehow natural anyway. Reading JavaScript code in the source of other&#8217;s website has been done for years now, and giving the code a property license to motivate &#8220;readers&#8221; to give feedback and contribute has helped a ton to improve the overall quality of written JavaScript by several magnitudes.</p>
<p>Currently I&#8217;m investigating ways to leverage those plugins on the server-side too, which is especially interesting when considering the <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">validation plugin</a>. John&#8217;s work on implementing <a href="http://ejohn.org/blog/bringing-the-browser-to-the-server/">a browser environment in Rhino</a> is amazing. It already is able to run the full jQuery test suite, and the possibilities for building web application frameworks based on jQuery are daunting.</p>
<p>I hope I can also opensource some of the framework code I&#8217;m developing at work some time in the feature. There is already some really nice JSF and Spring related code in our repository&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/07/13/why-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About client-side form validation and frameworks</title>
		<link>http://bassistance.de/2007/07/04/about-client-side-form-validation-and-frameworks/</link>
		<comments>http://bassistance.de/2007/07/04/about-client-side-form-validation-and-frameworks/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 20:09:41 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/07/04/about-client-side-form-validation-and-frameworks/</guid>
		<description><![CDATA[There is a good article about client-side form validation on the Interaction Design Blog. It describes important points to keep in mind when building your own framework for client-side validation.
Of course the alternative to building your own framework is to use an existing one. This approach yields some important advantages, amonst them the &#8220;given enough [...]]]></description>
			<content:encoded><![CDATA[<p>There is a good <a href="http://frontendbook.com/form-validation-with-javascript">article about client-side form validation</a> on the Interaction Design Blog. It describes important points to keep in mind when building your own framework for client-side validation.</p>
<p>Of course the alternative to building your own framework is to use an <a href="http://bassistance.de/jquery-plugins/jquery-plugin-validation/">existing one</a>. This approach yields some important advantages, amonst them the &#8220;given enough eyeballs, all bugs are shallow&#8221; principle.</p>
<p>Lets see how well the validation plugin currently performs on the points listed in the article:</p>
<p><em>1. Use a form validation framework or a form validation library</em></p>
<p>Check.</p>
<p><em>2. Focus on solving the big validation problems</em></p>
<blockquote><p>As soon as you start developing and implementing your validation, it is easy trying to address all potential validation that is needed for all types of input. My advice is to try to catch 75-85% of the potential user input errors in the front-end validation. Trying to catch all will lead to the following:</p>
<ul>
<li>Bloated code, your framework will grow too large</li>
<li>More or less impossible to test client side validation as there are too many combinations of validation that can go wrong</li>
<li>Business rules will move to the front-end.(More on how to avoid this by using Ajax later)</blockquote>
</li>
</ul>
<p>Well, bloated code is a problem I tried to address with lots of refactoring. The current codebase has 1446 lines (about half of it being inline documentation). A few weeks ago <a href="http://pengoworks.com/">Dan G. Switzer</a> took a look at the plugin and was able to provide excellent help on specific code-related problems within a few hours.</p>
<p>About testing: The current testsuite for the validation plugin runs 65 tests with over 350 assertions. jQuery&#8217;s testsuite runs about 500 assertions. I seems to have a good code coverage, as I added tests for all occuring issues whenever possible. Regression issues are quite likely to be catched by the testsuite, as well as it helps a lot while developing.</p>
<p>Testing against browser events and with AJAX is still a very difficult task, even with the AJAX support in jQuery&#8217;s testsuite.</p>
<p>About business rules moving to the front end: Thats more of a design and architectural problem. Avoiding that using AJAX gets supported with the upcoming 1.2 release.</p>
<p><em>3. Do Form Validation before form is submitted</em></p>
<p>The message here is to validate when the user inputs something, instead of waiting for the submit event. Pre 1.0 versions allowed you to specify a single event to check individual elements, eg. blur or keyup. That worked in some cases, and was disturbing in other cases, where the user clicked on an input and was welcomed with an annyoing error message. To address those issues, a more sophisticated system was released in 1.1. Basically the plugin waits with validation until the user blurs a field where he entered something incomplete. If the field is already marked invalid (eg. after an attempt to submit an invalid form), all elements are validated on keyup (textinputs) or click (checkbox, radio). The current implementation isn&#8217;t perfect yet, and of course feedback is appreciated.</p>
<p><em>4. Use Ajax Form Validation for business data input</em></p>
<p>A small teaser for the AJAX validation in 1.2:</p>
<pre><code>$("#myform").validate({
  rules: {
    username: {
      required: true,
      minLength: 2,
      remote: "users.php"
    }
  },
  messages: {
    username: {
      required: "Enter your username",
      minLength: "At least 2 characters are necessary",
      remote: String.format("The name {0} is already in use")
    }
  }
});</code></pre>
<p>The API allows you to use the same declarative style for remote validation as you are used to use for local validation. <code>String.format</code> creates another function that is later called with the value the user entered, resulting in something like &#8220;The name asdf is already in use&#8221; as the error message.</p>
<p>Check the <a href="http://jquery.bassistance.de/ajax-validation/demo-test/milk/">AJAX validation preview</a> for more details.</p>
<p><em>5. Do extensive testing of your javascript form validation</em></p>
<p>That is covered <a href="#testing">above</a>.</p>
<p><em>6. Rewrite input data to valid formats</em></p>
<p>Now this is an interesting point. Basically the idea is to accept &#8220;20070515&#8243; as a valid date, transforming it into &#8220;2007-05-15&#8243; for validation. I haven&#8217;t seen any specific requests for a feature like this, so if anyone is interested, let me know. Meanwhile a good idea may be to use the <a href="http://digitalbush.com/projects/masked-input-plugin">masked input plugin</a> to help and assist the user typing the correct format. </p>
<p><em>7. Attach javascript form validation late in the design process</em></p>
<p>That is a very good recommendation. jQuery helps a lot with this, due to its unobtrusive nature. Design your form without any JavaScript at all, and add it later, improving the user experience (UX) as much as possible.</p>
<p><em>8. Make the script i18n- and l10n-compatible</em></p>
<p>In other words: Avoid hard-coded strings, instead make it as easy as possible to replace them with the current locale.</p>
<p>The validation plugin allows you to translate all default messages by just overwriting them. Its easy to include a file after the plugin file that contains something like the following:</p>
<pre><code>$.extend($.validator.messages, {
  required: "Eingabe nötig",
  email: "Bitte eine gültige E-Mail-Adresse eingeben",
  ...
});</code></pre>
<p>That approach works quite well. You can gather other translation in the same file, for example labels for the <a href="http://kelvinluck.com/assets/jquery/datePicker/v2/demo/">datepicker</a>.</p>
<p>To include the proper right translation file for the user&#8217;s locale is then a mere serverside issue.</p>
<p>Other problems, eg. different number or date formats, can be covered by writing custom methods, or overwriting the default ones (in $.validator.methods). Methods for german date and number formats are provided by default: date (default JavaScript Date format), dateISO (1990-01-01 or 1990/01/01), dateDE (01.01.1990 or 2.12.2012) and number (100,000.59) and numberDE (100.000,59) are available. Though currently none of those validates any ranges, eg. 0001-13-50 is also a valid iso date.</p>
<p><em>9. Add callback functions to validator framework</em></p>
<p>The most important callback function the validation plugin provides is the <code>submitHandler</code>. It is called when a valid form is submitted, allowing you to eg. submit the form via AJAX. Others are available like <code>errorPlacement</code>, to customize where error messages are inserted into the DOM, eg. for table layouts.</p>
<p>In 1.2 a callback for invalid forms gets added, called each time the user submits a form and it is invalid. So far the <code>showErrors</code> callback could be used for that, but that one gets also called each time is single element is validated. The new callback can then be used to update a message like &#8220;There are 6 issues in the form below&#8221;. Showing and hiding such a message can be handled using the existing <code>errorContainer</code> options.</p>
<p><em>10. Make your framework/library extensible</em></p>
<p>The most important point to extend the validation plugin with your own stuff is <code>$.validator.addMethod</code>. It allows you to add any validation method you need. By keeping your own custom methods inside your own files it is easy to update the plugin itself.</p>
<p>Its quite likely that the first approach to AJAX validation will evolve into <code>$.validator.addRemoteMethod</code>, providing all the necessary boilerplate code for remote AJAX methods, but allowing you use any required protocol. It won&#8217;t matter if you use get or post, send a single value or the whole form to the server, and if the server returns only true or false, or an error message to display, in whatever format you prefer or need to work with. Of course it would require a bit more work to implement the method, but provides a great flexibility. Your feedback on this is essential, as I avoid to randomly guess what you may need.</p>
<p>I hope this gives a good idea about the current status of the form validation and its progress and should help with the descision to use it or not.</p>
<p><em><a href="http://jquery.com/blog/2007/07/04/about-client-side-form-validation-and-frameworks/">Cross-posted on the jQuery blog</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/07/04/about-client-side-form-validation-and-frameworks/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Welche IT darfs denn sein?</title>
		<link>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/</link>
		<comments>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/#comments</comments>
		<pubDate>Mon, 09 Apr 2007 10:27:56 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Getting Started]]></category>
		<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/</guid>
		<description><![CDATA[Mehrere Bekannte von mir sind auf bestem Wege, ihr Diplominformatikstudium abzuschließen. Sie müssen jetzt oder in einem Jahr nur noch ihre Diplomarbeit schreiben. Meine Frage, worüber sie denn schreiben wollen, oder sogar wo sie denn später sich bewerben wollen, konnte mir bisher keiner beantworten.
Nun könnte es enorm helfen, die zweite Frage zu klären, um dann [...]]]></description>
			<content:encoded><![CDATA[<p>Mehrere Bekannte von mir sind auf bestem Wege, ihr Diplominformatikstudium abzuschließen. Sie müssen jetzt oder in einem Jahr nur noch ihre Diplomarbeit schreiben. Meine Frage, worüber sie denn schreiben wollen, oder sogar wo sie denn später sich bewerben wollen, konnte mir bisher keiner beantworten.</p>
<p>Nun könnte es enorm helfen, die zweite Frage zu klären, um dann auch die erste zu beantworten.</p>
<p>Im Laufe meiner Bewerbungen Anfang letzten Jahres ist mir einigermaßen klar geworden, welche Bereiche der IT es gibt. Ich unterscheide der Einfachheit halber zwischen zweien: Consulting und der ganze Rest.</p>
<p>Das erste Beispiel, das mir bei &#8220;dem ganzen Rest&#8221; immer einfällt, ist die IT-Abteilung von Firma XYZ. Firma XYZ ist eine Autoteilezulieferer, stellt also z.B. für Opel oder Mercedes Metall- und Plastikteile her, die später zum Zusammenbau eines kompletten PKWs verwendet werden. XYZ hat mehrere Hundert Mitarbeiter und braucht natürlich eine entsprechende Personalverwaltung. XYZ kauft natürlich Werkzeuge (gern auch mal im Tonnenbereich für ein Werkzeug) und alle möglichen Rohmaterialien ein. Benötigt also ein Warenwirtschaftssystem, z.B. SAP. All die Mitarbeiter, die mit SAP arbeiten, benötigen ihren eigenen PC, der gepflegt werden muss. Dafür gibt es zwar wieder Hilfsmittel, mit denen man zentral ein ganzes Netzwerk administrieren kann, z.B. über Nacht Rechner runterfahren und updaten, aber auch diese müssen installiert oder beherrscht werden.<br />
Alles in allem also reichlich Arbeit, um eine komplette IT-Abteilung Tag und Nacht auf Trab zu halten. Da bei XYZ natürlich in drei Schichten gearbeitet wird, muss wahrscheinlich auch nachts noch jemand aus der IT zur Stelle sein, oder wenigtens auf Bereitschaft.</p>
<p>Ich selbst arbeite jetzt seit einem Jahr im Consulting-Bereich, und bin damit auch sehr zufrieden.</p>
<p>Nehmen wir mal Consulting-Firma LLK als Beispiel: Neben zwei Mitarbeitern kümmert sich auch einer der beiden Geschäfsführer um den Vertrieb, der Kunden und Projekte ranholt. Drei Projektleiter managen diese Projekte, schreiben Angebote und verteilen Projekte an die 20 Entwickler. Sieben der Entwickler arbeiten allerdings nicht in den Büros von LLK, sondern sitzen Vollzeit bei verschiedenen Kunden vor Ort. Einige zur reinen Entwicklung, andere mehr in beratender Funktion. Von den 20 Leuten sind auch vier Subcontractors, kurz Subco, auch bekannt als Freelancer oder freie Mitarbeiter. Diese arbeiten meist nur an einzelnen Projekten mit, bekommen nicht die Sicherheit einer Festanstellung, dafür aber aufgrund ihres projektbezogenen Expertenwissens potenziell bessere Bezahlung. Ansonsten gibt es noch Mitarbeiter, die sich um Administration und Buchhaltung kümmern.</p>
<p>Die ersten Projekte von LLK waren alle Maßanfertigungen: Ein Kunde benötigte eine bestimmte Anwendung, diese wurde für ihn entwickelt und gepflegt. Bis auf die Erfahrungen, die zwischen den Entwicklern ausgetauscht wurden, gab es keine Synergien mit anderen Projekten. Nach ein paar Jahren wurde ein bestimmter Typ von Anwendungen ausgemacht, den viele Kunden von LLK benötigen. Es enstand ein Produkt. Ein prominentes Beispiel für ein Produkt wäre z.B. Microsoft Word. Weitere Jahre später hat LLK eine ganze Reihe von Produkten entwickelt und daraus eine Produktlinie gemacht. So wurde auch aus MS Word oder Excel die Office Produktlinie. Oder aus diversen Einzelprodukten das Komplettpaket SAP.<br />
Doch warum überhaupt Produkte? Es ist doch viel schwerer eine Anwendung zu entwickeln, mit denen viele Kunden zufrieden sind, als eine Anwendung zu schreiben, die auf die Wünsche eines einzelnen Kunden angefertigt wird. Mal abgesehen, das diese Ansicht bereits zweifelhaft ist, entscheidend ist der Kostenfaktor: Das Design und Entwickeln eines PKWs verursacht genauso Kosten wie die Produktion jeder einzelnen Instanz dieses Modells. Bei der Softwareentwicklung hingegen kostet die Duplizierung nichts. Eine einmal entwickelte Software kann beliebig oft verkauft werden, ohne nenneswerte Produktionskosten für jede einzelne Kopie. Dank Breitbandinternet wird heutzutage ohnehin häufig direkt über das Internet verkauft und verteilt, sei es eine Webanwendung als war-Datei oder PC-Spiele per Steam.</p>
<p>Was mich am Consulting reizt, sind die ständig wechselenden Herausforderungen. Heute entwickelt man noch J2EE-basierte Portlet-Webanwendungen, morgen auf Basis von Eclipse RCP, übermorgen muss es auf beidem laufen&#8230; Für kein Projekt steht genug Zeit zur Verfügung, um es richtig zu machen, doch macht man es falsch, ist man noch Monate mit Bugfixing beschäftigt. Und wenn man Fehlerquellen in Code suchen muss, den man ein paar Monate nicht angerührt hat, wird es noch wesentlich schwieriger.<br />
Und auch wenn sich aus den einzelnen Anwendungen kein Produkt entwickeln lässt, so sind mit Sicherheit Gemeinsamkeiten vorhanden. Lohnt es sich, die Gemeinsamkeiten in ein firmeninternes Framework zu extrahieren? Findet man die Zeit, das auch entsprechend zu dokumentieren?</p>
<p>Mittlerweile bin ich mir sehr sicher, das man mit einem Prinzip sehr viele dieser Probleme erschlagen kann, auch wenn es enorm schwer sein kann, das immer durchzuziehen: Don&#8217;t repeat yourself, kurz, DRY. Wir haben zwei Webanwendungen, die jeweils im UI eine Datumsauswahl haben? Schreiben wir doch einen Datepicker und verwenden den in beiden.</p>
<p>Noch zuletzt ein Aspekt, der durchaus ein großen Einfluss auf die Beantwortung der ersten beiden Fragen haben kann: Der Standort. Im ganzen Oberbergischen habe ich nur eine Consulting-Firma gefunden, Firmen mit IT-Abteilungen gibt es hingegen reichlich. Im Kölner Raum gibt es hingegen einen ganzen Haufen an Consulting-Firmen, was zunächst einmal die Jobsuche deutlich vereinfacht. Nun ist das Wohnen in Köln allerdings auch deutlich teurer.</p>
<p>Hoffe, hiermit bei der Beantwortung der ein oder anderen Frage behilflich gewesen zu sein.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/04/09/welche-it-darfs-denn-sein/feed/</wfw:commentRss>
		<slash:comments>-5</slash:comments>
		</item>
		<item>
		<title>Die Web-Prophezeiung?</title>
		<link>http://bassistance.de/2007/04/07/die-web-prophezeiung/</link>
		<comments>http://bassistance.de/2007/04/07/die-web-prophezeiung/#comments</comments>
		<pubDate>Sat, 07 Apr 2007 17:43:47 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>
		<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/2007/04/07/die-web-prophezeiung/</guid>
		<description><![CDATA[Am 2. Oktover 1997 veröffentlichte David Siegel einen Artikel mit dem Namen The Web is Ruined and I Ruined it. Darin beschreibt er diverse Sünden der Webentwicklung, die auch heute noch viel zu häufig zu finden sind. Er gibt zu, selbst ein HTML Terrorist zu sein, und aufgrund der Popularität seiner Seite damit viele Nachahmer [...]]]></description>
			<content:encoded><![CDATA[<p>Am 2. Oktover 1997 veröffentlichte David Siegel einen Artikel mit dem Namen <a href="http://www.xml.com/pub/a/w3j/s1.people.html">The Web is Ruined and I Ruined it</a>. Darin beschreibt er diverse Sünden der Webentwicklung, die auch heute noch viel zu häufig zu finden sind. Er gibt zu, selbst ein HTML Terrorist zu sein, und aufgrund der Popularität seiner Seite damit viele Nachahmer schlechter Praktiken hervorgebracht hat. Sei es das &#8220;presentational markup&#8221; ansich, Layout-Tabellen oder besonders perfide, das 1-pixel-gif.</p>
<p>Gleichzeitig beschreibt er einige der Ideen, die HTML und CSS zugrundeliegen, und die auch heute noch aktuell und wichtig sind. Seine Betrachtungen der Browserlandschaft und der Standardisierungsprozesse sind hingegen eher historischer Natur, aber ebenfalls sehr interessant: Heutzutage hat man immer den Eindruck, es gibt die Standards und die Browser, die diese implementieren, und es gibt Microsoft mit seinem Internet Explorer. David Siegel erzählt hingegen, das es mal Microsoft war, das sich mit dem W3C um Standards bemüht hat um gegen Netscape&#8217;s Tag-Wuchereien, aus denen auch &lt;blink&gt; entstanden ist, vorzugehen.</p>
<p>Interessant auch folgender Satz, damals noch als Entschuldigung für Netscape&#8217;s Tag-Erfindungseifer: &#8220;Our customers demand interim, tag-based solutions.&#8221; Anstatt weiter HTML zu vergewaltigen, schreibt man heute eben mal ein XML Schema mit seinen eigenen Tags. Sind wir damit dem Ziel, Struktur und Inhalt und Präsentation zu trennen, irgendwie näher gekommen?</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2007/04/07/die-web-prophezeiung/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paul Graham &#8211; Revenge of the Nerds</title>
		<link>http://bassistance.de/2006/12/10/paul-graham-revenge-of-the-nerds/</link>
		<comments>http://bassistance.de/2006/12/10/paul-graham-revenge-of-the-nerds/#comments</comments>
		<pubDate>Sun, 10 Dec 2006 00:47:33 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/2006/12/10/paul-graham-revenge-of-the-nerds/</guid>
		<description><![CDATA[Wer sich mit Informatik beschäftigt und/oder dafür interessiert, sollte unbedingt einen Blick auf den Artikel &#8220;Revenge of the Nerds&#8221; von Paul Graham werfen.
Ein Satz, der mir in letzter Zeit auch des öfteren begegnet ist, findet sich auch:
Within large organizations, the phrase used to describe this approach is &#8220;industry best practice.&#8221; Its purpose is to shield [...]]]></description>
			<content:encoded><![CDATA[<p>Wer sich mit Informatik beschäftigt und/oder dafür interessiert, sollte unbedingt einen Blick auf den Artikel <a href="http://www.paulgraham.com/icad.html">&#8220;Revenge of the Nerds&#8221;</a> von Paul Graham werfen.</p>
<p>Ein Satz, der mir in letzter Zeit auch des öfteren begegnet ist, findet sich auch:</p>
<blockquote><p>Within large organizations, the phrase used to describe this approach is &#8220;industry best practice.&#8221; Its purpose is to shield the pointy-haired boss from responsibility: if he chooses something that is &#8220;industry best practice,&#8221; and the company loses, he can&#8217;t be blamed. He didn&#8217;t choose, the industry did.</p></blockquote>
<p>Sehr interessant sind ein paar Details zur <a href="http://de.wikipedia.org/wiki/Lisp">Lisp</a>, scheinbar <strong>die</strong> dynamische Programmiersprache schlechthin. Verdient auf jeden Fall etwas Aufmerksamkeit, wenn man sich über die Unterschiede zwischen &#8220;statischen&#8221; Sprachen wie C/C++/Java und &#8220;dynamischen&#8221; Sprachen wie Ruby/PHP/Javascript Gedanken macht.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/12/10/paul-graham-revenge-of-the-nerds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bericht über &#8220;Borat&#8221; auf spiegel.de</title>
		<link>http://bassistance.de/2006/11/03/bericht-uber-borat-auf-spiegelde/</link>
		<comments>http://bassistance.de/2006/11/03/bericht-uber-borat-auf-spiegelde/#comments</comments>
		<pubDate>Fri, 03 Nov 2006 16:31:07 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Reading]]></category>

		<guid isPermaLink="false">http://bassistance.de/index.php/2006/11/03/bericht-uber-borat-auf-spiegelde/</guid>
		<description><![CDATA[Auf spiegel.de wurde heute ein Artikel zum Film &#8220;Borat &#8211; Kulturelle Lernung von Amerika um Benefiz für glorreiche Nation von Kasachstan zu machen&#8221; veröffentlicht. Innerhalb des Artikels kommen drei kasachstanische Studenten aus Hamburg zu Wort, die die Verunglimpfung ihrer geschätzen Heimat kritiesieren.
Dass sich jemand nach &#8220;Borat&#8221; mal fragt, wie Kasachstan in Wirklichkeit ist, glaubt Perisat [...]]]></description>
			<content:encoded><![CDATA[<p>Auf <a href="http://www.spiegel.de/unispiegel/wunderbar/0,1518,446216,00.html" title="Zum Artikel auf spiegel.de">spiegel.de</a> wurde heute ein Artikel zum Film &#8220;Borat &#8211; Kulturelle Lernung von Amerika um Benefiz für glorreiche Nation von Kasachstan zu machen&#8221; veröffentlicht. Innerhalb des Artikels kommen drei kasachstanische Studenten aus Hamburg zu Wort, die die Verunglimpfung ihrer geschätzen Heimat kritiesieren.</p>
<blockquote><p>Dass sich jemand nach &#8220;Borat&#8221; mal fragt, wie Kasachstan in Wirklichkeit ist, glaubt Perisat nicht. &#8220;Die Leute haben gelacht &#8211; von denen wird sich doch jetzt keiner näher mit Kasachstan beschäftigen.&#8221; Fast nie habe sie jemanden getroffen, der die kasachische Hauptstadt kenne (sie heißt Astana) &#8211; und das, obwohl Kasachstan das neungrößte Land der Welt sei, sagt Perisat.</p></blockquote>
<p>Unfreiwillig bestätigt wurde diese Aussage dann auch direkt von den Autoren selbst, denn mittlerweile findet sich am Ende des Artikels folgender Hinweis:</p>
<blockquote><p>Anmerkung der Redaktion: Zunächst wurde im Text als Hauptstadt Kasachstans Almaty genannt &#8211; seit 1997 ist aber Astana Hauptstadt. Wir bitten diesen Fehler zu entschuldigen.</p></blockquote>
<p>Ich hätte es auch nicht gewusst <img src='http://bassistance.de/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2006/11/03/bericht-uber-borat-auf-spiegelde/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		</item>
	</channel>
</rss>
