<?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</title>
	<atom:link href="http://bassistance.de/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, 25 Aug 2010 09:37:48 +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>Kubrick Scorcese Mashup</title>
		<link>http://bassistance.de/2010/08/25/kubrick-scorcese-mashup/</link>
		<comments>http://bassistance.de/2010/08/25/kubrick-scorcese-mashup/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 09:37:29 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Worth Watching]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=673</guid>
		<description><![CDATA[In the Tarantino Mashups post I featured the Tarantino vs Coen Brothers video from Leandro Copperfield. Leandro did another Mashup, this time involving movies from Stanley Kubrick and Martin Scorcese, overall over 30 movies cut together.

Kubrick vs Scorsese from Leandro Copperfield on Vimeo.
Made me want to watch all those movies I haven&#8217;t seen, yet, and [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://bassistance.de/2010/04/14/tarantino-mashups/">Tarantino Mashups</a> post I featured the Tarantino vs Coen Brothers video from Leandro Copperfield. Leandro did another Mashup, this time involving movies from Stanley Kubrick and Martin Scorcese, overall over 30 movies cut together.</p>
<p><iframe src="http://player.vimeo.com/video/12432238" width="400" height="300" frameborder="0"></iframe>
<p><a href="http://vimeo.com/12432238">Kubrick vs Scorsese</a> from <a href="http://vimeo.com/videotape">Leandro Copperfield</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>Made me want to watch all those movies I haven&#8217;t seen, yet, and watch again various of those I already know.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/08/25/kubrick-scorcese-mashup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can learning non-programming languages make you a better programmer?</title>
		<link>http://bassistance.de/2010/07/22/can-learning-non-programming-languages-make-you-a-better-programmer/</link>
		<comments>http://bassistance.de/2010/07/22/can-learning-non-programming-languages-make-you-a-better-programmer/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 17:57:05 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=699</guid>
		<description><![CDATA[That&#8217;s what I wondered about when I got an email containing this bit:
I took four years of german in university and I think the knowledge has always made me a better programmer.
So, among my reply, I asked the guy to explain that, and later for permission to reproduce his reply here:
I spent twelve years off [...]]]></description>
			<content:encoded><![CDATA[<p>That&#8217;s what I wondered about when I got an email containing this bit:</p>
<blockquote><p>I took four years of german in university and I think the knowledge has always made me a better programmer.</p></blockquote>
<p>So, among my reply, I asked the guy to explain that, and later for permission to reproduce his reply here:</p>
<blockquote><p>I spent twelve years off and on living in Germany as a child in Mainz, as a high school student in Wiesbaden, and in college at the Goethe Institute in Schwabsiche Halle. I eventually got a degree in german and econ from George Washington University in DC.</p>
<p>I didn’t start programming until graduate school at the University of Southern California and I am currently finishing a phd at Virginia Tech.</p>
<p>By profession I have been a Marine Pilot(CH53), management consultant(KPMG),CEO(Datacyr and Topik Solutions), and since 9/11 working exclusively with the US government developing semantic search engines (sesame, lucene, rdf, and sparql). I also spent many years in the data warehouse field building in-memory ETL engines.</p>
<p>Languages come in all shapes and sizes, as you know.</p>
<p>The human species and those members who appear to survive and evolve fitness adaptations better than others, do so through language. The primary goal of any language is to improve search skills(Google) and the tools to control resources(The Third Reich). The structure of both german and c require a very ordered syntax when arranging symbols(info), motion(services), and objects(things) in the mind’s mental model of the world. Unlike english, which allows for some flexibility in ordering the mental model of the world, german enforces a structured approach to control and memory management not found in english. It is no accident that SAP has been so successful as a technology and a company.</p>
<p>I have had to program in a dozen languages and across as many operating systems. Since my work is all about data manipulation, design, and models, I always come back to c when I have to achieve ultimate control (memory) and performance(pointers). Without an early education in german, I don’t believe I would have ever achieved what I have been able to accomplish in the technology field.</p>
<p>My phd develops the theory of semantic intelligence. The theory is based on the concept that human cognition is a type of computational model that can be implemented in software.</p>
<p>Thus my admiration for the elegance of jQuery and your validation plugin as a structure for optimizing search and control in human computer interfaces.</p></blockquote>
<p>With german as my native language and english as a key requirement for learning to program, I can&#8217;t really reflect this well with my own experiences. The four years I learnt a bit o french at school certainly didn&#8217;t make a difference. I&#8217;d like to hear from others if they had similar experiences when learning other languages.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/07/22/can-learning-non-programming-languages-make-you-a-better-programmer/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Erste JavaScript Köln Veranstaltung</title>
		<link>http://bassistance.de/2010/07/08/erste-javascript-koln-veranstaltung/</link>
		<comments>http://bassistance.de/2010/07/08/erste-javascript-koln-veranstaltung/#comments</comments>
		<pubDate>Thu, 08 Jul 2010 16:53:01 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=681</guid>
		<description><![CDATA[Am 13. Juli findet das erste offizielle Treffen der CgnJS statt, einer Gruppe JavaScript Begeisterter aus Köln und Umgebung. An diesem Abend wird es zwei Vorträge geben: Jens Arps mit &#8216;JS auf mobile devices&#8217; und ich halte &#8216;Developing web applications with jQuery UI&#8217;.
Vorher und nachher gibt es viel Möglichkeit zum Kennenlernen und Austausch rund um [...]]]></description>
			<content:encoded><![CDATA[<p>Am 13. Juli findet das erste offizielle Treffen der CgnJS statt, einer Gruppe JavaScript Begeisterter aus Köln und Umgebung. An diesem Abend wird es zwei Vorträge geben: Jens Arps mit &#8216;JS auf mobile devices&#8217; und ich halte &#8216;Developing web applications with jQuery UI&#8217;.</p>
<p>Vorher und nachher gibt es viel Möglichkeit zum Kennenlernen und Austausch rund um JavaScript. Das Treffen beginnt um 19 Uhr und die Vorträge um 19:30 Uhr. Das ganze findet in den Räumen der <a href="http://cowoco.de/">Coworking Cologne</a> statt (Deutz-Mülheimer Straße 129, 51063 Köln) &#8211; dort fand auch letzten Dienstag ein kurzfristig organisiertes Node.js Meetup statt, mit Ryan Dahl als Vortragenden. Ein paar Fotos dazu hab ich bei <a href="http://picasaweb.google.com/joern.zaefferer/Nodejs1007">Picasa hochgeladen</a>, inkl. einem 3-minütigem Video, einem Ausschnitt aus Ryans Vortrag:</p>
<p><a href="http://picasaweb.google.com/lh/photo/2y2MXjP4_wHZIKCDrU8CEQ"><img src="http://lh6.ggpht.com/_FZHograzPy4/TDYA__7YVZI/AAAAAAAAdug/0xPs7EiS0iQ/s144/MVI_3543.jpg" /></a></p>
<p>Für Updates könnt ihr <a href="http://twitter.com/cgnjs">CgnJS bei Twitter verfolgen</a>. Hoffe man sieht sich nächsten Dienstag!</p>
<p><strong>Nachtrag:</strong> Es waren 24 Leute da, <a href="http://picasaweb.google.com/joern.zaefferer/Cgnjs201007">hier auf ein paar Fotos auch zu sehen</a>. Mein Vortrag lief gut (etwa 17 Minuten vorgetragen, dann nochmal so lang Fragen beantwortet), der von Jens Arps zu Mobile JavaScript war sehr interessant und hochaktuell. Konnte ich auch daran merken, das letztes Jahr im November meinem jQuery UI Vortrag niemand nach Mobile gefragt hatte, gestern hingegen war da eine Menge Interesse. Nächster Termin ist dann am 10. August.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/07/08/erste-javascript-koln-veranstaltung/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Git fu: Updating your GitHub fork</title>
		<link>http://bassistance.de/2010/06/25/git-fu-updating-your-github-fork/</link>
		<comments>http://bassistance.de/2010/06/25/git-fu-updating-your-github-fork/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 09:29:57 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=678</guid>
		<description><![CDATA[GitHub with their web interface makes it really easy to fork a project, but it leaves you alone when it comes to updating your fork with the changes in the original repository. Its actually really easy with a few steps:
git remote add original git://url-to-original-repo
This adds another remote repository. You can use git remote -v to [...]]]></description>
			<content:encoded><![CDATA[<p>GitHub with their web interface makes it really easy to fork a project, but it leaves you alone when it comes to updating your fork with the changes in the original repository. Its actually really easy with a few steps:</p>
<p><code>git remote add original git://url-to-original-repo</code></p>
<p>This adds another remote repository. You can use <code>git remote -v</code> to see your existing remotes. There should be &#8220;origin&#8221; already, pointing to your GitHub fork. You can use whatever name you like for the new remote repository, above I&#8217;ve used &#8220;original&#8221;.</p>
<p><code>git fetch original</code></p>
<p>This loads all commits, including branches and tags, from the specified remote repository, using the alias defined above.</p>
<p><code>git merge original/master</code></p>
<p>This merges all changes from the original master branch in your current branch, eg. your local master branch.</p>
<p><code>git push</code></p>
<p>By default, push pushes everything to your &#8220;origin&#8221; repository. Which brings your repo up-to-date. That&#8217;s it!</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/06/25/git-fu-updating-your-github-fork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autocomplete is dead, long live Autocomplete!</title>
		<link>http://bassistance.de/2010/06/23/autocomplete-is-dead-long-live-autocomplete/</link>
		<comments>http://bassistance.de/2010/06/23/autocomplete-is-dead-long-live-autocomplete/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 14:07:44 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery UI]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=675</guid>
		<description><![CDATA[I&#8217;m finally deprecating the jQuery autocomplete plugin, about four years after its creation (which was actually a merge of two forks of another plugin). jQuery 1.8 was released in March, bundling the brand new Autocomplete widget and a worthy successor of my standalone plugin. The API is way more simpler while much more capable, eg. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m finally deprecating the jQuery autocomplete plugin, about four years after its creation (which was actually a merge of two forks of another plugin). jQuery 1.8 was released in March, bundling the brand new <a href="http://jqueryui.com/demos/autocomplete/">Autocomplete widget</a> and a worthy successor of my standalone plugin. The API is way more simpler while much more capable, eg. its now trivial to work with JSON. And thanks to Themeroller-support, the result looks a lot better.</p>
<p>Today I&#8217;ve finally finished the <a href="http://www.learningjquery.com/2010/06/autocomplete-migration-guide">Autocomplete Migration Guide</a>, which explains how to migrate from ye olde plugin to the new jQuery UI Autocomplete widget. It covers the various options and their replacements, if any. In a lot of cases, we were able to get rid of the options by providing better defaults or by restructuring the API, with the <code>source</code> option being the most prominent example.</p>
<p>The next major jQuery UI release should include the new Tooltip widget, paving the way to shut down another plugin on this site.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/06/23/autocomplete-is-dead-long-live-autocomplete/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Emperor&#8217;s Old Clothes</title>
		<link>http://bassistance.de/2010/06/17/the-emperors-old-clothes/</link>
		<comments>http://bassistance.de/2010/06/17/the-emperors-old-clothes/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 07:01:14 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=669</guid>
		<description><![CDATA[The Emperor&#8217;s Old Clothes is the title of a lecture by Charles Antony Richard (C. A. R.) Hoare, published by Communications of the ACM in 1981. A not well-readable PDF version of the text (found via Simon Willison and Wikipedia) is available on archive.org. The lecture itself was delivered on Obtober 27, 1980.
Here are a [...]]]></description>
			<content:encoded><![CDATA[<p>The Emperor&#8217;s Old Clothes is the title of a lecture by Charles Antony Richard (C. A. R.) Hoare, published by Communications of the ACM in 1981. A not well-readable PDF version of the text (found via <a href="http://simonwillison.net/2010/Jun/9/compsci/">Simon Willison</a> and <a href="http://en.wikipedia.org/wiki/List_of_important_publications_in_computer_science#Software_engineering">Wikipedia</a>) is <a href="http://web.archive.org/web/20070211210228/http://www.braithwaite-lee.com/opinions/p75-hoare.pdf">available on archive.org</a>. The lecture itself was delivered on Obtober 27, 1980.</p>
<p>Here are a few quotes from the lecture, with a few comments. At the end I&#8217;m also providing the actual title-giving story for easier enjoyment, as the PDF is really not that great to read &#8211; a shame considering the great content.</p>
<blockquote><p>My first task was to implement for the new Elliot 803 computer, a library subroutine for a new fast method of internal sorting just invented by Shell. I greatly enjoyed the challenge of maximizing efficiency in the simple decimal-addressed machine code of those days. My boss and tutor, Pat Shackleton, was very pleased with my completed program. I then said timidly that I thought I had invented a sorting method that would usually run faster than SHELLSORT, without taking much extra store. He bet me sixpence that I had not. Although my method was very difficult to explain, he finally agreed that I had won my bet.</p></blockquote>
<p>And thus was born the quicksort algorithm.</p>
<blockquote><p>The first principle was security: The principle that every syntactically incorrect program should be rejected by the compiler and that every syntactically correct program should give a result or an error message that was predictable and comprehensible in terms of the source language program itself. […] A consequence of this principle is that every occurrence of every subscript of every subscripted variable was on every occasion checked at run time against both the upper and the lower declared bounds of the array. Many years later we asked our customers whether they wished us to provide an option to switch off these checks in the interests of efficiency on production runs. Unanimously, they urged us not to&#8211;they already knew how frequently subscript errors occur on production runs where failure to detect them could be disastrous. I note with fear and horror that even in 1980, language designers and users have not learned this lesson. <strong>In any respectable branch of engineering, failure to observe such elementary precautions would have long been against the law.</strong></p></blockquote>
<p>Thats an interesting point of view, and something that can be applied elsewhere. For example, <a href="http://www.schneier.com/">Bruce Schneier writes a lot about</a> how the lack of consequences makes a lot of security or privacy failures possible. If companies aren&#8217;t liable when &#8220;loosing&#8221; their users data, they have not enough incentive to prevent that in the first place.</p>
<blockquote><p>I was eventually persuaded of the need to design programming notations so as to maximize the number of errors which cannot be made, or if made, can be reliably detected at compile time. Perhaps this would make the text of programs longer. Never mind! Wouldn&#8217;t you be delighted if your Fairy Godmother offered to wave her wand over your program to remove all its errors and only made the condition that you should write out and key in your whole program three times! <strong>The way to shorten programs is to use procedures, not to omit vital declarative information.</strong></p></blockquote>
<p>Considering discussions of static vs. dynamic languages, the interesting point here would be to define &#8220;vital&#8221;. Its easy to argue that vital has different meaning based on the context.</p>
<blockquote><p>At last, there breezed into my office the most senior manager of all, a general manager of our parent company, Andrew St. Johnston. I was surprised that he had even heard of me. &#8220;You know what went wrong?&#8221; he shouted&#8211;he always shouted&#8211; &#8220;You let your programmers do things which you yourself do not understand.&#8221; I stared in astonishment. He was obviously out of touch with present day realities. How could one person ever understand the whole of a modem software product like the Elliott 503 Mark II software system?</p>
<p>I realized later that he was absolutely right; he had diagnosed the true cause of the problem and he had planted the seed of its later solution.</p></blockquote>
<p>Now that is an intersting thought. Would you agree to that statement? Are you sure?</p>
<p>Keep in mind that the point is about understanding, not doing all the work by yourself. To be more concrete, this could mean that you should be able to look at all the code and understand every line of it. Or that you understand everything when one of the programmers explains to you what he just wrote.</p>
<p>Are you responsible for other programmers and would you pass these tests?</p>
<blockquote><p>You know, you shouldn&#8217;t trust us intelligent programmers. We can think up such good arguments for convincing ourselves and each other of the utterly absurd.</p></blockquote>
<p>I&#8217;d say that actually applies to most human beings. Think of how politicians can make up arguments for the stuff that they are convinced (or more likely, were convinced) is the right thing to do.</p>
<blockquote><p>I conclude that there are two ways of constructing a software design: One way is to make it so <strong>simple</strong> that there are <strong>obviously no deficiencies</strong> and the other way is to make it so <strong>complicated that there are no obvious deficiencies</strong>.</p>
<p>The first method is far more difficult. It demands the same skill, devotion, insight, and even inspiration as the discovery of the simple physical laws which underlie the complex phenomena of nature. <strong>It also requires a willingness to accept objectives which are limited by physical, logical, and technological constraints, and to accept a compromise when conflicting objectives cannot be met. No committee will ever do this until it is too late.</strong></p></blockquote>
<p>Another essential point of view: Simplicity is key, and way harder to achieve. Break complex stuff down to the very basics, until nothing is left to remove (but no more), then build complex stuff based on that, instead of building complex stuff on other complex stuff.</p>
<blockquote><p>When any new language design project is nearing completion, there is always a mad rush to get new features added before standardization. The rush is mad indeed, because it leads into a trap from which there is no escape. A feature which is omitted can always be added later, when its design and its implications are well understood. A feature which is included before it is fully understood can never be removed later.</p></blockquote>
<p>What he says.</p>
<blockquote><p>Programmers are always surrounded by complexity; we cannot avoid it. Our applications are complex because we are ambitious to use our computers in ever more sophisticated ways. Programming is complex because of the large number of conflicting objectives for each of our programming projects. <strong>If our basic tool, the language in which we design and code our programs, is also complicated, the language itself becomes part of the problem rather than part of its solution</strong>.</p></blockquote>
<p>Another argument for the importance of simple and powerful programming languages.</p>
<blockquote><p>I knew that it would be impossible to write a wholly reliable compiler for a language of this complexity and impossible to write a wholly reliable program when the correctness of each part of the program depends on checking that every other part of the program has avoided all the traps and pitfalls of the language.</p></blockquote>
<p>Something every programmer learns once working on a project above a certain complexity: You change on thing without having any idea on the impact on everything else. The less (inter-)dependencies the code has, the easier it is to determine the impact of changes. Also a major motivation for test-driven design&#8230;</p>
<blockquote><p>Almost anything in software can be implemented, sold, and even used given enough determination. There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way&#8211;and that is reliability. <strong>The price of reliability is the pursuit of the utmost simplicity.</strong> It is a price which the very rich find most hard to pay.</p></blockquote>
<p>The most important quote here bears repeating: <strong>The price of reliability is the pursuit of the utmost simplicity.</strong></p>
<blockquote><p>To have our best advice ignored is the common fate of all who take on the role of consultant, ever since Cassandra pointed out the dangers of bringing a wooden horse within the walls of Troy.</p></blockquote>
<p>Nothing to add.</p>
<p>Now, the actual title-giving story that Hoare tells at the end of the lecture. Copied from the PDF linked above, © ACM 1981.</p>
<h3>The Emperor&#8217;s Old Clothes</h3>
<p>Many years ago, there was an Emperor who was so excessively fond of clothes that he spent all his money on dress. He did not trouble himself with soldiers, attend banquets, or give judgement in court. Of any other king or emperor one might say, &#8220;He is sitting in council,&#8221; but it was always said of him, &#8220;The emperor is sitting in his wardrobe.&#8221; And so he was. On one unfortunate occasion, he had been tricked into going forth naked to his chagrin and the glee of his subjects. He resolved never to leave his throne, and to avoid nakedness, he ordered that each of his many new suits of clothes should be simply draped on top of the old.</p>
<p>Time passed away merrily in the large town that was his capital. Ministers and courtiers, weavers and tailors, visitors and subjects, seamstresses and embroiderers, went in and out of the throne room about their various tasks, and they all exclaimed, &#8220;How magnificent is theattire of our Emperor.&#8221;</p>
<p>One day the Emperor&#8217;s oldest and most faithful Minister heard tell of a most distinguished tailor who taught at an ancient institute of higher stitchcraft, and who had developed a new art of abstract embroidery using stitches so refined that no one could tell whether they were actually there at all. &#8220;These must indeed be splendid stitches,&#8221; thought the minister. &#8220;If we can but engage this tailor to advise us, we will bring the adornment of our Emperor to such heights of ostentation that all the world will acknowledge him as the greatest Emperor there has ever been.&#8221;</p>
<p>So the honest old Minister engaged the master tailor at vast expense. The tailor was brought to the throne room where he made obeisance to the heap of fine clothes which now completely covered the throne. All the courtiers waited eagerly for his advice. Imagine their astonishment when his advice was not to add sophistication and more intricate embroidery to that which already existed, but rather to remove layers of the finery, and strive for simplicity and elegance in place of extravagant elaboration. &#8220;This tailor is not the expert that he claims,&#8221; they muttered. &#8220;His wits have been addled by long contemplation in his ivory tower and he no longer understands the sartorial needs of a modern Emperor.&#8221; The tailor argued loud and long for the good sense of his advice but could not make himself heard. Finally, he accepted his fee and returned to his ivory tower.</p>
<p>Never to this very day has the full truth of this story been told: That one fine morning, when the Emperor felt hot and bored, he extricated himself carefully from under his mountain of clothes and is now living happily as a swineherd in another story. The tailor is canonized as the patron saint of all consultants, because in spite of the enormous fees that he extracted, he was never able to convince his clients of his dawning realization that their clothes have no Emperor.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/06/17/the-emperors-old-clothes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flash Issues</title>
		<link>http://bassistance.de/2010/06/08/flash-issues/</link>
		<comments>http://bassistance.de/2010/06/08/flash-issues/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 22:13:17 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=666</guid>
		<description><![CDATA[Over all the flash-must-die debates and if DHTML5 can replace Flash, I&#8217;m missing some pragmatism. What are the actual issues with Flash? Can those be solved?
Here are the day-to-day issues that I&#8217;m experiencing as a user of Flash components:
Captured keyboard input
My biggest issue: When a Flash movie has focus, it swallows most keyboard events. I [...]]]></description>
			<content:encoded><![CDATA[<p>Over all the flash-must-die debates and if DHTML5 can replace Flash, I&#8217;m missing some pragmatism. What are the actual issues with Flash? Can those be solved?</p>
<p>Here are the day-to-day issues that I&#8217;m experiencing as a user of Flash components:</p>
<h3>Captured keyboard input</h3>
<p>My biggest issue: When a Flash movie has focus, it swallows most keyboard events. I use Ctrl+Tab and Ctrl+n (1 for mail, 2 for RSS reader and so on) all the time, but for that to work on a Tab with an active Flash movie, I have to click outside the movie so that keyboard focus is back where it belongs. Completely unnecessary and annoying as hell.</p>
<h3>Full screen video slow or hanging</h3>
<p>My Lenovo laptop has trouble playing full screen HD video in Flash. It actually runs fine most of the time, it just hangs half second every few seconds. Worse, sometimes video completely hangs in fullscreen mode, while audio continues to play, so depending on the video, I don&#8217;t even notice the problem until 10 seconds later. I have to press Escape to go back to normal mode, then go to fullscreen again. Happens way too often.</p>
<h3>Crashes browser</h3>
<p>For years I thought only the Java browser plugin was able to reliably crash my Firefox browser. Today Firefox crashed when trying to play a full screen video. I got worse as Tabmix Plus was unable to restore my open Tabs (about a dozen), and loosing any user input is among the biggest sin software can commit. I wouldn&#8217;t care for the plugin to crash and require a browser restart, but crashing the browser isn&#8217;t acceptable. I&#8217;d disable Flash by default if that would happen regularly.</p>
<p>Stability, performance, thats likely to be important for Adobe to be working on. The keyboard event capturing? I hope so.</p>
<h3>Sidenote on the &#8220;open mobile web&#8221;</h3>
<p>If someone argues that you don&#8217;t need Flash on the iPhone as Apple embraces the open web and DHTML5 and everything: Try to play a background sound on Mobile Safari. As that isn&#8217;t possible for whatever reason, the only way to port Flash games to the iPhone is via Apple&#8217;s closed App Store. Even if they add support for playing back a simple MP3 file, I doubt we get anywhere near <a href="http://www.audiotool.com/">stuff like this (click on Launch App to see the Flash stuff)</a> anytime soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/06/08/flash-issues/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Yoda Shirt</title>
		<link>http://bassistance.de/2010/04/21/yoda-shirt/</link>
		<comments>http://bassistance.de/2010/04/21/yoda-shirt/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 22:11:45 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=658</guid>
		<description><![CDATA[Auf 3dsupply.de werden derzeit Blogger mit einem kostenlosen T-Shirt bestochen, das man sich auch noch selbst aussuchen kann, wenn man den auf deren Seite verlinkt. Da ich den Shop mag und da schon öfter bestellt hab, mach ich da auch mal mit. Frei nach Frank Zappa: I&#8217;m only in it for the money! Not.
Zum Titel: [...]]]></description>
			<content:encoded><![CDATA[<p>Auf <a href="http://www.3dsupply.de">3dsupply.de</a> werden derzeit Blogger mit einem <a href="http://www.3dsupply.de/shirt4link/">kostenlosen T-Shirt bestochen</a>, das man sich auch noch selbst aussuchen kann, wenn man den auf deren Seite verlinkt. Da ich den Shop mag und da schon öfter bestellt hab, mach ich da auch mal mit. Frei nach Frank Zappa: I&#8217;m only in it for the money! Not.</p>
<p>Zum Titel: Ich erhoffe mir <a href="http://www.3dsupply.de/products/206-up-the-shut-fuck-you-must/24-bc-exact-190-schwarz/">dieses super Yoda Shirt</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/04/21/yoda-shirt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tarantino Mashups</title>
		<link>http://bassistance.de/2010/04/14/tarantino-mashups/</link>
		<comments>http://bassistance.de/2010/04/14/tarantino-mashups/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 22:24:33 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Common]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=647</guid>
		<description><![CDATA[Tarantino movies are great, the music in them is great, and mashing all the movies together is even better. Eclectic Method did that:

Eclectic Method&#8217;s The Tarantino Mixtape on Vimeo (HD available only on their site)
Their Tarantino Mixtape is not quite new, but has to be mentioned when looking at this Tarantino plus Cohen Brothers mashup. [...]]]></description>
			<content:encoded><![CDATA[<p>Tarantino movies are great, the music in them is great, and mashing all the movies together is even better. Eclectic Method did that:</p>
<p><object width="400" height="300"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=4368246&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=4368246&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"></embed></object>
<p><a href="http://vimeo.com/4368246?hd=1">Eclectic Method&#8217;s The Tarantino Mixtape on Vimeo (HD available only on their site)</a></p>
<p>Their Tarantino Mixtape is not quite new, but has to be mentioned when looking at this Tarantino plus Cohen Brothers mashup. The beginning is actually very similar, which probably isn&#8217;t a coincidance. Mixing in Cohen movies is certainly a good move, though the music mixing isn&#8217;t quite as good overall &#8211; the transitions are rather weak. Though mixing Samuel L. Jacksons&#8217; bible quote with Don&#8217;t Let Me Be Misunderstood from Kill Bill I, climaxing into wild shooting scenes is awesome.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/2_tg8fMcpTc&#038;hl=en_US&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/2_tg8fMcpTc&#038;hl=en_US&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object><br />
<a href="http://www.youtube.com/watch?v=2_tg8fMcpTc&#038;fmt=22">Tarantino vs Coen Brothers on YouTube</a></p>
<p>Harvey Keitel&#8217;s &#8220;Bam. Bam. Bam.&#8221; from Reservoir Dogs is in both, and if you&#8217;ve watched The Tarantino Mixtape first, you&#8217;ll certainly like the appearance on the second mix. I do. And now I also want to watch Kill Bill I and II again. I probably should give up on waiting for the Kill Bill Director&#8217;s Cut &#8211; both movies as one, as originally intended &#8211; and just watch them as-is. Still have the shrink-wrapped DVD lying around here&#8230; And I want to watch all of the movies in here that I haven&#8217;t seen, yet. And watch Inglorious Basterds again. Oh my&#8230;</p>
<p>PS: If you like the Eclectic Method mashup, be sure to check <a href="http://www.eclecticmethod.net/2008/12/02/lock-up-your-videos/">Lock up your Videos</a>. There are a few goodies on their vimeo channel, too, but its rather random and not nearly on the level as the Tarantino Mixtape or LUYV.</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/04/14/tarantino-mashups/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Branching with Git</title>
		<link>http://bassistance.de/2010/03/22/branching-with-git/</link>
		<comments>http://bassistance.de/2010/03/22/branching-with-git/#comments</comments>
		<pubDate>Mon, 22 Mar 2010 02:27:37 +0000</pubDate>
		<dc:creator>Jörn</dc:creator>
				<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://bassistance.de/?p=638</guid>
		<description><![CDATA[Now that jQuery UI is on Github, I need to learn how to branch and merge with Git &#8211; and not just local branches, but also pushing branches to Git so that others can work on them.
The chapter on branching from Pro Git is a good start for learning branching in Git. And the next [...]]]></description>
			<content:encoded><![CDATA[<p>Now that <a href="http://github.com/jquery/jquery-ui">jQuery UI is on Github</a>, I need to learn how to branch and merge with Git &#8211; and not just local branches, but also pushing branches to Git so that others can work on them.</p>
<p>The chapter on <a href="http://progit.org/book/ch3-2.html">branching from Pro Git</a> is a good start for learning branching in Git. And the next step, remote branches, has its <a href="http://progit.org/book/ch3-5.html">own chapter</a> as well.</p>
<p>In order to be able to repeat the necessary steps, I&#8217;ll describe here how to create a local branch, commit some changes, and then push that branch to your Github repository.</p>
<p>The following command creates a new branch and switches to that:</p>
<p><code>git checkout -b "newbranch"</code></p>
<p>To see the local branches and which one is the active one, use:</p>
<p><code>git branch</code></p>
<p>That should now display a list like</p>
<p><code>master<br />
* newbranch</code></p>
<p>Where the asterix marks the new active branch. With that, you can modify stuff in the branch. Then, to add all modified files to a commit, along with a message:</p>
<p><code>git commit -a -m "Message along with modifications"</code></p>
<p>Now comes the interesting part, pushing the branch back to the remote repository, Github in my case:</p>
<p><code>git push origin tooltip</code></p>
<p>Git knows that &#8220;origin&#8221; refers to git@github.com:jquery/jquery-ui.git, so it&#8217;s enough to add the name of the branch.</p>
<p>This works so far, but isn&#8217;t optimal yet: To push from the tooltip branch, I need to use &#8220;git push origin tooltip&#8221; again. I&#8217;ve found two ways to fix this, both way to complicated for such a simple requirement.</p>
<p>Either manually edit your .git/config file and add the branch, you should then end up with something like this:</p>
<pre><code>[branch "master"]
	remote = origin
	merge = refs/heads/master
[branch "tooltip"]
	remote = origin
	merge = refs/heads/tooltip</code></pre>
<p>For my &#8220;tooltip&#8221; branch, I added the entry below the entry for &#8220;master&#8221;, and just replaced &#8220;master&#8221; with &#8220;tooltip&#8221;.</p>
<p>To avoid editing that config file, I found this to work:</p>
<p><code>git branch -D tooltip<br />
git checkout --track origin/tooltip</code></p>
<p>With branch -D I forced a deletion of the local branch, then used checkout with the &#8211;track option to check it out again and have Git set up the config entries for &#8220;tracking&#8221;. There should be an easier way to do that.</p>
<p><strong>Update</strong>: <a href="http://cheat.errtheblog.com/s/git" title="See the Configuration section at the start">Apparently</a> you can configure Git to automatically setup the tracking via:</p>
<p><code>git config --global branch.autosetupmerge true</code></p>
<p>You can leave out &#8220;&#8211;global&#8221; to apply it only to the current project. Seems to be more useful as a global setting&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://bassistance.de/2010/03/22/branching-with-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.234 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-09-02 15:31:18 -->
