<?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>Not Rocket Science</title>
	<atom:link href="http://www.stum.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stum.de</link>
	<description>Random thoughts of neat disorder</description>
	<lastBuildDate>Sat, 05 May 2012 14:57:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Be careful with choices that carry over multiple games</title>
		<link>http://www.stum.de/2012/03/07/be-careful-with-choices-that-carry-over-multiple-games/</link>
		<comments>http://www.stum.de/2012/03/07/be-careful-with-choices-that-carry-over-multiple-games/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 05:25:35 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1119</guid>
		<description><![CDATA[As I said before, I absolutely love story driven games. One thing that often turns a great game into a great series are expansions and sequels that actually continue the story and allow a flow between them. Might and Magic 1-5 had a pretty epic saga between Corak and Sheltem, Ultima was essentially 3 trilogies [...]]]></description>
			<content:encoded><![CDATA[<p>As I said before, I absolutely <a href="http://www.stum.de/2012/02/21/in-defense-of-story-driven-games/">love story driven games</a>. One thing that often turns a great game into a great series are expansions and sequels that actually continue the story and allow a flow between them. Might and Magic 1-5 had a pretty epic saga between Corak and Sheltem, Ultima was essentially 3 trilogies with Ultima 7 split into 4 parts as well, and Wizardry 6-8 formed the Cosmic Bane saga.</p>
<p>One of the really intriguing features that sequels offer is a character import that alters the story of the game before it is even started, based on the choices made in the previous game. Wizardry 6 had 3 different endings, and Wizardry 7 had 4 different beginnings (one for each ending and one for brand new players). In Wizardry 6, you could get a special ring which you could give to an NPC in Wizardry 8 for bonus xp and a bit of extra story. Dragon Age: Awakening and Dragon Age II picked up on a few choices made in Origins, depending on who is made King.</p>
<p>Playing a sequel and seeing how earlier choices made an impact – even if it’s small – is very intriguing. It encourages experimentation and adds replay value. But it can also cause a lot of grief. Let me tell you about my relationship with Mass Effect and it’s sequels.</p>
<p>The first Mass Effect is one of my favorite games. The universe is spectacular, the races are diverse, the dialogue is immortal and the gameplay is fun without getting in the way of the story (although yes, the sidequest are one of three possible choices, repeated dozens of times). I finished that game 6 or 7 times and ended up with a Level 60 character and every single side quest done. But most importantly, I had a character that I really identified with because all the choices were mine, set through hundreds of dialogues, dozens of Renegade/Paragon choices. But there was one decision that is really important to me. Without wanting to spoil too much, you have to make a choice between 2 side characters, one will live and one will die. I picked the one I really enjoyed as a character, the one who had a really interesting attitude and some great dialogue. The character that I let die is a shallow, generic red shirt in my eyes. There is also another character that can live or die, and since it’s a really awesome character I let him live. And then, there are two really interesting choices at the end.</p>
<p>Mass Effect 2 came out in 2010, and I had to start a new game because of a new Gamertag (that’s a whole different rant). With no option to import my ME1 character, I had to start a brand new game with the default choices. And to this day, I’m convinced that the ME2 default choices are meant as a punishment for the people who didn’t play ME1, because they are horrible. However, while ME2 mentions them, it doesn’t actually do much with those choices yet and focuses on its own story. You start the game, play through the first part and then a character offers to tell you about the past. Because I was already playing ME2, it was much easier to swallow. It then goes on doing its own thing and only much later you actually run into some of the ME1 choices. That made it much, much easier to live with them and just go on.</p>
<p>Today, I received my copy of Mass Effect 3. I was really enthusiastic about it, until I started it. The character import immediately shows up and tells you the choices before you even start the game. That’s already a downer that made me consider whether I wanted to first play the prequel to get the right choices. I resigned and started a new ME3 game. 5 minutes into the game (as part of the intro), I run into the character I wanted to die in ME1 in favor of the much better other character. A few seconds later, I switched off my Xbox.</p>
<p>Any enthusiasm I had for ME3 is gone. I can’t play it with the default choices, so now I must play through ME2 again, and it may be months before I even start playing ME3. For ME2, BioWare actually did the right thing: They offer DLC (“Genesis”) that is essentially an interactive comic in which you can make all the ME1 choices. The DLC came out much later than the game, so I didn’t have it for my character back then, but right now it saves me from playing through ME1 again (it would still be nice to get a character from another Gamertag).</p>
<p>This option should exist in ME3, because it’s the right thing to do. A lot of you might say that I should just play the game and that I’m being silly and that the changes made by these choices are really, really tiny. Fair enough, many people play games for gameplay reasons alone. But I’m a story gamer, and for me, the default choice in ME3 is a show stopper, even worse that you are confronted with them before you even start to play the game.</p>
<p>That is why multi-game storylines can be dangerous, because it may really ruin the motivation and enthusiasm a person puts into a game. I’m attached to the Universe and the people in them. I believe that any game which allows savegame import and adjust story choices based on that needs a way for people to set the variables themselves in case they don’t have a character to import. I realize that part of the problem is that I’m playing on an Xbox. On a PC, I would have just grabbed a Savegame editor and created the ME2 character I want for import into ME3.</p>
<p>Still, a game that’s story driven should make sure that such an option exists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/03/07/be-careful-with-choices-that-carry-over-multiple-games/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Always check all fields in the model</title>
		<link>http://www.stum.de/2012/03/04/always-check-all-fields-in-the-model/</link>
		<comments>http://www.stum.de/2012/03/04/always-check-all-fields-in-the-model/#comments</comments>
		<pubDate>Sun, 04 Mar 2012 22:44:02 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[asp.net mvc]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1116</guid>
		<description><![CDATA[Today, Github was hit by a security vulnerability that was caused by not properly dealing with model class fields that were not passed in by the form. Basically, by forging a HTTP Request, it was possible to set values for any field in the model, even the ones the forms on the website normally don’t [...]]]></description>
			<content:encoded><![CDATA[<p>Today, <a href="https://github.com/blog/1068-public-key-security-vulnerability-and-mitigation">Github was hit by a security vulnerability</a> that was caused by not properly dealing with model class fields that were not passed in by the form. Basically, by forging a HTTP Request, it was possible to set values for any field in the model, even the ones the forms on the website normally don’t pass in.</p>
<p>This type of issue is not limited to Ruby on Rails though, a similar issue can happen with any framework. Let me demonstrate how this could affect ASP.net MVC. Assume you have a Business Object:</p>
<p>
<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">BusinessObject
</span>{
    <span style="color: blue">public int</span>? UserId { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
    <span style="color: blue">public string </span>Content { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
}</pre>
<p>Your underlying service makes sure to set the UserId to the current user if it’s not set:</p>
<p><pre class="code"><span style="color: blue">public void </span>Upsert(<span style="color: #2b91af">BusinessObject </span>business)
{
    <span style="color: blue">if </span>(!business.UserId.HasValue)
    {
        business.UserId = _userService.GetCurrentUserId();
    }

    <span style="color: blue">using </span>(<span style="color: blue">var </span>repo = _businessObjectRepositoryFactory())
    {
        repo.Upsert(business);
    }
}</pre>
<p></p>
<p>On your form, you don’t set the user id:</p>
<p><pre class="code"><span style="color: blue">&lt;</span><span style="color: maroon">form </span><span style="color: red">action</span><span style="color: blue">=&quot;</span><span style="background: yellow">@</span><span style="color: blue">Url.Action(</span><span style="color: #a31515">&quot;Index&quot;</span><span style="color: blue">)&quot; </span><span style="color: red">method</span><span style="color: blue">=&quot;post&quot;&gt;
    </span><span style="background: yellow">@</span>Html.TextBoxFor(m =&gt; m.Content)
    <span style="color: blue">&lt;</span><span style="color: maroon">input </span><span style="color: red">type</span><span style="color: blue">=&quot;submit&quot; </span><span style="color: red">value</span><span style="color: blue">=&quot;send&quot; /&gt;
&lt;/</span><span style="color: maroon">form</span><span style="color: blue">&gt;
</span></pre>
<p></p>
<p>And in your controller, you just pass through the model to the service, since the service deals with it:</p>
<p><pre class="code">[<span style="color: #2b91af">HttpPost</span>]
<span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Index(<span style="color: #2b91af">BusinessObject </span>model)
{
    <span style="color: blue">try
    </span>{
        _businessService.Upsert(model);
        <span style="color: blue">return </span>RedirectToAction(<span style="color: #a31515">&quot;Index&quot;</span>);
    }
    <span style="color: blue">catch </span>(<span style="color: #2b91af">Exception </span>ex)
    {
        <span style="color: #2b91af">Trace</span>.TraceError(ex.ToDebuggingOutput());
        <span style="color: blue">return </span>RedirectToAction(<span style="color: #a31515">&quot;Error&quot;</span>);
    }
}</pre>
<p></p>
<p>This works great, your service enters the branch that sets the current user id, so you can move on to the next feature!</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.stum.de/wp-content/uploads/2012/03/image.png" width="510" height="127" /></p>
<p>But wait, what if I just forge a HTTP POST using <a href="http://curl.haxx.se/">cUrl</a> or <a href="http://fiddler2.com/fiddler2/">Fiddler</a> or <a href="https://developer.mozilla.org/en/XMLHttpRequest">JavaScript</a> or the <a href="https://addons.mozilla.org/en-US/firefox/addon/poster/">Firefox Poster plugin</a> or any of the other many many ways to create arbitrary HTTP Requests? Let’s try!</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.stum.de/wp-content/uploads/2012/03/image1.png" width="376" height="343" /></p>
<p>Well, look at that!</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.stum.de/wp-content/uploads/2012/03/image2.png" width="424" height="168" /></p>
<p>Since no one checks that the UserId should be null, this would happily let me post as User 12.</p>
<p>This isn’t a vulnerability in the Framework, and it is not a new issue. In ASP.net MVC, there are many ways to avoid this, one example being the <a href="http://msdn.microsoft.com/en-us/library/system.web.mvc.bindattribute.aspx">BindAttribute</a>.</p>
<p><pre class="code">[<span style="color: #2b91af">HttpPost</span>]
<span style="color: blue">public </span><span style="color: #2b91af">ActionResult </span>Index(
    [<span style="color: #2b91af">Bind</span>(Include=<span style="color: #a31515">&quot;Content&quot;</span>)] <span style="color: #2b91af">BusinessObject </span>model
)</pre>
<p></p>
<p>With that one set, UserId will remain null even if I POST it in:</p>
<p><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://www.stum.de/wp-content/uploads/2012/03/image3.png" width="417" height="176" /></p>
<p>There are other methods for this: Creating specialized business classes for each form POST, using a custom model binder, setting each field to default… A Whitelist on the Bind is easy, but can get complex for large models, and you won’t get a Compiler Error if someone renames a field. Specialized business classes give you compiler errors if stuff changes, but mean 1 class + mapping code per Form POST action.</p>
<p>While this example seems trivial, it’s very easy to miss over-posting vulnerabilities on larger models, and while attackers can just try guessing common model property names like UserID, the more forms your application has the more data an attacker has as well to correctly guess property names.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/03/04/always-check-all-fields-in-the-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kindle Fire, 3 months later</title>
		<link>http://www.stum.de/2012/02/26/kindle-fire-3-months-later/</link>
		<comments>http://www.stum.de/2012/02/26/kindle-fire-3-months-later/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 00:48:29 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1110</guid>
		<description><![CDATA[Back in November, I posted about my initial experiences with my Kindle Fire. I wasn’t sure if I wanted to keep it, but either I liked it or I was too lazy to return in. So now, 3 months later, I’d like to write an update about my impressions. First of all, Amazon has released [...]]]></description>
			<content:encoded><![CDATA[<p>Back in November, <a href="http://www.stum.de/2011/11/18/kindle-fire-impressions/">I posted about my initial experiences</a> with my Kindle Fire. I wasn’t sure if I wanted to keep it, but either I liked it or I was too lazy to return in. So now, 3 months later, I’d like to write an update about my impressions.</p>
<p>First of all, Amazon has released several updates to the software already, I counted at least 3 (which is about 3 more updates every other Android device receives, but that’s another topic). Right now, I’m on version 6.2.2.</p>
<p><strong>The good</strong></p>
<p>Overall, <strong>responsiveness has improved</strong> a lot. It’s still nowhere near perfect though, but it’s a lot better than the initial 6.1 Firmware.</p>
<p>Then, we finally got <strong>Full Screen Video</strong> on the Netflix app. The mandatory 20 pixel grey line is finally gone! I don’t know if Amazon changed their API to allow it or if it’s Netflix that had to change, but in any case, it’s a big improvement!</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1000942" border="0" alt="P1000942" src="http://www.stum.de/wp-content/uploads/2012/02/P1000942.jpg" width="604" height="454" /></p>
<p><font size="1">(Unrelated but important: Netflix has Xena The Warrior Princess on instant streaming!)</font></p>
<p>The browser now has a full screen mode as well, although here you still have the 20px bar.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1000946" border="0" alt="P1000946" src="http://www.stum.de/wp-content/uploads/2012/02/P1000946.jpg" width="604" height="454" /></p>
<p>The Amazon <strong>store experience is quite nice</strong>, being able to purchase Music, have it on the cloud drive immediately and optionally download it over WiFi works well. Amazon Instant Video has a few things neither Netflix nor Hulu Plus have (They have Caddyshack, and I’m not to proud to admit I like that movie!), so for me as an Amazon Prime member it’s a really nice plus. Same for the Book Lending feature.</p>
<p><strong>The still bad</strong></p>
<p>The Keyboard has an auto-correct feature that automatically corrects words. <strong>You can not disable auto-correct</strong>. I realize the Kindle Fire is a device for consumption rather than creation of content (the same was said about the iPad, but on the Kindle it actually applies), but it surely would be nice to write technical or fictional documents without the device constantly trying to “correct” spellings. The settings menu offers a way to disable Quick Fixes, but that is an entirely different feature altogether.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1000943" border="0" alt="P1000943" src="http://www.stum.de/wp-content/uploads/2012/02/P1000943.jpg" width="604" height="454" /></p>
<p><font size="1">(Pressing the space bar will replace “hobbin” with “bobbin”, and you can not disable this feature. Have fun writing a fictional or technical document with that.)</font></p>
<p><strong>The Music section doesn’t handle large collections well.</strong> I have about 7000 songs in my cloud drive, and often when I tap a song I get the wrong one, possibly because some index isn’t synchronized properly. Also, the shuffle seems to be capped at 2000 songs. I don’t know if that means the random songs only come out of those 2000 or if it’s a mere display issue. Still, more polish would be better, there is plenty of free space to cache the entire song list.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="P1000945" border="0" alt="P1000945" src="http://www.stum.de/wp-content/uploads/2012/02/P1000945.jpg" width="324" height="244" /></p>
<p>You can’t change the background image of the lock screen. You still can’t take screenshots, although a device that doesn’t have physical buttons would have a hard time offering that feature. Pressing the power button for a long time and getting asked “Screenshot, Shut Down or Cancel?” would be pretty much the only option, and it’s an option I’d like. The carousel still sucks. Android applications are for the most part garbage, and the Free App a Day highlights that beautifully. <a href="http://www.airportmania.com/airport_mania_2_wild_trips.htm">Airport Mania 2</a> is awesome though, you should buy it!</p>
<p>There are still no Twitter or Facebooks apps. You can argue that a device without a camera or microphone doesn’t really benefit from apps and that the mobile websites are good enough, and for the most part the are. If you can live with the fact that they are slow as hell, because every action requires a roundtrip through the internet.</p>
<p><strong>There is not a big emphasis on developers</strong>. They do have a <a href="http://www.amazonappstoredev.com/">development blog</a>, but their offering to interested developers still contain of a <a href="https://developer.amazon.com/help/faq.html#KindleFire">FAQ page</a> which tells you to use Android SDK Version 2.3.4, a version that doesn’t exist in the Android Dev tools. Also, to get ADB running you have to manually edit a bunch of files, outlined in their <a href="http://g-ecx.images-amazon.com/images/G/01/sdk/Connecting_your_Kindle_Fire_to_ADB.pdf">PDF instructions</a>. Apps clearly isn’t a Focus for Amazon, otherwise we would already have a all-in-one Kindle Fire developer Package with a customized Eclipse, the correct SDK, working ADB Drivers and a set of development Guidelines on how to develop a Kindle Fire Application.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="androidsdk" border="0" alt="androidsdk" src="http://www.stum.de/wp-content/uploads/2012/02/androidsdk.png" width="247" height="209" /></p>
<p><font size="1">(Amazon says I should use Android 2.3.4 (API Level 10). That version doesn’t exist, so I hope 2.3.3 has all the features I need?)</font></p>
<p><strong>Overall</strong></p>
<p>I use my Kindle Fire a lot. My iPad is lying around idly most of the time, mainly because the 7” form factor of the Fire is so much more portable. The Cloud Drive Music player is overall a decent experience, and finally having full screen Netflix is great. Also, reading on the screen is surprisingly good – I no longer feel to also carry my Kindle 4 with me to read a book.</p>
<p>For consumption of Media, it’s worth the $200. For creation of media, it still holds nothing against the iPad, mostly because of the mandatory auto-correct and low quality apps.</p>
<p>It will be interesting if the next iPad comes in a portable 7” format, and I’m certainly interested to see what Amazon will do with the next-gen Kindle Fire (oh please, are there ANY doubts that the Fire will have successors?). 3 months ago I compared it to the Kindle 1, and that still stands: A decent device, a little bit crappy in places, but a market opener that’s actually usable for people.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/02/26/kindle-fire-3-months-later/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>In defense of story-driven games</title>
		<link>http://www.stum.de/2012/02/21/in-defense-of-story-driven-games/</link>
		<comments>http://www.stum.de/2012/02/21/in-defense-of-story-driven-games/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 08:35:27 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1101</guid>
		<description><![CDATA[I am a gamer. That word has many meanings, to me a gamer is someone who can immerse into games and really enjoy them, for whatever reason. For some people, that reason is Multiplayer and they tend to focus on games with strong multiplayer like FPS and sports and try to be on top of [...]]]></description>
			<content:encoded><![CDATA[<p>I am a gamer. That word has many meanings, to me a gamer is someone who can immerse into games and really enjoy them, for whatever reason. For some people, that reason is Multiplayer and they tend to focus on games with strong multiplayer like FPS and sports and try to be on top of the leaderboards. For some other people, that reason is creativity and they tend to focus on sandbox games and build whole worlds in Minecraft. Other people are fascinated by playing god and shaping a world, which is served by games like The Sims.</p>
<p>For me, the reason to immerse in games is the story, which is why I tend towards RPGs.</p>
<p><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="Games" border="0" alt="Games" src="http://www.stum.de/wp-content/uploads/2012/02/Games.jpg" width="600" height="315" /></p>
<p>There is <a href="http://kotaku.com/5886674/bioware-writer-describes-her-gaming-tastes-angry-gamers-call-her-a-cancer">a lot of bile on the internet</a> about an Interview with one of Bioware’s writers in which she said she doesn’t really like playing games and thinks games should have a way to skip combat. The reactions she is receiving make me ashamed that I am considering myself a gamer, but then I also realize that there are a whole lot of 12 year olds playing on Xbox Live who like to use “Fag” as an all-purpose insult for everything. I could do the right thing and found an organization whose sole purpose lies in locating these kids and giving them the severe beating they deserve, but instead I chose to write a blog post.</p>
<p>First of all, let me talk about BioWare games and their writing. You can criticize their games for weak itemization. You can criticize Mass Effect 1 for the weak handling of the Mako and the fact that their side mission is one of 3 missions, repeated 85 times. You can criticize Dragon Age for weak combat balance (hence many people call it Dragon Mage) and you can criticize Dragon Age II for being a lot weaker than Origins. But each and every game they made (I haven’t played SW:TOR, so no comments there) was a highly enjoyable experience for me. Why?</p>
<p>Because they have the best writers in the whole entire industry. <a href="http://www.imdb.com/title/tt1073668/quotes">Mass Effect</a> alone has more immortal quotes than other companies entire catalogues, not to forget <a href="http://www.youtube.com/watch?v=FESOPPP5YEQ">one of the best scenes</a> to ever make it into a video game. Dragon Age is worth playing if for nothing else then at least for listening to <a href="http://www.youtube.com/watch?v=CrspWw7Z11Q">Alistair and Morrigan</a>. And yes, I fully admit that as a heterosexual male, <a href="http://www.youtube.com/watch?v=IkbJVNaa_DA&amp;feature=related">Leliana</a> was my favorite side character, not just because I need a rogue anyway since I was playing a Mage.</p>
<p>A lot of people don’t care, and that’s okay, it’s a choice. A lot of people do care, and I am one of them. I have played through some <a href="http://www.youtube.com/watch?v=z0lxjhndkIc">truly horrible games</a>, if for nothing else then for the story. I am an avid reader of fictional books, I’ve plowed through a lot of Star Wars’ Extended Universe, pretty much anything <a href="http://en.wikipedia.org/wiki/Robert_Ludlum">Robert Ludlum</a> and <a href="http://en.wikipedia.org/wiki/Ken_Follett">Ken Follett</a> wrote, I do hope that all of <a href="http://en.wikipedia.org/wiki/The_Witcher">the Witcher</a> books get&#160; translated into English and I have a man-crush on both <a href="http://en.wikipedia.org/wiki/Neil_Stephenson">Neil Stephenson</a> and <a href="http://en.wikipedia.org/wiki/Iain_M._Banks">Iain Banks</a>.</p>
<p>When it comes to games, I actually read quest texts and follow story lines, and I know that if I’m standing west of a house and there is a small mailbox here, I might be eaten by a Grue later.</p>
<p>So when people object the notion of a skip-combat button, it puzzles me. Of course, I do remember a time where “interactive storytelling” meant something else. In the dark ages of the CD-ROM Revolution, we had some truly horrible “games” that were essentially just a collection of horrible FMV clips pieced together with laughable “game” sequences. <a href="http://www.youtube.com/watch?v=ywa07Iic8Zc">Night Trap</a> or <a href="http://www.youtube.com/watch?v=DyaF_gCKWsI">Plumbers don’t wear ties</a> gave “Interactive Storytelling” a really bad name because those pieces of garbage didn’t have an actual game to them.</p>
<p>When I think of good examples, I think of the <a href="http://www.youtube.com/watch?v=vmRmyZJ7ZK8">X-Files</a> game or <a href="http://www.youtube.com/watch?v=RpxItq_r7to">Wing Commander 3</a> &amp; 4. Especially these two Wing Commander games are a showcase of what Storytelling can do to a game. We have moved away from real actors towards computer generated imagery, but it is still about characters and their development. <a href="http://www.youtube.com/watch?v=DtWXawNAzoc">Warcraft 3 is an example of this</a>, in my opinion it’s by far the best RTS ever made in terms of storytelling thanks to the depth of characters like Arthas and Thrall. Command &amp; Conquers Kane is a similar example, even though his plot isn’t as cohesive.</p>
<p>I do not think that removing combat completely from a game and just hopping from dialogue to dialogue is the right solution. I do however stand by the opinion that combat is only one factor that make the game a whole.</p>
<p>I’m playing through <a href="http://www.gog.com/en/gamecard/the_witcher">The Witcher</a> right now (in anticipation of the <a href="http://www.gog.com/en/news/the_witcher_2_assassins_of_kings_enhanced_edition_announced">Enhanced Edition</a> of Witcher 2, which I haven’t played yet). And by “playing” I mean: I got a <a href="http://witchervault.ign.com/View.php?view=ToolsandUtilities.Detail&amp;id=3">Savegame Editor</a>, gave myself <a href="http://witcher.wikia.com/wiki/Aerondight">Aerondight</a>, <a href="http://witcher.wikia.com/wiki/Ard%27aenye">Ard'aenye</a> and a bunch of talent Points, set the difficulty to easy and started playing. So, how is playing with pretty much all challenges removed? It’s a blast for me! I can explore the World, I can talk to NPCs and fully immerse myself in the world. I did that with Fallout 3 and New Vegas again, same with Deus Ex: Human Revolution. I’m in love with the Gears of War Universe even though I think that Dom’s decision in Part 3 wasn’t given enough depth, it felt rushed. And let’s not get started about <a href="http://www.youtube.com/watch?v=1AUldDpXFNY">Anachronox</a>, possibly the greatest game that no one ever played.</p>
<p>The combat is a large part of this, but for me it’s a means to drive the story. I’m not someone who tries to memorize tactics and use Fire Based spells against Water opponents and I sure can’t tell you how many Zerglings I need against an army of Firebats. When I play an RPG I pretty much pick an Area Spell and just fry opponents – Force Lightning in any Star Wars game, Igni in The Witcher, Fireball and Inferno in Dragon Age.</p>
<p>Some people prefer to spend their time really mastering a game, knowing all the weaknesses and game mechanics and the right answer to any challenge. That is a valid way to play a game (after all, that’s what defines a game as a game). For me, the game is a way to enhance storytelling over what a book gives me. I can make my own choices, I can shape my character, and I can experiment with how it plays out over time. Do I save or kill that character? Do I side with this or that faction? Will I pursue a romance with her or him or neither? I don’t want to spend my time dying on the same enemy over and over again, I just want combat to be there as a way to see how powerful my character can be and to give me a sense of progression when I give my character new skills. It’s there to draw out the story long enough to allow my mind to daydream without being bored and to really see the threat the game universe is facing. But that’s all combat is to me.</p>
<p>I may not play games over the period of several years, so in terms of pure time investment I may get less out of a game than someone who leads the leaderboards on Forza 4 or any FPS (with the possible exception of World of Warcraft, a game whose single player component has some truly amazing stories in it, even though it has a fair amount of filler material and plot holes). But the 40 to 60 hours I do get out of most games I play are extremely gratifying and worth every dollar. They make me happy, they inspire me, they improve the quality of my life.</p>
<p>People like Jennifer Hepler and the many, many other writers in the video games industry are heroes because of the many memorable moments they have given thousands of gamers like me. It’s sad that <a href="http://penny-arcade.com/comic/2004/03/19">John Gabriel’s Greater Internet Fuckwad Theory</a> still applies and will likely never stop being true.</p>
<p>I can only hope that people like us who enjoy the story and love to discuss it in a civilized manner give the writers motivation to continue writing memorable stories, creating fantastic universes and reminding me why I love this industry, this genre, this medium so much.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/02/21/in-defense-of-story-driven-games/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Piracy is not a solution, but it&#8217;s easier than actual alternatives</title>
		<link>http://www.stum.de/2012/02/21/piracy-is-not-a-solution-but-its-easier-than-actual-alternatives/</link>
		<comments>http://www.stum.de/2012/02/21/piracy-is-not-a-solution-but-its-easier-than-actual-alternatives/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 04:08:29 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1097</guid>
		<description><![CDATA[Over the past 30 or more years, a war is raging. The war between pirates and copyright holders started with pirated software and certainly influenced our geek culture. When most people hear the Enlightenment: Druid II Theme, they don’t really think about the game but about the Fairlight Intro. (By the way, I think it’s [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past 30 or more years, a war is raging. The war between pirates and copyright holders started with pirated software and certainly influenced our geek culture. When most people hear the <a href="http://www.mobygames.com/game/enlightenment">Enlightenment: Druid II</a> Theme, they don’t really think about the game but about the <a href="http://www.youtube.com/watch?v=78D9MwLPidw">Fairlight Intro</a>. (By the way, I think it’s incredibly ironic that Tony Krvaric, alias Strider, one of the Fairlight Founders is the <a href="http://www.sandiegorepublicans.org/chairman/">Chairman of the Republic Party in San Diego</a>…)</p>
<p>In the past decade and a half, piracy expanded from software to music (thanks to MP3) and eventually movies and TV shows (Thanks to DivX). I’m not going to recite the entire history from Napster to the Pirate Bay here, I’m just going to express my stance on this. First off, I am negatively affected by some of the restrictions imposed by the industry. I moved from Europe to the United States and realized that I can’t play any of my DVDs because they are Region 2. Also, my Xbox Live count does not allow the change of my billing country, which meant that I had to create a new Gamertag, lose all my achievements, lose my Mass Effect 1 Savegame (which had a Level 60 character and all the right decisions) and lose access to the XBLA Games I bought unless I log in with that Gamertag. On the other hand, my Steam account worked without a hitch because Steam gets their business right while Microsoft doesn’t care about their customers and is too weak to negotiate world wide deals.</p>
<p>Here in the USA, TV is ridiculously expensive. I come from Germany where we think that the government-imposed mandatory Pay-TV (GEZ) is expensive (and kills any PayTV competition), but compared to TV over here it’s dirt cheap. On the other hand, we do have Netflix and Hulu Plus here, and a few Music streaming services which gives me access to a whole range of content, legally. I can not get everything though. Certain shows are only available on TV (pretty much anything HBO), I’m cut off many sports events like the German Soccer Bundesliga (some TV Channels offer select games and repeats, but a live Conference doesn’t seem to be available). I can not buy certain music Albums because the bands are only popular in their home country and haven’t set up international distribution.</p>
<p>In short: Between my wallet and something I’d like to pay for, there are sometimes certain walls. <a href="http://theoatmeal.com/comics/game_of_thrones">The Oatmeal</a> has made a great comic that illustrates these walls better than I ever could and it concludes in the same way the thought process concludes for many people, but it’s not a thought process I agree with. Basically it boils down to “If I can’t watch it legally, I’ll pirate it”.</p>
<p>I do not think that pirating is the right solution. First of all, <strong>you are not entitled to anything</strong>. Somewhere, there is the belief that there is a right to access to copyrighted material. There is not. There is a company who paid money and owns the right, and they are telling you to fuck off. They don’t want to take your money.</p>
<p>Second, <strong>the author made a conscious choice selling their rights</strong>. I often hear how bands whose CDs are shipped with playback protection and rootkits are really the victims, how the evil major music companies are not paying them much money and how they rely on the publicity made by live concerts and exposure, and how piracy really benefits them. I am not disagreeing that exposure helps bands because Merchandise and Concert Tickets are their primary source of income. However, they also made a choice. They went to a major label, gave them the rights to their songs so that GEMA and RIAA now own them. In exchange, they benefitted from the marketing and sales power of those labels. It’s a mutual relationship. It’s ridiculously hard for bands to gain exposure unless they are already successful (Radiohead and NIN successfully sell Albums directly now) or become viral on the internet (<a href="http://www.youtube.com/watch?v=dTAAsCNK7RA">OK GO’s treadmill video</a>).</p>
<p>In making this choice however, the creators of a work submitted themselves to the terms of condition of the label. Same for TV Shows. I really do not think that someone put a gun to George R. R. Martin’s head and forced him to sell his rights to HBO. I’m pretty sure he could have sold them to someone else, or have kept them. But he sold the rights to HBO, and if HBO makes the choice to exclude me as a customer, that’s in the end Mr. Martin’s decision.</p>
<p>Third, <strong>it hinders exposure</strong> for other shows and bands that are trying to be customer friendly. Every time you start a conversation about Game of Thrones in your workplace, HBO’s marketing wins. On the other hand, every other show loses. There is only so much time in the day and every moment exists only once. The time you spend watching and discussing Game of Thrones is a moment not spent helping <a href="http://www.thecrew.tv/">The Crew</a> getting more exposure. It’s extremely hard to create a TV show or Movie. Over the past few years, we have seen tremendous progress in alternative/indie development thanks to video streaming, MySpace, Steam and other distribution channels. But the thing that really matters is exposure.</p>
<p>Fourth, <strong>it helps fueling things like SOPA</strong>. Child Porn, Terrorism, Nazi Propaganda and Piracy are the cornerstones of every election. The internet is evil, it needs to be controlled and censored. How dare you to protest against SOPA, you child molesting Nazi Terrorist? This isn’t limited to one country, in Germany it’s people like Ursula von der Leyen and Karl-Theodor zu Guttenberg who brand people fighting for their rights as child molesters. It’s good to see that the SOPA protests worked for now, but don’t believe that that’s the last we’ve heard of it (ACTA goes into that same area). You have to take away their arguments. If the companies are losing money because they fail to sell to the market, it’s their fault. If they can blame pirates, it’s our loss.</p>
<p><strong>Boycott is the only proper way, but it’s hard</strong>. Many kids start smoking in school because they want to belong to a group. They wear certain clothes because they want to belong to a group. The desire to belong never really goes away. If everyone in the office talks about a show, we don’t want to be excluded. And let’s face it, some shows and movies are genuinely fantastic.</p>
<p><strong>Sometimes, getting in touch with a company helps</strong>. I’m a fan of <a href="http://www.jbo.de/">JBO</a>, a band that’s really only somewhat popular in Germany. When they released their 2009 album <a href="http://www.jbo.de/werke/i-dont-like-metal-i-love-it/">I don’t like Metal – I love it</a>, it was not on either iTunes or Amazon MP3. I asked their record company – Megapress – and initially they could only offer to send me a CD from Germany. However, in the meantime they worked on it and now pretty much all of their Albums are on both iTunes and Amazon MP3. A small victory.</p>
<p>At the end of the day, I don’t care what you do as long as you <strong>stop being hypocrites about it</strong>. Piracy is not a fight for freedom, it’s a way to acquire something we want that the company doesn’t want to sell to you. If we were concerned about freedom, we would ignore the product and support products that treat us as customers, not just as cash sources. You buy the BluRay, you accept sitting through 30 minutes of mandatory trailers before the menus and not being able to watch the movie if you move to another continent. If you don’t agree, then don’t buy the product.</p>
<p>But we then also realize that those products often aren’t as good. AAA games, prime time TV shows, blockbuster movies cost money. A ton of it. Crowdsourcing like Kickstarter helps for smaller/indie games, but I doubt you could fund a triple-A MMORPG with it. Someone has to go in and gamble a million or two on it, with a very real risk of losing it because people rather spend their time with pirated products. We look at successes by <a href="http://www.kickstarter.com/projects/66710809/double-fine-adventure">Double Fine’s Adventure</a>, <a href="http://drhorrible.com/">Dr. Horrible’s Sing Along Blog</a> or <a href="http://en.wikipedia.org/wiki/In_Rainbows">Radiohead’s In Rainbows</a> and forget that these are anomalies. Those products are successful because they already feed of an existing fan base. The reality is that <a href="http://www.kickstarter.com/projects/738731369/sprocket-junkie">most</a> <a href="http://www.kickstarter.com/projects/brewengine/roaring-skies-a-hardcore-indie-game">indie</a> <a href="http://www.kickstarter.com/projects/1128334546/suicide-friends-an-animation-about-a-schizophrinic?ref=users">productions</a> <a href="http://www.kickstarter.com/projects/285377233/first-book-printing-and-distribution?ref=users">are</a> <a href="http://www.kickstarter.com/projects/1008759463/peril-the-feature-film?ref=users">having</a> <a href="http://www.kickstarter.com/projects/giantgoblingames/storm-the-castle-cooperative-boardgame?ref=users">trouble</a> <a href="http://www.kickstarter.com/projects/thecarriers/the-carriers-graphic-novel?ref=users">securing</a> <a href="http://www.kickstarter.com/projects/970453681/print-3000-copies-of-nikolas-and-company-creature?ref=users">even</a> <a href="http://www.kickstarter.com/projects/502760470/conquest-of-the-universe-rpg?ref=users">relatively</a> <a href="http://www.kickstarter.com/projects/russellgmoore/russell-g-moore-records-his-first-professional-alb?ref=ending_soon">modest</a> amounts of money and even if they manage to make something, <a href="http://www.edge-online.com/features/xbox-live-indie-games-dashed-hopes">they may not get too many customers</a>.</p>
<p><strong>Movement is happing</strong> however. We are seeing tremendous changes already, and now that Netflix and <a href="http://studios.amazon.com/">Amazon</a> decided to <a href="http://latimesblogs.latimes.com/entertainmentnewsbuzz/2011/11/netflix-to-bring-back-arrested-development.html">take up content production</a> we might finally see some money behind things we consider ideals. Following Tim Schafers footsteps, Obsidian <a href="http://www.gamespot.com/news/obsidian-eyeing-crowd-funding-via-kickstarter-6350258">is considering</a> a similar move, and <a href="http://www.rockpapershotgun.com/2012/02/16/brian-fargo-turning-to-kickstarter-for-wasteland-2/">Wasteland 2</a> was mentioned as well. <a href="http://machinaesupremacy.com/">Machinae Supremacy</a> is successful with a hybrid internet/record label approach, and I already mentioned OK GO. I believe that at least for PC Video Games, we’re really in the middle of a revolution where us Gamers become the shareholders. We want another graphic adventure that combines everything we loved about Lucas Arts adventures? We want a good FPS game (after all, the last really FPSes were <a href="http://www.gog.com/en/gamecard/painkiller">Painkiller</a>, <a href="http://store.steampowered.com/app/13210/">Unreal Tournament 3</a> and the <a href="http://xboxoz360.files.wordpress.com/2011/11/serious-sam-3-bfe-strategy-guide-oxcgn.jpg">Serious Sam</a> series)? How about a shooter that combines everything we love about CAVE’s bullet hell games with some amazing scenario (like <a href="http://store.steampowered.com/app/94200/">Jamestown</a>)?</p>
<p>Piracy hinders that movement because it gives too much exposure and benefit to the companies we oppose. Freedom and Piracy seem related, but are different concepts. Personally, I believe it’s extremely important to make conscious decisions. Read the Terms you accept, realize that companies don’t want to sell but rather rent a product, on their terms. Accept that you may not be able to get everything you want. <strong>Freedom is the ability to say no and walk away </strong>to one of the alternatives. Piracy is the inability to say no and unwillingness to change the status quo. Having said that, I also cannot deny that iTunes Music Store and other were founded on losses made through piracy. Who knows if record companies really would’ve agreed to this if it weren’t for Napster?</p>
<p>Don’t stop fighting. There are attempts to prevent completion from emerging and to weaken our customers rights. Cable Companies are actively fighting for their position, which is why it’s important <a href="http://blog.boxee.tv/2012/02/13/in-response-to-the-cable-companies-misleading-arguments-to-the-fcc/#.T0MORvVIsv4">for Boxee to fight against them.</a>&#160;<a href="http://donttreadonmike.com/2011/12/24/godaddy-not-only-helped-write-sopa-they-are-also-exempt-from-it-scumbags/">GoDaddy tried to use SOPA for competitive advantage</a> because they would’ve been exempt for it. RIAA/MPAA <a href="http://gizmodo.com/5517850/riaampaa-want-government+mandated-spyware-that-deletes-infringing-content-automatically">tried to get Spyware</a> onto every PC, and Sony BMG outright shipped a <a href="http://en.wikipedia.org/wiki/Sony_BMG_copy_protection_rootkit_scandal">Rootkit</a>.</p>
<p>At the end, it’s all about a) making sure we keep the freedom of choice and oppose any attempt to take that freedom away and b) using that freedom to supports the things we agree with and deny attention to the things we don’t agree with.</p>
<p>Or at the very least, stop whining when companies you support and empower in this way screw you over even more.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/02/21/piracy-is-not-a-solution-but-its-easier-than-actual-alternatives/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on .net in 2012</title>
		<link>http://www.stum.de/2012/01/05/thoughts-on-net-in-2012/</link>
		<comments>http://www.stum.de/2012/01/05/thoughts-on-net-in-2012/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 10:36:35 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.stum.de/?p=1086</guid>
		<description><![CDATA[One of the hot topics in 2011 was the rise of server-side JavaScript thanks to node.js, the future of Windows with WinRT, and a perceived exodus of high profile .net developers to Ruby on Rails or node.js, proclaiming that it's so much easier to get stuff up and running once you leave .net. Also, in [...]]]></description>
			<content:encoded><![CDATA[<p>One of the hot topics in 2011 was the rise of server-side JavaScript thanks to <a href="http://nodejs.org/">node.js</a>, the future of Windows with <a href="http://en.wikipedia.org/wiki/Windows_Runtime">WinRT</a>, and a perceived exodus of high profile .net developers to <a href="http://rubyonrails.org/">Ruby on Rails</a> or node.js, proclaiming that it's so much easier to get stuff up and running once you leave .net. Also, in the wake of BUILD conference, .net was already declared dead, which turned out to be a false alarm, it's only Silverlight that's dead (unless you are building a video player, because HTML5 Audio/Video <a href="https://p.twimg.com/AiWTysKCAAE0SzG.png:large">sucks and will continue to suck</a>).</p>
<p>Personally, I'm 100% convinced that .net is doing fine and will do fine for years to come. We just have to realize though where .net (and Java, for that matter) are used: Inside Enterprises. There is not a single day where I don't see someone pulling off some amazing stuff on Twitter, usually built in JavaScript, CoffeeScript or Ruby. Looking at people pulling off amazing stuff in .net is always a big undertaking though, because there are pretty much no big non-Microsoft .net projects that are "hip". I think <a href="http://mvc.fubu-project.org/">FubuMVC</a>, <a href="http://caliburnmicro.codeplex.com/">Caliburn.Micro</a> and <a href="http://www.bouncycastle.org/csharp/">Bouncy Castle</a> are the only three that I could mention off-hand. But then again, I see amazing stuff done in .net almost every day, except that no one else outside of my work environment will ever see it. Talking to other .net developers in other companies usually yields similar experiences - people are pulling off some seriously fantastic stuff, but it will never ever leave the company it was created in. The open source environment in .net has improved since I <a href="http://www.stum.de/2007/11/21/open-source-and-net-not-really-an-ideal-partnership/">blogged about it 4 years ago</a>, but it is still only a fraction of what node.js or ruby has. Just look at the list of most watched C# projects on <a href="https://github.com/languages/C%23/most_watched">GitHub</a> or <a href="http://www.codeplex.com/site/search?query=&#038;sortBy=PageViews&#038;tagName=%2cC%23%2c&#038;licenses=|&#038;refinedSearch=true">CodePlex</a> and think how long ago some .net project really made headlines.</p>
<p>That doesn't mean it's a bad environment to work in, quite the opposite actually. If you look at popular libraries for node.js or ruby, you will often find that the BCL or Microsoft's .net Libraries already have something built-in, and it's usually rock solid and fast. You will find Microsoft supplying the big features that everyone uses or will use - LINQ, LINQ 2 Sql, Dynamics, TPL, Async/Await, ASP.net MVC are just a few I can think of. Combine the "No one ever got fired for choosing Microsoft" mentality in big enterprises with the fact that the vast majority of software development is done in enterprises, and you see why this attitude exists and why Microsoft has to deliver.</p>
<p>There is no denying that Microsoft had quite a few blunders, of course. WPF, EF and Workflow were downright garbage in .net 3.x, WCF is overly complex for simple scenarios and Velocity... let's just say that I've never heard anyone say anything good about it, and looking at it's API I doubt I'll have good things to say about it. Then, there are signs of the more than 10 year legacy that .net already has, together with the desire for backwards compatibility. System.Configuration is horrible because you cannot just create a Configuration object from a string or any other mechanism, that thing is hard wired to look at a file on your hard drive, which makes it really inflexible for modern, multi-tenant deployments. Have you tried parsing JSON in .net? How many different JSON Libraries/Deserializers do we have as part of the Framework? And how many did Silverlight add? And yet, people mostly prefer the <a href="http://james.newtonking.com/pages/json-net.aspx">Newtonsoft JSON.net</a>. Have you worked with the ASP.net Provider Model, specifically Membership Providers? Only a mother could love the API of that thing. And speaking of ASP.net, have you ever tried catching an "Attachment too large" error? The error that gets thrown twice, once in IIS before it reaches your app and then in ASP.net itself without a clear way to associate it with the request?</p>
<p>I could go on and on and on about things that are seriously broken in .net, and I haven't even started about testability yet (there is a very good reason for products like <a href="http://www.typemock.com/">TypeMock</a> to exist). It is still overall a great experience, but it is frustrating that we can't do much about the shortcomings of it. To work around the stupid file handling and Configuration madness in ASP.net, we would need a whole different web server since we can't just patch IIS or the ASP.net core components thanks to their closed source nature. Of course, running <a href="http://www.mono-project.com/Main_Page">Mono</a> on <a href="http://www.mono-project.com/FastCGI_Nginx">nginx</a> is a way to work around this, but enterprises won't approve of such a setup and if it breaks, your behind may be on the line.</p>
<p>I've often experimented with different setups, only to realize that I really like C#. I like its static nature which usually gives good, understandable compiler errors rather than cryptic runtime errors (face it, rails can be a pain to debug). I like that I can mix in dynamics for non-critical things like view models. I like that the Microsoft-provided libraries are mostly good. I like that we can buy support and that there are tons of resources about most topics, since everyone uses pretty much the same stack. I like that they keep backwards compatibility so sacred, even if it means that there is a lot of obsolete stuff in the API (like System.Collections.ArrayList - there is no reason whatsoever to use it. If you need a container for multiple types, fall back to List&lt;object&gt;.</p>
<p>On the other hand, it can be a really frustrating experience when you run against a wall that you can't climb because of its closed source nature and Microsofts reluctance to fix things (Take WPF in .net 3.5 as an example: Things were reported but not fixed. Then 4.0 comes out with Visual Studio, they run into the same problem (e.g., the scrolling popup menus) and HotFix it. That was the moment I've given up on WPF forever) until a major release, if ever. Sometimes it is a really tough sell to use other non-microsoft components like <a href="http://www.rabbitmq.com/">RabbitMQ</a> instead of MSMQ (Search for MSMQ on MSDN and look on the big highlighted article - to me, that's proof that Microsoft doesn't care about their own message queue anymore), or <a href="http://www.nservicebus.com/">NServiceBus</a>, or a sane ORM instead of Entity Framework.</p>
<p>Most applications start out as simple CRUD applications, and it is usually a lot quicker to start them in node or rails. However, simple CRUD applications usually evolve into more sophisticated pieces, requiring more business logic and safeguards in different places, and here I must say that .net shines - in the long run, its strengths play out well.</p>
<p>However, I really think that we can do better in the web world, much better. Chad Myers <a href="http://lostechies.com/chadmyers/2011/12/30/sweet-sweet-vindication/">had an interesting posting</a>, and even though it was <a href="http://wekeroad.com/2012/01/03/rails-has-turned-me-into-a-cannibalizing-idiot/">ripped to pieces by Rob Connery</a>, it still holds a lot of truth. Web Applications are unnecessarily complex. I will write a follow up posting with some thoughts about this.</p>
<p>My conclusion would be that .net is overall doing perfectly well. It is used by tons of companies for very important apps, but it was never aimed to be a "hip" language. Microsoft is deeply rooted in the Enterprise, they are pretty much the exact opposite of Apple. That doesn't mean that they do a worse job at it, it just means you won't see as much about it since enterprises like to keep their "secrets" internal and err on the side of safety/secrecy. I have no doubt that there will be .net jobs for the next decade and beyond, while some other language will come and go.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2012/01/05/thoughts-on-net-in-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CircularBuffer added to my .net Utils Library</title>
		<link>http://www.stum.de/2011/11/26/circularbuffer-added-to-my-net-utils-library/</link>
		<comments>http://www.stum.de/2011/11/26/circularbuffer-added-to-my-net-utils-library/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 09:07:53 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/11/26/circularbuffer-added-to-my-net-utils-library/</guid>
		<description><![CDATA[I've just updated my .net Utilities Library with a Circular Buffer. Such a buffer (also called Ring buffer) has a given capacity, and when this capacity is reached new entries overwrite old ones. In other words, it is a buffer that holds the last {capacity} items. The implementation is currently not optimized for speed, this [...]]]></description>
			<content:encoded><![CDATA[<p>I've just updated my <a href="https://github.com/mstum/mstum.utils">.net Utilities Library</a> with a <a href="http://en.wikipedia.org/wiki/Circular_buffer">Circular Buffer</a>. Such a buffer (also called Ring buffer) has a given capacity, and when this capacity is reached new entries overwrite old ones. In other words, it is a buffer that holds the last {capacity} items.</p>
<p>The implementation is currently not optimized for speed, this is something I'll tackle soon. (<strong>Update:</strong> Done, CopyTo and Contains should be much faster) Implementing a circular buffer is relatively simple, but it makes my head spin with off-by-one errors that you encounter when you have to deal with an array that's split at an arbitrary point. It is definitely a nice exercise for a Code Kata though and may teach you a thing or two about Enumerators.</p>
<p>It is not possible to remove items (I don't need that functionality yet for my purposes), I might look into it in the future. The Enumerator works as expected, it starts with the oldest element and returns all elements until the most recently inserted one. Modifying the collection while enumerating throws an Exception, and thread safety is the same as with a List&lt;T&gt;, which means &quot;none at all&quot;.</p>
<p>Example usage:</p>
<pre class="prettyprint lang-cs">
var buffer = new CircularBuffer&lt;int&gt;(3);
buffer.Add(1);
buffer.Add(2);
buffer.Add(3);
buffer.Add(4);
// buffer now holds [2,3,4]
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/11/26/circularbuffer-added-to-my-net-utils-library/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Kindle Fire Impressions</title>
		<link>http://www.stum.de/2011/11/18/kindle-fire-impressions/</link>
		<comments>http://www.stum.de/2011/11/18/kindle-fire-impressions/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 06:43:07 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/11/18/kindle-fire-impressions/</guid>
		<description><![CDATA[I received my Kindle Fire two days ago and played around a bit with it. Let me make a few general comments about reviews first: A lot of people are making a big deal out of the price and saying that a $200 device naturally needs to cut some corners. That is fully true, but [...]]]></description>
			<content:encoded><![CDATA[<p>I received my <a href="http://www.amazon.com/Kindle-Fire-Amazon-Tablet/dp/B0051VVOB2/ref=amb_link_358864162_4?pf_rd_m=ATVPDKIKX0DER&#038;pf_rd_s=center-1&#038;pf_rd_r=1XR7T32HB7MPREN696JY&#038;pf_rd_t=101&#038;pf_rd_p=1331677182&#038;pf_rd_i=507846">Kindle Fire</a> two days ago and played around a bit with it. Let me make a few general comments about reviews first: A lot of people are making a big deal out of the price and saying that a $200 device naturally needs to cut some corners. That is fully true, but looks at it from the wrong angle. We shouldn't look at what the device doesn't do. Instead, we need to look at what it does, and decide if it's worth $200, because garbage is garbage regardless of the price.</p>
<p>The question is, what is the Fire? The general consensus is that it's an Android Tablet and thus in competition with the iPad. Well, if you are in the market for a tablet and you actually have the money to spend, then get the iPad as it easily beats the Kindle Fire as a tablet in every possible comparison. I also have an iPad 1 and thought that speed would be comparable since the iPad 1 has a 1x1 GHz CPU compared to the 2x1 GHz CPU in the Fire, but even with that the iPad runs circles around it.</p>
<p>So it's certainly not a Tablet. What is it? A Kindle? A big iPod Touch device? Something completely different? Let's ignore any comparison at the moment and instead just look at what features it offers and most importantly, how well are these features implemented.</p>
<p><strong>Browsing stuff</strong></p>
<p>The Fire has a carousel as it's home screen, with favorite apps underneath it if held in portrait mode. If I had one word to describe it: train wreck. Okay, that's two. Anyway, the carousel displays recently used content - apps, videos, books - in a cover flow-type view that allows you to flip through it. How often have you used Cover Flow on an iOS or Mac OS X? Exactly, me neither. Carousels look nice on still images for the press, but in real world use they are about as useful as tag clouds - not at all. Are you someone who flips through all your stuff just to find something random to do? I do that for music, but I wouldn't shuffle between my music, video, books and games and then decide if I'd rather read a book or watch a movie. Especially since it doesn't shuffle through your entire collection but only recent stuff. It's not very useful as a list of favorite stuff because things change positions and the latest app is always in front even if you never use it again. Also, the carousel is extremely sensitive. Touch something, move your finger only slightly and the carousel will scroll in that direction. Opening stuff through it is a game of luck and patience if you just want to casually flip through stuff.</p>
<p>The Carousel is broken and I do not see any way to fix it. The usual grid view of applications is infinitely better and I can only hope for Amazon to kill the Carousel and replace it with a normal bookshelf of manually placed items. This also solves the problems of many applications not playing well with it (e.g., when viewing videos through the Gallery app, the Carousel does not list the video but the Gallery app. Videos watched through Amazon's streaming services do show up perfectly fine though).</p>
<p>Speaking of a bookshelf: This is the view used when you tab the &quot;Books&quot; or &quot;Apps&quot; or one of the other tabs, and it's much better. Problem: The search bar is not displayed on these tabs,</p>
<p><strong>Books</strong></p>
<p>Since this is a Kindle, books are the natural fit for it. They appear in a Bookshelf (like iBooks on iOS) and 12 are displayed on the screen at once as a grid. Alternatively, there is a list view which shows 9 at a time. They can be sorted by Author, Title and Recent usage. They can not be categorized, which I find braindead. The eInk Kindles support putting books into categories, and I admit it doesn't work too well (The eInk Kindles are not responsive enough to make management of more than 2 pages of books really good). But a device like the Fire would have fantastic opportunities to categorize books into collections, sync those categorizations into the cloud and back to the eInk Kindles. A lost opportunity right there.</p>
<p>When reading, you can select the font size, margins, color (Black-on-White, White-on-Black (I like that one) and Sepia (which is a gimmick, just like on iBooks)) and font. As a book reader, the Fire is really nice. The display is not eInk though, so there is considerably more eye strain and because the device is heavier than a normal Kindle it isn't as convenient to hold for hours.</p>
<p>Still, as a book reader it is a competent device, but Amazon missed opportunities here to make it an epic experience. I have a Kindle 4 as well, and that one will stay my primary eReader.</p>
<p><strong>Music</strong></p>
<p>The Fire plays Music locally or from your Cloud Drive. Let me briefly talk about the latter: Amazon's MP3 Uploader either never received a UX pass or Amazon's UX people are idiots. Also, there is a limit of 100 MB for tracks, which means that some of my live songs cannot be uploaded (Sorry, but Transatlantic's The Whirlwind is a single 79 minute track on both Live Albums). Once music is in the cloud however, it plays well.</p>
<p>When browsing all Songs, you get a long list. if the list is really long, then a slider appears that can be dragged. This is common in the UI and works very well. There is no bookmark for individual letters though like the iPod has, however starting letters are displayed when using the slider. There is no search though (apart from the global search).</p>
<p>One thing that Amazon does right and Apple does wrong since forever: Songs a sorted properly. The song &quot;A View from the End of the World&quot; is listed near the top, because it starts with an A. &quot;The Whirlwind&quot; is sorted between S and U because it starts with a T. Apple for some braindead reason sorts these two songs under &quot;V&quot; and &quot;W&quot; respectively, because apparently articles aren't part of the song name. I'll sort &quot;Apple&quot; under P from now on for the same reason.</p>
<p>Another thing the iPod supports that I would have loved to see on the Fire: Chapter support. I have several AAC Audio files that have chapters, for example live concerts, DJ mixes and Audio Books. No chapter support on the Fire, it's one 80 Minute song while the iPod also treats it like an 80 Minute song, but tapping the Playlist view shows me individual chapters.</p>
<p><strong>Video</strong></p>
<p>Here's one of the two reasons to buy a device like the Fire over an eInk Reader. Video is available through Amazon's streaming library (which includes a lot of really good content, a lot of it free to stream if you are a prime customer) which has gems like Super Troopers or Star Trek DS9. The screen is fantastic, and the overall picture quality of the things I watched was great, a lot better than the stuff on iTunes.</p>
<p>There are no subtitles though, a feature I only saw on Netflix on a PC yet though. Speaking of Netflix: There is an official, free Netflix app in the Marketplace and it works well. It is not Kindle Fire optimized though, which means that watched movies do not show on the Carousel. Also, the status bar is always visible, something I talk about in the &quot;Apps&quot; section below. I hope they come up with an optimized app.</p>
<p>So streaming is awesome, how about on-device playback? Well... Not so awesome. I copied some video to the device and first looked around where to play them. Naturally I checked the &quot;Videos&quot; tab, but this is solely dedicated to Amazon-bought/streamed videos. There is an App on the device called &quot;Gallery&quot; that works as a photo and video player, and it sucks. It's clearly a third party app because it behaves nothing like the Books or Music part. It supports only non-HD MP4, at least none of my other videos played. Of course, videos don't show up in the Carousel either.</p>
<p><strong>Apps</strong></p>
<p>Okay, so this thing runs Android which means that a ton of apps are available, right? Well, yes and no. Yes, there are many apps but if you expect a consistent experience or good functionality you might be surprised.</p>
<p>I'm looking at my App Screen right now and I see 5 different icon styles. Some icons are smaller than the rest. Some have round edges, others are square. Some have a border as part of the image, some have gloss, some are neither. Many struggle with one unique thing the Fire does: There is ALWAYS a status bar (because there is no physical home button) which is either 40 pixels high when expanded or 20 when collapsed. The 20 pixels are always there and can obstruct the view. For example, imagine watching a movie on Netflix and the bar is always there, which sucks when watching dark movies. Some games have the UI partially hidden. Sure, it's only 20px but it's not a great experience.</p>
<p>One thing that really surprised my is the absence of an official Twitter client. There is one for the Android, but it's not compatible with the Fire. There is an icon &quot;Facebook&quot; in the Apps section which is a glorious, fantastic... browser bookmark. Yes, you read that right, it's a friggin bookmark that launches the browser on the mobile Facebook site. Okay, fair enough, let's just delete it... Oh, you can't.</p>
<p>Crapware is something every Smart Phone owner knows. Apps installed by the device manufacturer or carrier that cannot be deleted and are generally useless. The iPhone has them, Android phones have them, and the Kindle Fire has them as well. An undeletable Facebook bookmark and an Office App that has WAY too many permissions on the system, and possibly some others. This sucks.</p>
<p>Amazon doesn't use the Google AppStore since they have their own. This is nice, but it means you miss out on some Apps like Firefox Mobile, They do a reasonably good job to filter out Apps that don't work on the device, so every App you buy or download at least starts. However, not all are really great yet.</p>
<p>The Fire comes with a <a href="http://www.comixology.com/">Comixology</a> app which is clearly rushed but overall works really well. The guided read feature works perfectly and I'm really happy with it. The reason I say it is clearly rushed is because a) it has a few crash bugs. Using the slider when scrolling a large list always crashes it. The other reason is b) Navigation is buggy I select Category &gt; Fantasy and a Comic, then hit back. I would expect to get back to the Fantasy Category, ideally at the same scrolling level I was. Nope, I'm brought back to wherever I was before. I'm pretty sure they'll update the App though, it seems they had to hit the date and got all the core functionality working.</p>
<p>Also, usability is inconsistent. The Fire Status bar offers a &quot;Back&quot; and a &quot;Menu&quot; buttons, and Apps haven't consistently found out what to use them for yet. Some apps have their own menu as part of the app, other use the status bar.</p>
<p>Nice however is that the Amazon AppStore offers a free app each day. Yesterday it was Bejeweled 2, before it was a nice 16-bit RPG. Today it's a crap email app. I also give Amazon a lot of credit for clearly showing what permissions an App wants, so if you see a seemingly harmless app requiring access to contacts and messages you know it's a scam and can avoid it. It's a bit sad that this is needed (never had fear for downloading iOS apps), but that's the downside of a mostly open AppStore. And of course just like on Apples AppStore, there are thousands of garbage and scam apps out there (e.g. Apps that are named very similar to popular games but that are just hints and tips for $1, and of course the amount of stupid apps we used to have on J2ME mobile phones like an X-Ray scanner.)</p>
<p><strong>Browsing the Web</strong></p>
<p>One of the big features if the Fire is Silk, their cloud based web browser that sends all pages through Amazon's servers where they reprocess it to make the tablet experience snappier. Essentially Opera Mini. I see this being awesome on 3G connections, but I don't see the point in using it over WiFi.</p>
<p>Well, turns out that browsing WITH Silk is actually slower than without it, so I've disabled it. It is a full browser, and pages display properly. Scrolling is slow though, there is a noticable lag between swiping your finger and the page moving. The browser supports Flash and it works just as well as on every single other mobile device in existence, or in other words: It's sluggish and drains your battery extremely fast. Luckily, Plugins can be disabled in the browser.</p>
<p>You can browse the web, but I find that even my old iPod Touch 2G had a better experience because it was snappier.</p>
<p><strong>Responsiveness, Polish and Stability</strong></p>
<p>I only briefly mentioned performance and stability before. Stability issues is something that affects all devices (I have stopped counting the times my iPod touch crashed or behaved strangely when it's off, you double tap the home button and press &quot;Next Track&quot; on the iPod controls or unlocked it quickly.) and so far the only app that crashed on my was the Comixology app.</p>
<p>However, performance is a big, big issue. The UI is very sluggish, everything takes a moment to react. Not long, but long enough to notice it. Sometimes it's downright unresponsive though and I have to hit a button or swipe my finger multiple times before it reacts. This thing has better hardware than my iPad 1 (twice the RAM, a second CPU core and a much better graphics chip) and doesn't even come close to it.</p>
<p>There is a lot of polish missing as well. For example, you open the Amazon Store app and get a login screen that looks extremely ugly. It's not centered, it's a dark screen with an input box and submit button in the top left corner. Also, there is a Notification that says that &quot;One Click Purchase for Mobile has been activated&quot;. Apart from the fact that it is there since 2 days and doesn't go away, I don't actually have 1 click purchasing enabled.</p>
<p><strong>Conclusion</strong></p>
<p>Hard to make one. If this were a $500 tablet then it would already be on it's way back. It doesn't stand a chance against the iPad and I think it even loses to my old iPod Touch 2G. But it's not a $500 tablet, it is a $200 Kindle. It has really decent hardware and a gorgeous display. As outlined above, the hardware is much better than what the iPad 1 had. So with a few updates, the Kindle has potential to be great.</p>
<p>But that's the problem: Potential isn't enough. WebOS had potential. The Motorola Xoom had potential. The Nokia N9 had potential. None of them made anything with that potential. I absolutely HATE reviewers that give good grades for something that &quot;could be cool in the future&quot; because people have to pay their cash NOW. If I could get a device and only pay for it once it unleashes its full potential I would be a happy customer.</p>
<p>Let's talk about what it does right now:</p>
<ul>
<li>It is a good book and PDF reader, although the normal Kindles are still lightyears ahead thanks to eInk and less weight</li>
<li>It is a good video player for Amazon's Streaming Library with a gorgeous display</li>
<li>It is an average but usable video player for Netflix if you don't mind the status bar</li>
<li>It is a below-average video player for your own videos on the device</li>
<li>It is a good music player for local and cloud drive content, if you manage to get your music onto the cloud drive</li>
<li>It is usable as an all-around device for scribbles, note taking, and games. However, most applications feel strange and foreign on the device, so the experience with Apps is rarely ever fantastic</li>
<li>It is lighter than the iPad 2, but feels heavier (possibly because it is smaller).</li>
<li>It runs many but not all third party Android Apps if you get the APK and the App is compatible</li>
</ul>
<p>I'm certainly keeping mine because I am happy enough with the stuff that it does do, and because I can develop my own apps for it in Java, vs. Objective-C. I'm a .net developer and since Java is just a crappier version of C# it's a lot easier to learn than Objective-C with the weird Interface Builder, 1970's header files and manual synthesizing of properties.</p>
<p>However, I would NOT recommend it to non-technical people. It's just not polished enough, not friendly enough for people that just want to get up and running quick. And I would NOT recommend it to ANYONE looking for a full blown tablet. Hate Apple all you want, but the iPad is still the only tablet on the entire market that actually works and thus the only tablet I can recomment, but it is also a lot more expensive than the Fire.</p>
<p><strong>Potential and Outlook</strong></p>
<p>Okay, that was my conclusion about the device as it is right now. Let's speak about potential. As I said above, the hardware is pretty decent, better than the iPad 1. So if stuff is slow and sluggish, it means that the software sucks, and software can be updated and fixed. I do not want to speculate if Amazon rushed the Fire for the holiday season, because I think it would have been a problem even with 6 months more development time.</p>
<p>One thing Amazon could not avoid is the horrible Android App situation. Thanks to the fracturing of the platform across a million different devices and the lack of a central authority, Apps are not consistent at all. They could have gone with their own OS, but that would mean no apps and a long battle to get developers. Using Android was the right choice.</p>
<p>I think they need to get away from the Android branding though and away from Android apps. They need Developers develop Kindle Fire Apps. Yeah, sure, under the covers it's all Android, but I don't want generic apps that suck on every device (Steve Jobs described a similar situation fittingly with &quot;Hence developers only have access to the lowest common denominator set of features.&quot;). Instead, I want Apps that are fully optimized for the Kindle Fire. I don't care if they run on other devices. Amazon made great efforts to hide the Android core and they customized it heavily. It shouldn't matter that it's &quot;only&quot; Android 2.3.3, because it shouldn't matter that it's Android. Amazon should try to clearly separate themselves and get Developers behind their platform while leveraging the other Android apps.</p>
<p>Jeff Bezos has proven that he is in for the long run in projects, and that they are good about iterating. The Kindle 1 to Kindle 2 upgrade was massive and made a good product into the best one on the market. The Fire is an average product, but it is one that could be equally great. There is no competition in sight, since all other Android devices have the same problem and no one behind them with the patience and money to make things better. In theory, Windows 8 could become interesting if Microsoft resists the temptation to offer Desktop apps on it (&quot;But the people want MS Office on their tablets!&quot; - &quot;No, they don't. They say they want it, but then never use it because desktop apps aren't usable on a tablet.&quot;).</p>
<p>Still, as an early adopter I think that owners of a first generation Fire will get a product that is at best remembered like the Kindle 1: A market opener, but a slightly crappy device in hindsight.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/11/18/kindle-fire-impressions/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using Scrivener and GitHub</title>
		<link>http://www.stum.de/2011/11/08/using-scrivener-and-github/</link>
		<comments>http://www.stum.de/2011/11/08/using-scrivener-and-github/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 03:48:20 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/11/08/using-scrivener-and-github/</guid>
		<description><![CDATA[I'm participating in this years NaNoWriMo, something I missed last year. For those unfamiliar, the idea is to write a 50,000 word novel during November. With stuff like that, backup and syncing between computers becomes an issue. Now, I made a smart choice: Instead of using Microsoft Word or other, similar inadequate applications to write [...]]]></description>
			<content:encoded><![CDATA[<p>I'm participating in this years <a href="http://www.nanowrimo.org/">NaNoWriMo,</a> something I missed last year. For those unfamiliar, the idea is to write a 50,000 word novel during November. With stuff like that, backup and syncing between computers becomes an issue.</p>
<p>Now, I made a smart choice: Instead of using Microsoft Word or other, similar inadequate applications to write the manuscript, I use <a href="http://www.literatureandlatte.com/scrivener.php">Scrivener</a>. It saves its data in what seems like a static file at first glance:</p>
<p><img height="180" style="margin: 5px" width="414" alt="" src="http://www.stum.de/wp-content/uploads/2011/11/Screen-Shot-2011-11-07-at-7.51.17-PM.png" /></p>
<p>However, upon closer inspection it's really a folder with a lot of TXT, RTF and XML files, which is perfect:</p>
<p><img height="426" style="margin: 5px" width="289" alt="" src="http://www.stum.de/wp-content/uploads/2011/11/Screen-Shot-2011-11-07-at-7.53.01-PM.png" /></p>
<p>Why is it perfect? Because it plays well with git, that's why. I have a nice little private repository on <a href="https://github.com/">GitHub</a>, and because I'm essentially tracking individual textual files I get nice diffs:</p>
<p><img height="157" style="margin: 5px" width="338" alt="" src="http://www.stum.de/wp-content/uploads/2011/11/Screen-Shot-2011-11-07-at-7.55.49-PM.png" /></p>
<p>Sure, RTF can get a little problematic to read in a diff, but it's better than the binary formats. And yes, Word's file format maybe zipped XML, but you can't just version individual XML files within the docx archive.</p>
<p>With GitHub, my novel is backed up and accessible from almost any computer I want, and if I don't have a computer with Scrivener nearby I can just log in to GitHub and read/copy parts of the Novel. I haven't tried Inline Editing and I don't think it's gonna work since Scrivener stores a checksum of each file, but there is definitely some idea for growth.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/11/08/using-scrivener-and-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Amazon, fix your search already!</title>
		<link>http://www.stum.de/2011/10/23/amazon-fix-your-search-already/</link>
		<comments>http://www.stum.de/2011/10/23/amazon-fix-your-search-already/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 20:25:56 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/10/23/amazon-fix-your-search-already/</guid>
		<description><![CDATA[The earbuds of my iPod start to disintegrate. I still use the standard Apple ones, the ones with all the rubber that starts to break after 6 months or so. I'm actually waiting for a pair of hopefully really decent ones, but those won't come until some weeks, possibly months. So in the meantime, let's [...]]]></description>
			<content:encoded><![CDATA[<p>The earbuds of my iPod start to disintegrate. I still use the standard Apple ones, the ones with all the rubber that starts to break after 6 months or so. I'm actually waiting for <a href="http://www.kickstarter.com/projects/legendary/earbuds-time-to-change-the-status-quo">a pair of hopefully really decent ones</a>, but those won't come until some weeks, possibly months. So in the meantime, let's get some cheap ones from Amazon, after all that Amazon Prime membership needs to work out!</p>
<p>Let's start with a simple filter: I want Prime Eligible, sold by Amazon.com, $15 or less, 4+* rated earphones:</p>
<p><img height="43" style="margin: 5px" width="600" alt="" src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-23-at-1.28.26-PM.png" /></p>
<p>Easy, is it? Well, not for Amazon:</p>
<p><img height="274" style="margin: 5px" width="466" alt="" src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-23-at-1.29.25-PM.png" /></p>
<p>Look, I know the economy is bad and the US Dollar sucks, but if we just look at the numbers, then 22.50 is bigger than 15, is it?</p>
<p>Oh, wait, actually it is listed as less than $15 because one of your third party sellers of Amazon's Marketplace has it:</p>
<p><img height="230" style="margin: 5px" width="400" alt="" src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-23-at-1.30.44-PM.png" /></p>
<p>Amazon, why do you have a filter for &quot;Seller: Amazon.com&quot; only to ignore it then? But let's look at the $13.69 offer:</p>
<p><img height="130" style="margin: 5px" width="585" alt="" src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-23-at-1.32.47-PM.png" /></p>
<p>Wow, so you got some shitty seller with 50% positive ratings that charges $15 for shipping a product that weighs a mere ounces from Texas to California and you think that this offer is so good it should be in my search results for &quot;Prime Eligible&quot; (=NO shipping Costs) and &quot;Seller: Amazon.com&quot; (=NO third party vendors)?</p>
<p>Inflating shipping costs to undercut the competition on the product price while still making a decent profit is the oldest trick in the book, even eBay reacted to it and is now sorting their auctions by &quot;Price + Shipping Cost&quot;, and yet your crappy search isn't smart enough to do that?</p>
<p>If you need an Engineer to fix your shitty search in his spare time, drop me an email and I'm sure we can arrange a little side-contract for less than a $100k. And don't tell me that's not worth it, after all you're the company that came up with the &quot;<a href="http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html">Milliseconds equals money</a>&quot; equation - and if each millisecond is costing you a truckload of money, how much money is your shitty broken search costing you?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/10/23/amazon-fix-your-search-already/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I don&#8217;t like Single-Player DLC</title>
		<link>http://www.stum.de/2011/10/22/i-dont-like-single-player-dlc/</link>
		<comments>http://www.stum.de/2011/10/22/i-dont-like-single-player-dlc/#comments</comments>
		<pubDate>Sat, 22 Oct 2011 02:12:12 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/10/22/i-dont-like-single-player-dlc/</guid>
		<description><![CDATA[DLC is all the hype nowadays, with every game getting a few pieces for money after release. Fallout 3 and New Vegas had DLC, Deus Ex Human Revolution had its first DLC released, Assassins Creed 2 had DLC and so did Mass Effect and Dragon Age. I don't think I played any Single-Player DLC, possibly [...]]]></description>
			<content:encoded><![CDATA[<p>DLC is all the hype nowadays, with every game getting a few pieces for money after release. Fallout 3 and New Vegas had DLC, Deus Ex Human Revolution had its first DLC released, Assassins Creed 2 had DLC and so did Mass Effect and Dragon Age.</p>
<p>I don't think I played any Single-Player DLC, possibly with the exception of Gears of War 2: Road to Ruin and the Dragon Age DLC when I bought the Platinum Edition.</p>
<p>The reason is quite simple: DLC is too small. When I play a game, I want to really dive in and be immersed, live through the story, see my characters succeed and fail. After I'm done with the campaign, I'll detach myself from the game again and move on. Picking up the game later means I have to get my mind back into it, remember all the events, characters and little nuances that immersed me the first time around.</p>
<p>Most DLC is over before I'm really back in the mood. A lot of DLC is poorly integrated into the story line and feels tacked on.</p>
<p>Please, don't charge me $8 for an hour of game play.</p>
<p>I want $30 expansions that have a full, fleshed out story line, like Dragon Age: Awakening. Or a $50 sequel. But please, no more <em>Bring down the Sky</em> or <em>Operation: Anchorage</em>.</p>
<p>(Of course, this only applies to Single-Player/Story content. Feel free to sell as many mods, skins and weapon textures for $8 as you want, people buy them)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/10/22/i-dont-like-single-player-dlc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The price for the most braindead feature goes to: Mac OS X</title>
		<link>http://www.stum.de/2011/10/09/the-price-for-the-most-braindead-feature-goes-to-mac-os-x/</link>
		<comments>http://www.stum.de/2011/10/09/the-price-for-the-most-braindead-feature-goes-to-mac-os-x/#comments</comments>
		<pubDate>Sun, 09 Oct 2011 20:31:08 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Misc.]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/10/09/the-price-for-the-most-braindead-feature-goes-to-mac-os-x/</guid>
		<description><![CDATA[For all that's good about Mac OS X and Apples legendary usability, it has the single most dangerous, stupid and braindead function of all operating systems, ever: This happens when you drag a folder into another folder, which already contains a folder with that name. If you are a Windows user, you know what happens [...]]]></description>
			<content:encoded><![CDATA[<p>For all that's good about Mac OS X and Apples legendary usability, it has the single most dangerous, stupid and braindead function of all operating systems, ever:</p>
<p><img height="99" style="margin: 5px" width="396" alt="" src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-09-at-1.30.10-PM.png" /></p>
<p>This happens when you drag a folder into another folder, which already contains a folder with that name.</p>
<p>If you are a Windows user, you know what happens next: The folder contents will be merged, which is usually what you expect.</p>
<p>What happens when you click &quot;Replace&quot; here? Well, Apple is at least honest, because it will do exactly what it says: It Replaces the folder. Your old folder is gone.</p>
<p>The braindead thing? The old folder doesn't go into the Trash Can. If you delete a file in either Windows or Mac OS X, it goes into the trash can, so you can restore it. If you Replace a folder in Mac OS X Finder, the old folder is permanently gone.</p>
<p>With all due respect for the fine work the software engineers did in the past decade and a half: Whoever is responsible for thins function needs to be punched in the face, preferably once for every single folder that users - who are expecting a OS that values user friendliness to perform better - permanently lost.</p>
<p>What's even worse: There isn't even an option to merge. Really guys? &quot;The world's most advanced desktop operating system&quot; does not even have a function to merge two folders through its primary file management tool?</p>
<p><small>(PS: For a similarly dangerous function, try moving a folder over the network and briefly interrupt the connection. Chances are good that the folder gets deleted from the source since it was moved, but doesn't fully arrive at the destination because the connection got interrupted. Yes, the worlds most popular desktop UNIX fails miserably at basic network functionality.)</small></p>
<p><b>Update:</b> Turns out that OS X Lion finally learned to merge, but only when copying stuff. If you are moving folders within the same Volume, move is the default. Holding down the option key allows you to merge:</p>
<p><img src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-09-at-2.14.51-PM.png" alt="" title="Screen Shot 2011-10-09 at 2.14.51 PM" width="392" height="133" class="alignnone size-full wp-image-1061" /></p>
<p>This is arguably a lot better than any previous OS X Version. Still, it's way inferior to Windows 95 which happily merges on move (saves me the cleanup afterwards) and can also merge a subfolder with it's parent folder, something else OS X can't do:</p>
<p><img src="http://www.stum.de/wp-content/uploads/2011/10/Screen-Shot-2011-10-09-at-2.15.25-PM.png" alt="" title="Screen Shot 2011-10-09 at 2.15.25 PM" width="397" height="83" class="alignnone size-full wp-image-1062" /></p>
<p>This isn't needed that often, but useful when extracting a zip file yields a folder/folder/files structure.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/10/09/the-price-for-the-most-braindead-feature-goes-to-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on Growl 1.3 being a paid app now</title>
		<link>http://www.stum.de/2011/10/07/growl-1-3-is-a-paid-app-now/</link>
		<comments>http://www.stum.de/2011/10/07/growl-1-3-is-a-paid-app-now/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 17:46:53 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/10/07/growl-1-3-is-a-paid-app-now/</guid>
		<description><![CDATA[I just browsed the Mac AppStore and saw Growl on sale for $2. At first I wanted to give a 1-Star Review and call it a scam, selling free software for money. Then I went to the Growl Homepage and saw that this is true. Now, I don't have a problem with them charging now, [...]]]></description>
			<content:encoded><![CDATA[<p>I just browsed the Mac AppStore and saw Growl on sale for $2. At first I wanted to give a 1-Star Review and call it a scam, selling free software for money. Then I went to the Growl Homepage and saw that this is true.</p>
<p>Now, I don't have a problem with them charging now, it's their right. And $2 really isn't much, I bought it immediately since I use <a href="http://www.stum.de/2011/01/09/a-little-eggtimer-script-using-growl/">growlnotify</a> a lot.</p>
<p>What is prompting me to write this blog posting: I wonder what this means for third party app developers?</p>
<p>When Growl was free (1.2.2 still is), it was a no-brainer to implement it in your App. You could tell your user to download it, or you just snuck it in with your apps (much to the dismay of the developers, who had to put up a notice on their web site). Now, your users have to make an additional $2 purchase regardless if your app is free or paid. And due to the way the Mac AppStore works, you can't just decide to pay the $2 for your users and bundle Growl with your app - even if you include a $2 git certificate, your users now need an iTunes account.</p>
<p>Now, in an ideal world where every user has an iTunes/App Store account this isn't an issue, but I still wonder if this decision will lead to everyone reinventing the wheel and adding their own notification system again? (Or forking/distributing Growl 1.2.2 for all of eternity or until a Mac OS X version that doesn't support it comes up).</p>
<p>Again, I don't want to speak ill of developers who created an amazing piece of software and now charge a minimal amount for it. I just wonder if this may cause issues for us Third Party app developers?</p>
<p>In an ideal world, Tim Cook will announce that Mac OS X 10.8 comes bundled with Growl, that all Apple Apps support it, that GNTP becomes an integral part for distributed notifications, that it integrates into iOS' notifications system etc. pp. Your move, Apple.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/10/07/growl-1-3-is-a-paid-app-now/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>You can remove Ads from your Ad-Supported Kindle now</title>
		<link>http://www.stum.de/2011/10/07/you-can-remove-ads-from-your-ad-supported-kindle-now/</link>
		<comments>http://www.stum.de/2011/10/07/you-can-remove-ads-from-your-ad-supported-kindle-now/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 16:39:07 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[reader]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/10/07/you-can-remove-ads-from-your-ad-supported-kindle-now/</guid>
		<description><![CDATA[Previously, I blogged about my new Kindle 4 and that I was bothered more by the ads than I thought. With the Ad-Supported Kindle 3 that meant tough luck - send it back under the 30 day money back guarantee and get a new one. Now, Amazon finally has an option to remove the ads. [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, <a href="http://www.stum.de/2011/09/30/review-of-the-kindle-4/">I blogged about my new Kindle 4</a> and that I was bothered more by the ads than I thought. With the Ad-Supported Kindle 3 that meant tough luck - send it back under the 30 day money back guarantee and get a new one.</p>
<p>Now, Amazon finally has an option to remove the ads. Log in to your Amazon Account and select &quot;Manage your Kindle&quot;, then &quot;Manage your Devices&quot;.</p>
<p>There should be a column for &quot;Special Offers&quot; in which you can remove the ads (the column will only be there when you have a Kindle with ads).</p>
<p>Obviously, Amazon will charge the difference ($30 for the basic Kindle 4) and within a minute or two your Kindle will happily proclaim that Special Offers have been removed (provided it's connected to WiFi).</p>
<p>I have no idea if it works for the Kindle 3 as well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/10/07/you-can-remove-ads-from-your-ad-supported-kindle-now/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Review of the Kindle 4</title>
		<link>http://www.stum.de/2011/09/30/review-of-the-kindle-4/</link>
		<comments>http://www.stum.de/2011/09/30/review-of-the-kindle-4/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 02:15:27 +0000</pubDate>
		<dc:creator>mstum</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[ebook]]></category>
		<category><![CDATA[eink]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[reader]]></category>

		<guid isPermaLink="false">http://www.stum.de/2011/09/30/review-of-the-kindle-4/</guid>
		<description><![CDATA[I've just received my Kindle 4, the low-end ad-supported $79 model. I have a Kindle 2 as well, and because I'm traveling soon the smaller form factor and weight was attractive. I also heard that the display was improved a lot from Kindle 2 to Kindle 3 and from what I've heard the Kindle 4 [...]]]></description>
			<content:encoded><![CDATA[<p>I've just received my <a href="http://www.amazon.com/Kindle-Wi-Fi-Ink-Display-Screensavers/dp/B0051QVESA">Kindle 4, the low-end ad-supported $79 model</a>. I have a Kindle 2 as well, and because I'm traveling soon the smaller form factor and weight was attractive.</p>
<p>I also heard that the display was improved a lot from Kindle 2 to Kindle 3 and from what I've heard the Kindle 4 uses the same screen as the 3. I don't have a Kindle 3 to compare against, but it's definitely an improvement over the 2.</p>
<p>Hardware wise, it feels that it's the same in terms of CPU: Downloading stuff from the archive still results in annoying screen refreshes and micro-hanging. Opening the on-screen keyboard results in a noticeable delay. Flipping pages or just rapidly moving through the Keyboard shows the high latency of the screen. No change, but if the Kindle Touch has the same hardware, it just fuels my belief that a touchscreen e-Ink isn't a great experience.</p>
<p>It is still possible to take notes and highlight text passages. The On Screen Keyboard is not stellar, but it's okay. I used the Keyboard on my Kindle 2 exactly 1 time so far, to buy a book from the Amazon store. I usually buy books from my Mac, and I never feel the urge to take notes. Realized how much I like 3G actually. Open Amazon on any web browser and use the &quot;Send to my Kindle&quot; option on checkout. Would definitely pay the extra price, if 3G were offered.</p>
<p>There is no Headphone jack anymore, and no Text-To-Speech anymore. It wasn't great anyway, so I don't care. But if you're vision impaired and actually used that feature, you might want to know. Capacity reduction (2 instead of 4 GB) doesn't matter, bought books are tiny, PDFs suck just as much as they did on the old Kindle, and no audio features means no music. Novels are usually around 1-2 MB, some tech books can reach 5-10 MB, and the (free) Oxford english Dictionary is 25 MB. My 31 books take up 155 MB, with about 80 MB for the mentioned Oxford Dictionary and two other, similar Dictionaries. Battery runtime was apparently reduced, but we're still talking about a month according to Amazon (down from 2 months), a claim that is not only verified true, but also just means that it went from &quot;So long you don't have to worry&quot; to &quot;Still long enough that you won't have to worry&quot;.</p>
<p>Does not come with a USB Power Brick, only with a USB Cable. Judging from the coating and looks, I assume it's the <a href="http://www.amazon.com/Amazon-Replacement-Display-Generation-Kindles/dp/B003M5IQLU/ref=sr_1_1?s=electronics&#038;ie=UTF8&#038;qid=1317350604&#038;sr=1-1">same horrible Cable</a> Amazon ships with all Kindles. Expect the cable to <a href="http://ecx.images-amazon.com/images/I/51WC0ySRUZL.jpg">literally fall into pieces and disintegrate</a> in a year or so. Threrefore, don't buy these crap Kindle-branded cables as replacement when yours disintegrates (that's a &quot;when&quot;, not an &quot;if&quot;) but get a plain standard Micro-B USB Cable, <a href="http://www.amazon.com/gp/product/B003ES5ZSW">ironically sold by Amazon</a> under their own brand as well.</p>
<p>Physical Prev/Next buttons on both sides like on the Kindle 3. They work well and have a nice touch, but I prefer the bigger ones on the Kindle 2. No more holes for book cover hinges - I liked those, but now the <a href="http://www.amazon.com/Kindle-Lighted-Leather-Cover-Black/dp/B004SD1ZPY/ref=_1_6">official Kindle covers</a> seem to have a hard plastic shell, which is nice. $60 for a lighted cover to cover a $80 device does not look so nice, so I've passed on that. I love how the light is mounted though, much better than the <a href="http://www.amazon.com/Kindle-Lighted-Leather-Cover-Keyboard/dp/B003DZ165W">Kindle 3 lighted cover</a> which looked a bit makeshift.</p>
<p>Ads are annoying. I thought it wouldn't bother me much, but I spend a lot of time on the Home Screen and I have 4 pages of books already. I'm only losing one row (9 vs. 10 Books per page) but it just somehow feels I'm losing a lot of space. If Amazon would offer an option to pay the $30 difference to remove ads, I'd seriously consider it. Ads themselves are not annoying and only show up on the home screen and screen saver, not during reading. So if you are cost concious, buying the ad-supported Kindle isn't a bad thing. (Edit: <a href="http://www.stum.de/2011/10/07/you-can-remove-ads-from-your-ad-supported-kindle-now/">You can upgrade the firmware to an ad-free one directly through Amazon</a>)</p>
<p>If you don't own a Kindle but like to read books and don't mind that you can't resell individual books, the Kindle 4 is a more than decent reader and a better reading experience than any Tablet will offer, including the upcoming Kindle Fire.</p>
<p>For size comparison, Kindle 4 lying on Kindle 2. Screen size is about the same.</p>
<p><img height="850" style="margin: 5px" width="600" alt="" src="http://www.stum.de/wp-content/uploads/2011/09/Kindle2-4.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.stum.de/2011/09/30/review-of-the-kindle-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

