<?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>Codezen</title>
	<atom:link href="http://blog.codezen.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.codezen.org</link>
	<description>Hacker Friendly Ranting</description>
	<lastBuildDate>Wed, 18 Apr 2012 17:52:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>On Star Trek Online</title>
		<link>http://blog.codezen.org/2012/03/16/on-star-trek-online/</link>
		<comments>http://blog.codezen.org/2012/03/16/on-star-trek-online/#comments</comments>
		<pubDate>Fri, 16 Mar 2012 18:17:36 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=624</guid>
		<description><![CDATA[I&#8217;m a huge Trek fan, if you didn&#8217;t know. I&#8217;ve watched every episode and movie. I know trivia. I have posters in my office, models, and even toys. Yep, I&#8217;m a trekkie and proud of it. I&#8217;m also a gamer, but I&#8217;m resistant to the idea of playing an MMORPG. I played WoW back in [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a huge Trek fan, if you didn&#8217;t know. I&#8217;ve watched every episode and movie. I know trivia. I have posters in my office, models, and even toys. Yep, I&#8217;m a trekkie and proud of it.</p>
<p>I&#8217;m also a gamer, but I&#8217;m resistant to the idea of playing an MMORPG. I played WoW back in the 2005-2006 timeframe when I had buckets of freetime in college and even then I started playing to the exclusion of all else. I was going through some tough times, what with becoming a father at 20, so I was more than happy to escape my regular existence (I feel I should note that I still managed to get middling good grades and graduate before all of my friends, but I could&#8217;ve done better). Anyway, a year or so of WoW addiction has put me off of MMORPGs because in the end I found the experience hollow, not to mention expensive.</p>
<p>So when Star Trek Online came out, my reluctance to give it a shot as an MMORPG vastly outweighed my desire to play a game in the Star Trek universe. I need another monthly bill like I need a hole in my head, really. Not to mention I had (and still have) a girlfriend and I had only one game-capable computer at the time. Juliette&#8217;s down with some game playing, but only if she gets equal time, or can play with me.</p>
<p>All of that changed. I built another desktop, and upgraded my first so they&#8217;re capable of gaming (we played Skyrim with high detail simultaneously). Then, two months ago, ST:O went free to play.</p>
<p>I&#8217;m still resistant. The idea of Korean MMORPG players letting their children starve to death in another room is a powerful reminder of the depth of game addiction and I definitely don&#8217;t have the time to devote to it now that I have a career and a family. But at the same time, the life of a parent can get pretty boring when you don&#8217;t have the time (or the money) to go out on a regular basis. Finding escape in media (Juliette and I have watched a large amount of Trek, as well as loads of other stuff), or at the gym is all well and good but both of those things can feel repetitive and unrewarding. Games are a good way to get around that, even if their rewards are fake. So, last night, Juliette and I installed ST:O and gave it a shot.</p>
<p>I can already feel the grip of it. I had trouble sleeping last night because of it. It was a lot of fun, and even though I&#8217;m only a couple of missions out of the tutorial and still only have a basic grip on the gameplay or strategy, I&#8217;m obsessing over it.</p>
<p>I never understood the free-to-play business model, but I do now. The reminders are all over in the game, from the people commanding massive starships, to the unlockable character customization that costs real money, to the Cardassian Lockboxes that require purchased keys to open. It would be so easy to lose track of how much real money you&#8217;ve spent. And yet, looking through the store, the items seem interesting and compelling and the prices don&#8217;t seem unreasonable when you consider what you&#8217;re getting. Most of the nitshit improvements are less than the price of a fancy coffee. Some of the smaller ships are $10-$15. The capital ships are $25 (or $50 for a pack of them, one for each class). They&#8217;re all transferrable to different characters on the account. And even though I&#8217;m wary of spending $25 on virtual property that&#8217;s only good as long as I play the game, I remember that I&#8217;m playing the entire game, legally, for free. That&#8217;s half of what I paid just to buy WoW 6-7 years ago, not even including the subscription fees. Now, clearly, this could spiral out of control. There are some things they charge for that I&#8217;d never consider, like customizing your bridge crew characters, or opening those Lockboxes, or expanding my inventory etc.. I&#8217;m not here to micropay myself into oblivion, but if I reach a high enough rank and I&#8217;ve gotten $25 of entertainment from the game (which seems likely after one night&#8217;s playing), I&#8217;ll probably be rolling in an Odyssey.</p>
<p>Overall, I think the game has channeled Trek fairly well. The space vs. ground event / skill set is pretty much how a Trek RPG should work I think and the style is dead on. The ships and environment look great, even two years out from launch. The ship controls take a little to get used to, but it&#8217;s managed to relate the universe well with stuff like setting the impulse level, the different attacks, and parlaying crew expertise into special techniques &#8211; all things we&#8217;ve seen on screen. It&#8217;s easy to pretend I&#8217;m Kirk or Picard at the helm of my ship with my trusty bridge crew.</p>
<p>That said, I&#8217;ve yet to get very far into the game and I obviously haven&#8217;t even touched the Klingon side of the universe, so I&#8217;ll have to reserve final judgment until I know how much fun I can have with it. I&#8217;m hoping that the separation between core gameplay and extra content is as well defined as it appears to me now, but I could be wrong as I get farther from basic levels.</p>
<p><strong>Massive Edit</strong></p>
<p>I now have a deeper understanding of the game, and have stopped playing. Some things I wanted to touch on since this is my space for reviewing things that cross my mind.</p>
<p>The Duty Officer dynamic (you obtain sets of duty officers like items, each one has certain attributes, you then send a number of these officers on offscreen missions that take a duration of real time to get various rewards and special XP) was really cool. It rounded out the game as a simulation of being a real captain because in the series you always see characters going to or returning from various competitions and conferences, or having special duty to optimize the warp core, or going on leave to Risa. It was a nice way for your characters to be working even while you weren&#8217;t playing the game and it was a draw to return so you could check on how your duty officers performed. It&#8217;s perverse how much I enjoyed sending my little figurine duty officers to settle trade disputes or help colonists, just like in the series. However, it could definitely use a tweak. I was disappointed that the duty officers never progress. They&#8217;re like a deck of trading cards, you can play them different ways but they never change, you have to trade up or find better ones to improve. I understand that this makes them a commodity for the player trading system (the Exchange), but I would&#8217;ve really liked it if the missions you sent them on changed their effectiveness somehow. Each task has certain requirements to even attempt and each comes with a chance of critical success, success, failure, or disaster. If the officers you assign have certain traits, you can improve your changes for any of the four. For example, if you send a Diplomat with the Telepathic trait, you increase your chance of critical success. Alternatively, if you send your crew on leave with just a bunch of stick in the mud Starfleet types you increase your chance of failure (apparently the rigid officers don&#8217;t have much fun alone &#8211; imagine a crew full of Worfs on leave). Now, that&#8217;s pretty neat alone, but I wish that some of these traits were more flexible. For example, you already gain a bonus for sending &#8220;Tactful&#8221; security officers with your Diplomats, because they don&#8217;t offend the relevant parties. It would be nice if you sent an officer without &#8220;Tactful&#8221; on the mission and, if it was a critical success (or some other criterion) he would learn something about tact and return with the trait. Of course there are some caveats, you could never gain the trait &#8220;Telepathic&#8221;, that wouldn&#8217;t make sense, and you&#8217;d have to add some chance of getting negative traits too. Overall it would shift the focus from passing around officers like trade commodities to molding an untested fresh crew into a <emph>great</emph> crew. That&#8217;s where you get your satisfaction. That&#8217;s when you&#8217;re officially role-playing Picard.</p>
<p>Another thing worth mentioning is the crafting system that seems to be compulsory in modern RPGs. I don&#8217;t envy the task having to somehow wedge a crafting system into a universe that&#8217;s built around mutual advancement and practically limitless energy, but the STO guys did a great job. The fundamental element of crafting in STO is exploration. To craft items you spend things like &#8220;Unknown Alloys&#8221; and &#8220;Tetryon Particles&#8221; that you gather from scanning unknown anomalies. To make a really great item you need a rare particle trace. You have Research Points that represent your skill at building these various craftables (ship weapons, ground weapons, hypos, deflectors, etc.). None of this really makes sense in the broader universe in which sharing research and effort for mutual gain is basically the cornerstone but what they accomplished is rewarding the sort of curiosity that you see in all Trek captains. Now when Kirk scans an anomaly he&#8217;s not trying to build a phaser array, but in the MMO world where no *real* exploration can exist, it&#8217;s a nice way to incentivize giving a nod to Starfleet&#8217;s scientific mandate by at least feigning curiosity. That said the whole thing is a fucking grindfest, which is basically what all crafting systems boil down to if there&#8217;s a need to farm reagents. You can certainly just do missions and scan any anomalies that you come across but that&#8217;s never going to be enough. You need 10 Radiation Samples (or other items) alone just to build the <emph>schematic</emph> for your end goal. Random chance isn&#8217;t enough to make all of the craftable items you want to make, and trading low level commodities is pretty much miserable. That means that you&#8217;re going to head to one of the unexplored sectors of the galaxy and sit around scanning anomalies for ages until you have enough of data sample XYZ and that&#8217;s flat out <emph>boring</emph>. Even getting your research points is a grind as you end up having to make items you don&#8217;t want or need just to get enough points to start making items of your class (this might be avoidable if you start crafting everything and scanning anomalies from day one).</p>
<p>That&#8217;s the problem I have with STO. It&#8217;s all to repetitive. I cranked up the difficulty to Elite and the ships and enemies successfully posed a threat to me, but the missions just blurred together into a paste. In the initial Klingon storyline there are some nice piece of writing &#8211; like meeting McCoy and Scotty in a past starbase that&#8217;s rendered just like TOS to defeat phase shifting beings that are exploiting a passing comet to prey on us &#8211; but the end result is that basically all the missions are [Space Combat][Ground Combat][Space Combat] with a wall of samey enemies and a linear set of objects to interact with between you and the end. It&#8217;s all phrased differently, the settings are all trivially different, but there wasn&#8217;t enough differentiation to hold my attention. Grinding mobs is where I think MMOs in general fall down, but MMOs like WoW have the advantage that if you&#8217;re going to churn through enemies they&#8217;re usually different from the last place. You move from undead to snake people to evil gnomes to ghosts to trolls etc. all in their own different setting, and all with their own skills and threats to your character. In STO, it was an interminable stream of Birds of Prey with basically the same attack, maybe a bigger one with Plasma Torpedoes or another minor variation. On the ground it was a stream of the same Klingon characters in worlds that looked too much alike. I will give STO points for the fact that combat is fun, and that it&#8217;s much more based on abilities you get from bridge officers or weapons than from your character alone (which gives you more leeway to experiment), but when I&#8217;m on the surface clearing out my hundredth group of identical Klingons, I&#8217;m looking for a little more variety.</p>
<p>This is especially true with the exploration quests. These are almost mandatory because you can get 1440 dilithium (which is a fair sum, not a fortune) every real-time day doing them and there aren&#8217;t that many opportunities to get dilithium (at least not at my level). The quest is easy, you go to one of the fringe places (the same places you grind for craftables) and you explore or aid three systems. The problem is that you only have to do it a couple of times before you see the pattern that exists in every one of these quests. There are the clear out missions, the missions where you replicate 10 of some commodity the planet needs, the collect 5 data samples missions, and the final and most tedious type: the away team aid mission. These away team aid missions sound like they&#8217;d be fun, they come with various different stories, like helping to investigate a murder, or dispelling a ghost story, but in the end it comes down to the same fucking thing. You land, you interact with a set of objects, possibly fighting off others in the way. Now you might think I&#8217;m being overly abstract because games are really just interacting with various things in various ways but when I say &#8220;interact with a set of objects&#8221; I mean you literally walk from one point to another scanning. Some missions that&#8217;s literally it. You walk from one giant mushroom plant to another until you&#8217;ve scanned 5. Done. Others are you walk from one monolith to another killing Klingons in between. There&#8217;s no drama. No dialogue. It&#8217;s just another theme on the same goddam template. Look, I&#8217;m not trying to say that STO has to procedurally generate actual alien worlds with civilizations and stories, but at least add some more entries to the cycle.</p>
<p>I&#8217;m not trying to condemn all of the writing content. I particularly enjoyed the DS9 arc (the Dominion fleet diverted in the end of the series shows up 30 years late and takes DS9), but even that was tainted but one too many step and fetch quests on Bajor to get the base running and suffered from a rather weak ending (getting a Founder out of Federation prison when &#8211; surprise &#8211; there&#8217;s a prison break). The TOS cameos were delightful as well, but that&#8217;s pretty low hanging fruit to impress a Trekkie.</p>
<p>In the end, I stopped playing. The thrill of space combat, the Trek references, the well done game mechanics and even the great job they did styling the game couldn&#8217;t make up for the repetitive nature of the game. Maybe there&#8217;s an explosion of good content later as the writers explored the boundaries of the engine, and maybe the PvP that I frankly couldn&#8217;t care less about redeems it for some players, but at level 21 I have lost the compulsion to continue. Perhaps MMOs really just aren&#8217;t for me in the end, and I&#8217;ve been permanently spoiled by rich single player games like Fallout and Deus Ex that are basically impossible to replicate in an MMO.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2012/03/16/on-star-trek-online/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Wayland, systemd and Convergence</title>
		<link>http://blog.codezen.org/2012/02/09/on-wayland-systemd-and-convergence/</link>
		<comments>http://blog.codezen.org/2012/02/09/on-wayland-systemd-and-convergence/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 23:08:59 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=591</guid>
		<description><![CDATA[One of the reasons the Linux desktop is making strides is that we are beginning to converge. One might look at the Unity/gnome-shell split, or the vast differences between GNOME/KDE/Xfce/Xmonad/etc. and think that that statement is a complete load. But look at the tech running our Linux desktops today: IPC: DBus, very important as the [...]]]></description>
			<content:encoded><![CDATA[<p>One of the reasons the Linux desktop is making strides is that we are beginning to converge. One might look at the Unity/gnome-shell split, or the vast differences between GNOME/KDE/Xfce/Xmonad/etc. and think that that statement is a complete load. But look at the tech running our Linux desktops today:</p>
<ul>
<li>IPC: DBus, very important as the foundation</li>
<li>Sound output management: PulseAudio, love it or hate it</li>
<li>Chat/messaging: Telepathy</li>
<li>Network management: NetworkManager</li>
<li>Notifications: DBus notifications</li>
</ul>
<p>This isn&#8217;t even counting the defacto libraries that handle a lot of the less glamorous tasks on virtually every desktop Linux machine, like poppler for PDF display, or freetype2 for fonts, or components of the non-graphical GNU userland. And also not counting the various standards we almost universally adhere to, like EWMH (where possible).</p>
<p>Convergence provides us with great benefits. You might not like NetworkManager, you may prefer another, but it&#8217;s because of NetworkManager that major distribution installs all operate identically. Loading Ubuntu / Mint / Debian / Arch / Fedora with GNOME or KDE and immediately you&#8217;ll see what I mean. It fires up an applet, and the user just knows what to do. It&#8217;s got permissions, it just works. Compare this to the days before when each distro had its own crazy script crap with varying levels of interfaces and it&#8217;s the difference between night and day. Today I can hand my girlfriend &#8211; not a Linux expert by any stretch &#8211; her laptop with a default install of Arch w/ GNOME and she can hit the network. Not so long ago, I had a collection of bash scripts I tried to teach her to use.</p>
<p>Same with PulseAudio. You may believe that using straight ALSA is a better solution, but only until you have multiple sound devices you want to use. Or bluetooth headphones. Or want to do network sound. Or UPnP. Because the major desktop environments have converged around PulseAudio, they all operate similarly and have the same features. Settings in GNOME affect settings in KDE. Media applications can take advantage of PulseAudio&#8217;s features and not have to worry about fallbacks.</p>
<p>You may argue that Telepathy applications aren&#8217;t as mature or full featured as Pidgin, the classic IM client, but it&#8217;s getting there and has several interfaces across toolkits (or lack thereof), and integrated with greater flexibility. Clients written to use it get so much for free that it&#8217;s compelling.</p>
<p>Applications can be more featureful, stable, and interoperable when most of their functionality is shared in a backend. This was enshrined in the Unix Philosophy and forgotten somewhere along the way: separation of capabilities and presentation. These technologies aren&#8217;t perfect, they may not eclipse alternatives yet, but the important thing is that they&#8217;re agnostic of toolkit, window manager, or desktop environment. If you were to start another desktop environment today, there would be far less work to have a functional system today than 10 years ago because of them and that&#8217;s a win for every person that&#8217;s ever been unhappy with the state of their desktop. </p>
<h2>The controversial part</h2>
<p>I haven&#8217;t yet mentioned the two pieces of software in the title of this piece for good reason. Wayland and systemd are, almost by definition, not about convergence. If anything they&#8217;re about divergence as we, the open source community, have already converged on Xorg and sysvinit pretty definitively. However, these components are outdated and flawed. They form the basis of all the open source desktops, but we cannot allow that to force us into using them forever.</p>
<p>In the larger scheme of things, replacing these two pieces of software are part of what I perceive as a new push to converge on another component. The Linux kernel. These pieces are software are tightly coupled to it. This is the philosophy of their authors:</p>
<hr/>
<h3>Kristian Høgsberg, creator of Wayland</h3>
<p><a href="http://fosdem.org/2012/interview/kristian-hogsberg">FOSDEM 2012 Interview, February 2012</a><br />
<strong>FOSDEM</strong>: Wayland requires Linux-specific features such as KMS and udev. Would it be much work to port Wayland to other free operating systems such as the BSDs? Do you know of any efforts or interest in this domain?</p>
<p><strong>Kristian</strong>: It&#8217;s certainly possible to port Wayland to other operating systems, but they&#8217;ll have to provide the same level of infrastructure as Linux does. One of the things that went wrong with X was that we tried to pull too much of the OS into X so that we could run on every old platform out there. Or to put it more bluntly, bending over backwards for fringe platforms. There&#8217;s a real cost to that; the code gets encrusted in #ifdefs, codepaths that never get tested and bad architecture decisions such as userspace PCI bus enumeration and writing your own dynamic linker.</p>
<p>I also find that the Linux kernel has a lot of cool features that can make applications faster, safer and simpler, and we often don&#8217;t use those in the name of portability. There is an accept4 syscall that lets you accept a connection on a socket and sets O_CLOEXEC atomically. The epoll mechanism with timerfd and signalfd does most of what many complex userspace event loops do in many thousands of lines of code. We need to embrace all the new features the kernel offers and not insist on some outdated lowest common denominator.</p>
<h3>Lennart Poettering, creator of systemd</h3>
<p><a href="http://linuxfr.org/nodes/86687/comments/1249943">Linux.fr Interview, June 2011</a><br />
<strong>LinuxFr.org</strong> : Systemd use a lot of Linux only technologies (cgroups, udev, fanotify, timerfd, signalfd, etc). Do you really think the Linux API has been taking the role of the POSIX API and the other systems are irrelevant ?</p>
<p><strong>Lennart</strong> : Yes, I don&#8217;t think BSD is really too relevant anymore, and I think that this implied requirement for compatibility with those systems when somebody hacks software for the free desktop or ecosystem is a burden, and holds us back for little benefit.</p>
<p>I am pretty sure those other systems are not irrelevant for everbody, after all there are people hacking on them. I just don&#8217;t think it&#8217;s really in our interest to let us being held back by them if we want to make sure Linux enters the mainstream all across the board (and not just on servers and mobile phones, and not in reduced ways like Android). They are irrelevant to get Free Software into everybody&#8217;s hand, and I think that is and should be our goal.</p>
<p>But hey, that&#8217;s just me saying this. I am sure people do Free Software for a number of reasons. I have mine, and others have others.</p>
<hr/>
<p>To me, this is exactly the attitude we need. FreeBSD and same-kernel variants are the only open kernels with any sort of desktop presence other than Linux<a href="#footnote_1">[1]</a> and it has a tiny fraction the number of desktop users. OpenBSD is still relevant in its own ultra-secure niche, but the desktop is a completely secondary goal. NetBSD is&#8230; well, NetBSD. The point is that the Linux kernel has quite a lot of relevant features, and many times the number of users such that it doesn&#8217;t make sense to warp the codebase of two of our most important components to function on them.</p>
<p>Wayland is a major win for the open desktop because it&#8217;s dead simple, performant, and in it&#8217;s 4 year life has already acquired features that are completely lacking in Xorg. It&#8217;s shed years of X11 cruft in favor of a solution that makes sense on modern open source desktops. We no longer live in a world in which it makes sense to optimize your entire display server for the off chance that the window is going to be remotely connected over a network when 99.99% of the time the application is going to be a local window <a href="#footnote_2">[2]</a>. The simplicity of this approach lends itself to leaner, faster software built on top of it. But the simplicity Wayland has achieved is from leveraging technology that isn&#8217;t present in non-Linux kernels. Apart from the tech that Kristian mentions in the quote above, FreeBSD (again &#8211; the most advanced w/r/t desktop capabilities BSD) lacks even rudimentary support for kernel mode setting (KMS) and other technology for this lightweight rendering in released code (although there are out-of-tree patches for Intel chips only). </p>
<p>Systemd too, taking advantage of the more featureful Linux-only u* tools and interfaces, shouldn&#8217;t have to be warped to support tiny tiny fractions of the community. If it did, and the device hotplug or cgroup functionality it provided couldn&#8217;t be relied upon, the higher level graphical applications would have to compensate, most likely by ignoring features or using messy fallbacks.</p>
<p>Pieces of the modern open source stack should be written to take full advantage of current technology (Linux<a href="#footnote_3">[3]</a>) and damn the rest. Not because I don&#8217;t like BSD, not just because it has so few desktop users, but because open source, at its heart, is a do-it-ocracy. In no other software ecosystem in the world do independent developers feel beholden to support ancient and rare configurations of infrastructure or to hold of on adoption until support can be universal. In no other software ecosystem in the world does it make <emph>less sense</emph> to do so. If BSD users want Wayland and systemd, the code is right there, waiting for them to start a patch set against them.</p>
<p>And for those that would say that I&#8217;m impugning the open source grail, the freedom of choice, I ask you what you are choosing? Why choose one piece of software over another? Because one does what you want how you want it done, and another does not<a href="#footnote_4">[4]</a>. I want to live in a world where the way my software works is completely separate from the way I work with my software. How it works (sending messages, emails, making sounds, connecting to networks, displaying images or webpages etc.) should be solid, featureful and, most importantly, independent from how I work with it (CLI, graphical, integrated into this or that, windows here, buttons there, flashing icons, popups and notifications etc.). I think that you&#8217;ll find that most of your choice has nothing to do with underlying technology and only with <strong>capabilities</strong> and <strong>presentation</strong>. Lets agree on capabilities and then we are free to choose presentation.</p>
<p>The time has come to take the final steps of convergence at the low level and the high level. To choose the best tech to standardize the underpinning technologies of our systems. Let&#8217;s drop the harmful pretense of equality and instead usher in an age in which we can all count on a modern kernel, a modern init, a modern display server and functionality that is separated from interface. Then, and only then, will we have created not just the Year of the Linux Desktop, but the Year of the <strong>Ultimate</strong> Desktop.</p>
<p>- Jack</p>
<p><a name="footnote_1" /><br />
[1] (Open)Solaris and kin could be considered challengers here, I see murmurs of better graphical support on the internet, but they&#8217;re incomplete in terms of driver support, and the number of desktop users is minscule even compared to BSD.</p>
<p><a name="footnote_2" /><br />
[2] Which isn&#8217;t to say that we don&#8217;t want or need the capability of using graphical apps over a network, just that we don&#8217;t need to cause crippling performance or design problems to accomodate it. That sort of functionality belongs in a plugin or a library. If anything, having it separated from the display manager just means it would be easier to tweak and perfect.</p>
<p><a name="footnote_3" /><br />
[3] And yes, this includes moving elsewhere in the exceedingly rare likelihood that Linux would ever be supplanted. It&#8217;s the year 2012, Linux has the greatest number of developers and users, has faced down all of its (prospective though bullshit) legal problems and has gained widespread support in markets outside of the desktop. As of yet there are no open contenders other than OpenSolaris and BSD, unless you want to count HURD, hahahahaha.</p>
<p><a name="footnote_4" /><br />
[4] Licensing is also a factor, but I consider that part of &#8220;how I want it done.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2012/02/09/on-wayland-systemd-and-convergence/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Skyrim</title>
		<link>http://blog.codezen.org/2011/11/30/on-skyrim/</link>
		<comments>http://blog.codezen.org/2011/11/30/on-skyrim/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 18:19:38 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[gaming]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=522</guid>
		<description><![CDATA[I don&#8217;t really want to spend much time talking about Skyrim. I&#8217;ve already written this post as a review, but in all I&#8217;m still forming my opinion so anything I say has to be tempered at this point. Instead of a review, I&#8217;d like to collect various points of thought. Skyrim&#8217;s Strengths Level Scaling I [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t really want to spend much time talking about Skyrim. I&#8217;ve already written this post as a review, but in all I&#8217;m still forming my opinion so anything I say has to be tempered at this point. Instead of a review, I&#8217;d like to collect various points of thought.</p>
<h2>Skyrim&#8217;s Strengths</h2>
<h4>Level Scaling</h4>
<p>I never thought I&#8217;d say this about a TES game after Oblivion so royally fucked up on level scaling, but this is one (of many, as we&#8217;ll see in the next few points) where Skyrim learns much from Bethesda&#8217;s work on Fallout 3.</p>
<p>Like Fallout 3, the level scaling is appropriately tailored to quests leaving random encounters at a standard level. This means that, unlike Oblivion, there are no road bandits wearing daedric armor, but the main questline will provide challenge for you at whatever point you decide to pursue it.</p>
<h4>Level Mechanics</h4>
<p>The core reason that level scaling <emph>didn&#8217;t</emp> work in Oblivion was that the traditional TES leveling scheme didn&#8217;t fit with it. As a refresher for those of you that didn&#8217;t play Oblivion for awhile to get ramped up for Skyrim, in Oblivion you chose 5 major skills (in Morrowind it was 5 major, 5 minor) and your advancement through those skills determined your character level. In theory, this means that as your knight character hacks and slashes (advancing Blade, Block, etc.) he levels as he becomes more effective.</p>
<p>The reality of the fact was that it was possible to exploit the game with what amounts to the converse of the above. By &#8220;poorly&#8221; choosing your major skills (i.e. choosing magic skills for a character that will never cast a spell), you could artificially keep your character level low and the enemies would be (in)appropriately weak. This was a functional strategy because <strong>in Oblivion, character levels didn&#8217;t mean anything</strong>. Sure, you got to dump some points in attributes and skills, but if the alternative means enemies don&#8217;t get any stronger, you&#8217;re no worse off for foregoing character levels all together.</p>
<p>Well, Skyrim puts an end to that. You no longer choose your major skills, it levels you up based on your advancement through skills overall.</p>
<h4>Perks</h4>
<p>As part of the level mechanic updates, the addition of Fallout 3 style explicit perks was great. TES has always had perks, but previously they were always very subtle to the point of being useless and they were associated with reaching a new skill plateau, so there were only 4 for each skill and you just got them automatically. For magical skills, the perks were always the ability to cast higher level spells&#8230; which is nice, but aside from having marginally more powerful spells in your arsenal, it doesn&#8217;t really affect your gameplay.</p>
<p>With Skyrim&#8217;s system, you get a perk point each level, and each of the 18 skill trees has around 10 different perks. Like Fallout, these perks have certain requirements (either skill levels, or previous perks), but &#8211; most importantly &#8211; they can obviously affect your gameplay. Suddenly you can craft better stuff, or you hit 25% harder, or have new moves, or your shield blocks elemental damage, or spells cost half as much. These are significant changes and, because you spend finite points to get them, there are significant choices to be made as you level up.</p>
<p>The result is that a level in Skyrim is something that you don&#8217;t <emph>want</emph> to skip, even if you could, which is a marked change from Oblivion, and even Morrowind, where leveling was almost completely irrelevant in the face of skill levels.</p>
<h4>Character Level and Performance</h4>
<p>These basic improvements (overall skill level focus and perks) mean that character level is now a rough approximation of effectiveness&#8230; if you&#8217;re playing right. This relationship is the cornerstone of a level scaling system that works, but it also has some flaws that we&#8217;ll talk about with craft grinding.</p>
<h4>Skills</h4>
<p>In addition to the perks mentioned above, the skills have been streamlined as well. Morrowind had 27, Oblivion 21, and now Skyrim has 18 individual skills. The changes are mostly positive, like having One-handed and Two-handed skills separated instead of Blade and Blunt (which in turn were great improvements from Morrowind having a skill for every weapon type). The previous game&#8217;s questionably useful mysticism magic school has had its effects merged into other trees (conjuration and alteration, I believe). Mercantile seemed useful before, but having to level it through bartering was boring and the differentiation from plain old Speechcraft was tenuous at best. They&#8217;ve been wisely merged into a unified Speech tree. Lastly, the separation of sneak/security into sneak/lockpick/pickpocket is interesting.</p>
<p>I haven&#8217;t explored all of the skills, but the perks for them appear to be useful. </p>
<h4>Smithing</h4>
<p>I was really happy that they added in a smithing craft. The previous games included the &#8220;Armorer&#8221; skill, which allowed you to repair armor, but that&#8217;s clearly not the same. Being a melee character, it&#8217;s nice to run around in armor you create, swinging weapons you create. That&#8217;s more vanity than anything as you can pretty much find basic armor and weapons anywhere. The nice part is being able to further improve these items as your smithing skill improves to give you a bit of extra edge.</p>
<h4>Procedural Generation</h4>
<p>Skyrim incorporates a fair amount of randomness into the game, particularly with loot from bodies and chests. That dates back to Oblivion in TES (I believe), but it seems more prevalent now and it&#8217;s typically an antidote to quests being identical between play throughs.</p>
<p>Procedural generation is new, as far as I know, and it goes much farther to decrease repetition between play throughs. It doesn&#8217;t effect the main quests or some of the richer scripted events, but for things like bandit raids and thief missions, or assassin missions it&#8217;s trivial to set up and it adds a whole new level to the game. You could effectively play for hours after completing every quest line without doing the exact same quest twice.</p>
<p>Of course, in execution, these are a little dry. Especially when compared to the richness of the game proper. Some of them are&#8230; questionably difficult as well. For example, a procedural thief mission I got, I literally walked into the target house retrieved a conspicuous item and walked out&#8230; all while the owner was pleasantly chatting. He didn&#8217;t seem to mind that this item, which probably hadn&#8217;t existed in his home until I got the quest, was being &#8220;stolen&#8221;. I&#8217;m not sure if he was bugged or what, but the other missions were essentially adding rewards for shit I&#8217;d already be doing. Procedural bandit quests just mean you get an extra sum of gold for killing everyone in a randomly chosen local dungeon. I imagine it&#8217;s similar with procedural assassin quests, but I haven&#8217;t done any yet.</p>
<p>More interesting are the subtly procedural quests. Particularly quests that have a little more story to them but can take place in a number of different locations. Getting the Helm of Winterhold was subtly procedural. The quest text was spoken and rich, but the place I had to go to reclaim it changed and, most interestingly, the type of enemies I was retrieving it from changed too. Bandits the first time, necromancers the second.</p>
<p>Both examples are definite wins for replayability.</p>
<h4>&#8230;It&#8217;s TES</h4>
<p>The rest of Skyrim&#8217;s strengths flow directly from its parentage. TES games always have a huge scope and a plethora of things to do and items to obtain. Alchemy, enchanting, buying property, moral choices, many character types and playable builds. Skyrim is a solid entry in the TES lore and I haven&#8217;t even come close to finishing the game.</p>
<h2>Skyrim&#8217;s Weaknesses</h2>
<h4>The Interface</h4>
<p>Bethesda went the minimalist route with Skyrim&#8217;s interface and aesthetically they hit the mark. Functionally&#8230; not so much. There are already mods to correct the PC interface, particularly the inventory interface, but like Oblivion Skyrim seems to suffer from consolitis.</p>
<p>Nowhere is this more evident than in the character creation screen. The row of options at the top of the very first interface screen <emph>should</emph> function like tabs, but instead function like a slider. I theorize that this is due to the fact that it was designed with using shoulder buttons on a controller to navigate, instead of a mouse.</p>
<p>Similarly, there are a number of places, particularly in dialogue and crafting screens, where the interface appears to lose track of the mouse. Clicking seems to activate whatever is selected, but moving the mouse doesn&#8217;t <emph>necessarily</emph> change selections. The result is that you don&#8217;t really know what you&#8217;re clicking on which is doubly frustrating because the mouse makes it extremely clear what you want. I&#8217;m hoping this is what they&#8217;re fixing in 1.2 with &#8220;Mouse sensitivity issues&#8221;, although that could also be the atrociously low mouse sensitivity by default.</p>
<p>There are other oddities, like clicking outside of the black left sidebar inexplicably closes the interface, so you have to be very careful when selecting things there.</p>
<p>Overall, Bethesda also missed opportunities to use screen real estate wisely because they were designing for you to be 10 feet away on a couch instead of sitting right in front of a monitor. For example, the dearth of information in the inventory screen. 50% of the screen is taken up by a picture of the item you&#8217;re currently selected, but all you see about the other 1000 items you&#8217;re carrying is their name and some symbols regarding whether they&#8217;re equipped or more powerful than what you have equipped. In Oblivion, and the UI mods for Skyrim, you at least got a brief summary of the item from the list view. This makes it much easier to make choices about, for example, what you&#8217;re going to drop when you&#8217;re overencumbered, because you don&#8217;t have to select each individual item to see how much it weighs.</p>
<p>The last little nit is that when you pickup/drop/purchase/sell items from a big stack, it prompts you with a slider to ask how many. Why I can&#8217;t type a number here is annoying. Sliders are also used in the character creation screen to choose between presets. Sliders are probably the worst possible idea for mouse users, but the only controls that makes sense for console users.</p>
<h4>The Craft Grind</h4>
<p>Crafting, especially the new smithing craft, is hard to level without grinding. Part of the problem here is that, in previous games, the crafts were much less skill dependent. Alchemy, for example, was more effected by your intelligence attribute and the apparatus you used to create the potions than it was by the skill level. Without an intelligence attribute (or attributes at all), and no apparatus, alchemy effects are entirely based around perks (and thus skill and character level).</p>
<p>The problem is, with the focus on perks instead of getting gear or souls, you are forced to get your crafting skill level up to improve. Makes sense, but it&#8217;s not a smooth slope like it is with other skills. You have to go out of your way to craft. To some extent alchemy doesn&#8217;t suffer from this flaw as you&#8217;re creating potions that are disposable and there are reagent <emph>everywhere</emph>. If you experiment to find the reagents&#8217; properties, and otherwise just craft potions for yourself or to expend reagents, you can build alchemy fairly easily &#8212; especially if you&#8217;re not afraid to use potions.</p>
<p>Enchanting has a similar flow if you just gain levels by disenchanting or charging enchanted weaponry with soul gems.</p>
<p>Smithing has absolutely no flow whatsoever. There&#8217;s no way to level it with any reasonable speed making only items for personal use. It&#8217;s also hard enough to find the reagents (ore) in large enough quantities just by adventuring, so you&#8217;re likely to be going out of your way to mine, which isn&#8217;t too much fun. The point is that if you plan on creating yourself a set of armor and a new set of weapons at every tier of smithing, and upgrading them every time you can, you&#8217;re not going to have enough smithing tasks to make it from one tier to another. The solution? Make iron daggers over and over. Almost the definition of boring.</p>
<p>For smithing, and even for the other crafts that have some semblance of skill, you&#8217;re probably going to end up creating items for no other purpose than to up your level. It&#8217;s possible to pace yourself by forcing yourself not to buy the reagents to do so, but nonetheless you&#8217;re going to be cranking out daggers, potions, and enchantments you don&#8217;t need if you want to get those levels. That sucks.</p>
<p>This is a persistent problem with TES, but it was previously been mitigated by equipment and by the fact that when you level you got to dump points into skills. In Oblivion you could theoretically get to 100 Enchant without ever enchanting an item or filling a soul gem. It makes no sense, and people would most definitely grind in that game, but you could do it. Here you&#8217;re forced to grind, to some extent.</p>
<p>Because I&#8217;m a fan of the new level system, I would&#8217;ve liked to have seen these problems addressed with crafting quest lines. To introduce you to smithing, the Whiterun smith has a basic quest to show you the ropes. Why couldn&#8217;t that continue? There should be quests to mine ingredients (tangentially I think you should get <emph>some</emph> smithing experience from mining and smelting in addition to the proper crafting), or forge so many X for the war effort. That would not only allow you to do quests to smoothly gain levels, it would also give you a reason to make things more interesting than iron daggers. If you were given special ingredients to fetch from hostile areas it would even mix leveling your smithing with your other skills.</p>
<h4>Bugginess</h4>
<p>Bugs have plagued every release Bethesda has put out since Arena and Skyrim is no different. I&#8217;ve seen items floating in the sky, people in sitting positions slide into their chairs from across the room. A friend of mine saw a mammoth fall out of the sky and die right in front of him. I&#8217;ve had fetch quests that had to be done twice, inexplicably. There are texture issues and crashes too. Going to the internet, there are apparently some other bad bugs that I&#8217;ve had the good fortune to avoid.</p>
<h2>Overall</h2>
<p>Overall Skyrim is a great game. Out of the gate, it&#8217;s a bit rough around the edges, but much less so than Oblivion was. Bethesda&#8217;s greatest strength is its mod friendliness. It extends the life of every game by being open to new content and allows players to correct (real <emph>or</emph> perceived) problems. The upshot of Skyrim is that it&#8217;s a solid release, but every single one of the complaints and bugs will eventually be addressed. Whether it&#8217;s by Bethesda or the players is irrelevant.</p>
<p>Right now, the game has its flaws. A year from now (or, rather, a year from when the &#8220;Creation Kit&#8221; is released), the game will be verging on perfect.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/11/30/on-skyrim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Brewing</title>
		<link>http://blog.codezen.org/2011/09/30/on-brewing/</link>
		<comments>http://blog.codezen.org/2011/09/30/on-brewing/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 19:34:13 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[brewing]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=467</guid>
		<description><![CDATA[A couple of friends of mine, David and Otto, came down from their various corners of the world this past weekend. It was great to reconnect with them. It&#8217;d been years (since I got out of college almost 4 years ago) since we&#8217;d been in one place. It was a good time to be sure. [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of friends of mine, David and Otto, came down from their various corners of the world this past weekend. It was great to reconnect with them. It&#8217;d been years (since I got out of college almost 4 years ago) since we&#8217;d been in one place. It was a good time to be sure. Juliette and I tried to take them around Austin, to check out some of the local flavor. Otto had been here before for a festival (a common claim for many music and tech fans), but we largely stayed out of downtown. The appeal of 6th street is somewhat lessened now that school is back in session and we weren&#8217;t exactly looking to hang out with college age <del>douches</del> students out to get drunk fast and cheap. We hit places like Freddie&#8217;s, Dolce Vita, South Congress, Mount Bonnell and a cool little brew pup co-op called Blackstar (which I will probably return to, even if I don&#8217;t become a member).</p>
<p>Tangentially, I&#8217;ve been playing a lot of Dwarf Fortress of late (I&#8217;ll talk about that in another post, perhaps) and drinking a lot of beer and those two things have turned my brain to homebrewing, with a little inspiration from <a href="http://wilwheaton.typepad.com/wwdnbackup/2011/09/notes-on-the-making-of-my-polymorph-porter.html">Wil Wheaton</a>&#8216;s adventures with his son. I was planning on getting a basic equipment set for myself (via Juliette) for Christmas, but it just so happens my two friends are homebrewers as well so I decided to advance my plans. Besides, when it takes about a month to turn around a batch of beer (give or take depending on style), it&#8217;s better to get started early. This way, I can have a batch ready for the three major holidays (Halloween, <del>Skyrim</del> Thanksgiving, and <del>Diablo 3</del> Christmas).</p>
<p>So with my friends to help me, particularly Otto who&#8217;s been doing this in one form or another since college, we went to <a href="http://www.austinhomebrew.com/">Austin Homebrew</a> a local brick and mortar store that, you guessed it, sells all you could ever want for homebrewing beer, wine, and even soda. Judging from some <a href="http://www.homebrewtalk.com/vendors/">vendor lists online</a>, this type of place isn&#8217;t exactly unheard of, but it is a rare convenience. Especially considering that it&#8217;s literally 10 minutes away from my house. Sometimes it&#8217;s nice to be reminded what a cool city this place is and homebrewing definitely seems to fit the Austin character. This is probably the most beer friendly city I&#8217;ve ever been in and I&#8217;m from <em>St. Louis</em> the erstwhile home of Anheuser-Busch.</p>
<p>I was really surprised with how dead simple brewing ends up being. It&#8217;s basically like making tea, then making soup, then letting your yeasty minions turn that sugary soup into tasty alcohol. It&#8217;s really just like any other food recipe, albeit one that takes longer and requires ingredients you don&#8217;t find in a grocery store. The process is also extremely variable. You can be pretty much as involved in the process as you want. They actually sell &#8220;canned&#8221; beer kits (which I initially thought was some sort of way to end up with cans of beer) in which you literally just mix some buckets of premade ingredients into the fermenter. No cooking (aside from boiling the water) required, and a bit less special equipment (no huge stock pot, no hydrometer). Sounds kinda boring, but it&#8217;s literally one step up from just buying your beer at the corner store. In the process we used, the grains were already malted and the yeast was ready, but we still created the wort ourselves. It is possible to malt your own grains though and even culture your own yeast. Hell, you could become entirely self sufficient and grow your own grains and hops too although you&#8217;d probably still have to rely on others for any special flavor ingredients. Anyway, the point is that the level of control you have over your personal involvement is great.</p>
<p>On top of that varying level of time commitment, there&#8217;s also a huge variety of equipment. Even one half brew in, I can see that people&#8217;s setups are vastly different. Reading through the <a href="http://homebrewtalk.com">Homebrew Talk</a> forums, it becomes evident that a lot of these folks have very complex (and very <em>expensive</em>) setups. Kegging, kegerators, burners, wort chillers, fancy fermenters, carboys, parallel sets of equipment for &#8220;pipelining&#8221;, bench cappers, taps etc.. I got started for about $150 (a fermenter, a carboy, an auto-siphon, tubing, bottle wand, some caps, a hand capper, a manual, an airlock, some sanitizer, a huge steel stock pot, a thermometer, and a hydrometer), not including the first batch ingredients. But virtually every step of the process can be improved and simplified. Some people will stick with the basic investment. Others will spend thousands of dollars. Me, I&#8217;m waiting to see how my first batch turns out before thinking of improvement, but there&#8217;s definitely room for it.</p>
<p>The last thing I&#8217;ll mention is the economical point of view. Each five gallon batch turns into roughly 50 bottles (not equivalent to 5 gallons, you do end up losing some volume). Taking everything into account, the ingredient kit, the water (I didn&#8217;t use tap water, even though the helpful dude at the supply shop said Austin water was okay), the ice, even the caps, my first batch cost about $36. Roughly speaking, and not counting your time investment (that&#8217;s the fun part), or nitshit like stove gas, that&#8217;s 72 cents a beer. This batch is Belgian White, which is like a Blue Moon, which costs about $17 / 12 or $1.42 per beer. The cheapest, worst beer I would ever drink in a that-or-nothing situation, Lone Star, is about $9 for 12 or about 75 cents a beer. So there are basically three possible scenarios:</p>
<ul>
<li><strong>Best case scenario:</strong> The homebrews are as good as people say they are and I didn&#8217;t fuck it up. The price of a homebrew bottle is half that of its store bought counterpart.</li>
<li><strong>Mid case scenario:</strong> The recipe sucks or I made a critical mistake. As long as it&#8217;s drinkable it&#8217;s still cheaper than Lone Star.</li>
<li><strong>Worst case scenario:</strong> It&#8217;s undrinkable crap that even time won&#8217;t fix. I&#8217;m out $36 but hopefully I learned something in the process.</li>
</ul>
<p>It&#8217;s hard to think of in pure economic terms for a hobby, but I take two things from this. First is that it will take about 5 good batches (214 beers, assuming similar quality) before the cost of the basic equipment is overcome by the savings on beer. One more batch to pay off the bottles if they&#8217;re kept in rotation. Not half bad considering you can brew for years with the same equipment provided you keep it clean (and don&#8217;t break your hydrometers). Second, it means that it makes financial sense to be constantly brewing. If a homebrew beer was more expensive than its counterpart then brewing would be a special occasion thing. As it is I&#8217;ve already got plans to buy two batches of bottles and another ingredient kit as soon as my first batch is out of the fermenter. Of course, this is all in rough numbers and it assumes that I&#8217;ll be cranking out the same beer (I won&#8217;t be) and I&#8217;ll never fail a batch. Really, as with any hobby, it&#8217;s hard to quantify the enjoyment or the reward of actually doing it. I&#8217;m just glad the math seems to be in my favor.</p>
<p>All in all, I&#8217;m looking forward to partaking in homebrewed beer in a couple of weeks. It definitely isn&#8217;t for the impatient (or the broke) but so far it seems like a fun, economical, low maintenance and hopefully delicious hobby.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/09/30/on-brewing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A fan&#8217;s review of Deus Ex: Human Revolution</title>
		<link>http://blog.codezen.org/2011/08/29/a-fans-review-of-deus-ex-human-revolution/</link>
		<comments>http://blog.codezen.org/2011/08/29/a-fans-review-of-deus-ex-human-revolution/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 18:27:05 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[gaming]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=421</guid>
		<description><![CDATA[I just completed my first play through of the new Deus Ex game, Human Revolution or DX:HR for short. I guess you could also call it DX3, but that might confuse some of the folks that disavow that Invisible War ever existed. I was, and am, a huge fan of the original Deus Ex. In [...]]]></description>
			<content:encoded><![CDATA[<p>I just completed my first play through of the new Deus Ex game, Human Revolution or DX:HR for short. I guess you could also call it DX3, but that might confuse some of the folks that disavow that Invisible War ever existed.</p>
<p>I was, and am, a huge fan of the original Deus Ex. In 2001 it was a truly original game and I consider it, easily, my favorite videogame of all time. I&#8217;ve played it through maybe five times all together (and a few times I didn&#8217;t finish) with strategies varying from soldier, to hacker, to spy, to pacifist, to knife only psychopath (although I had to upgrade to the Dragon&#8217;s Tooth towards the end, and I didn&#8217;t count a couple of the &#8220;boss&#8221; type characters which had to be taken down with LAMs or GEP rockets). I can remember some of the original Deus Ex levels so well I could probably reproduce them faithfully from memory.</p>
<p>Invisible War was a forgettable sequel. I remember virtually nothing of the storyline, the character, or the mechanics thereof. I just know that when I finished it, I decided to erase it from my memory and pretend, as a lot of other internet gamers, that it never happened. It was less a Deus Ex game and more a botched product of the then dying Ion Storm (RIP). However, I was encouraged when the pre-release buzz was building for Human Revolution started and the developers seems to have their heads screwed on right, and they acknowledged that Invisible War was a failure. To see my favorite franchise fall short again would be enough to make me lose hope that it could ever be done right again.</p>
<p>So, with that bit of history and personal opinion out of the way, here&#8217;s what I thought of the most recent volume of Deus Ex.</p>
<div id='toc' class='post-421'><div id='toc_title'>Contents</div>
<ul><li><a href="#Gameplay">Gameplay</a>
<ul><li><a href="#Augmentations">Augmentations</a></li>
<li><a href="#No-Health">No Health</a></li>
<li><a href="#Cover-System">Cover System</a></li>
<li><a href="#Take-Downs">Take Downs</a></li>
<li><a href="#Boss-Fights">Boss Fights</a></li>
<li><a href="#Hacking">Hacking</a></li>
<li><a href="#Omissions">Omissions</a></li></ul></li>
<li><a href="#The-World">The World</a></li>
<li><a href="#The-Story">The Story</a></li>
<li><a href="#Conclusion">Conclusion</a></li>
</ul>
</div>
<h2 id='Gameplay'>Gameplay</h2>
<p>As I mentioned, a lot of the pre-release hype convinced me there was hope for the game. Admittedly, some of it made me question the future, but overall I believe most of their choices came off better than I expected.</p>
<h3 id='Augmentations'>Augmentations</h3>
<p>The first thing I was disappointed in in pre-release was that there were going to be no skills. In the original, you had skills, which were upgraded with experience, and augs, which were found and upgraded using various canisters you had to find throughout the game. Skills included things that you or I could accomplish, stuff like weapons accuracy, melee skill, swimming, hacking, medicine, etc. Augs, just like in the new game, practically gave you super powers.</p>
<p>All in all, I think they combined the two systems well, although they accomplished it partially by stripping the need for a lot of the skills. For example, swimming is moot because there is no water. Medicine is pointless because you regen. Melee is done away with as there are no melee weapons. The remainder of the skills were rolled into augmentations. Lockpicking (although mechanical locks are now unheard of and lockpicks don&#8217;t exist), computers, and electronics were all rolled into hacking which is very well represented in the tree with three separate branches. &#8220;Environmental Training&#8221; was condensed into a rebreather augmentation that lets you resist toxic gas. Weapons skills are now handled all together with an augmentation that increases accuracy while moving.</p>
<p>A lot of the old favorite augmentations came back too, like cloak, and silent running. Dermal armor has taken the place of the shield. Regen is now a built-in augment you have from the start (bolstering the no-health approach of the game, which also rendered the medicine skill moot). I didn&#8217;t get the chance to use any of the advanced retinal augments but they sound similar in concept to the original as well.</p>
<p>There were also some cool additions to the augmentations too. The Icarus Landing System lets you jump from any height and take no damage. High enough and you get a neat bubble effect and you can optionally stun everyone around you &#8212; although I never got to use that feature. The social augmentation sounded neat to open more dialogue options. You can gain the ability to punch through (some) walls too which is definitely a plus for path finding. Then there&#8217;s the neat offensive augmentation, the Typhoon, that allows you to expend Typhoon ammo and cause a shockwave of death. Very cool, although it sucks when used against you =).</p>
<p>Really, I didn&#8217;t end up missing skills and the game does fine with just the augmentations.</p>
<h4>The XP Problem</h4>
<p>I really didn&#8217;t like the fact that XP got you augments though. I know they rationalized it in game with the fact that you were somehow &#8220;awakening&#8221; your augments with experience, but that doesn&#8217;t make much sense to me. How does me doing an arbitrary action like finishing a mission suddenly entitle me to the ability to cloak? I understand it&#8217;s just a mechanic, but perhaps it would&#8217;ve made more sense to have canister-esque items for the baseline augmentations (the things you have to spend two &#8220;praxis points&#8221; to open up), and then XP would allow you to upgrade within the tree the baseline augments open up? (If you haven&#8217;t played the game, this essentially means that you&#8217;d have to find a canister to get cloak, but you could upgrade your cloak&#8217;s efficiency through XP points).</p>
<p>The core of the problem here is that XP is too easy to get. My first (and only for now) play through was non-lethal stealth. I got XP left and right, hacking systems, completing sidequests, getting bonuses for finding secret ways in. Every takedown (we&#8217;ll get to those later) was easy XP. Then you get a massive bonus for getting through a level without triggering an alarm, or getting noticed. To top it off, you can even buy these points for credits!</p>
<p>By the end of the game, my stealth Gandhi had more &#8220;praxis points&#8221; than I knew what to do with. I ended up spending my last 5 points maxing dermal implants that reduced damage 45% and made me immune to EMP. This on a character that almost never got shot&#8230; only because I had literally nothing else worthwhile to spend the points on. I had maxed hacking (the capture and stealth trees, fortify was pointless then), maxed my batteries, maxed cloak, maxed my storage capacity and lifting strength, could run silently and jump nine feet into the air&#8230; I can&#8217;t count the number of times I&#8217;ve gone to the augmentation screen and found, oh wait, I have <em>three</em> points waiting to be spent.</p>
<p>This abundance of augmentations also factors into the game because you no longer have to make any tough choices. In the original game, the canisters each contained two augmentations and you had to choose between the two irrevocably and they had to be installed by a bot so you couldn&#8217;t just hang on to the canisters until you decided which was more useful. Some were easy choices just based on your play style (Combat Strength probably isn&#8217;t important if you&#8217;re going to be shooting people up, for example), but others were very tough. Do I want my augmentations to all take less power (Power Recirculator) or the ability to upgrade one aug on the fly (Synthetic Heart)? Do I want regeneration (energy expensive, but useful for all damage after the fact) or the ability to absorb fire/plasma/energy attacks? In either case you can&#8217;t have both. DX:HR doesn&#8217;t force you to make these choices. Every augmentation is open for you and you can just carry around three of these praxis points to use at any time. Get to an area with EMP? Oh I guess I&#8217;ll just &#8220;awaken&#8221; my augmentation for EMP immunity. Thanks!</p>
<h4>The Pointless Augs</h4>
<p>There was also an entire stealth tree that seemed pretty much pointless too, which was disappointing. Mind you, I was playing on the hardest difficulty (although I&#8217;m sure some would say I was cheating at it because I turned on the reticle) and it was never an issue to &#8220;mark and track&#8221; my enemies. You can see them all on the radar, so who cares? I don&#8217;t need to know how much noise I&#8217;m making&#8230; if I&#8217;m crouch walking I&#8217;m being quiet enough. I don&#8217;t need to see the visual range of my enemies because I can see what way they&#8217;re facing on radar. It&#8217;s saying something that my stealth character made it all the way through the game without a single point in the general stealth tree. There are also some others that seem a bit pointless&#8230; like the HUD telling you how long until enemies&#8217; alarmed status ends. Doesn&#8217;t really help you at all, since you can see when it ends anyway, it just tells you how long you&#8217;re going to have to wait. It&#8217;s not like it&#8217;s ever more than 30 seconds anyway. I feel like I should point out that the original had some questionable augs too, like Aqualung, Environmental Resistance, Radar Transparency (unless you suck) etc.</p>
<p>Still, the above gripes aside, the augs &#8212; although too easy to get and the XP system makes 0 sense &#8212; were fun to use and enhanced the gameplay as they should. I would&#8217;ve liked to see most of the same augment technologies just with fewer opportunities to get them to add to the challenge. Maybe a sliding XP scale instead of getting praxis points so regularly.</p>
<h3 id='No-Health'>No Health</h3>
<p>Probably the most controversial of the additions to the new game was the fact that there is no health. Well, there is, but you regenerate constantly by default which means that, like a lot of newer FPS games, if you get shot you just have to hide for a bit to get better. Initially I didn&#8217;t have a problem with this system. In fact, considering the setting of human augmentation it seems to make more sense in DX than anywhere else. However, in retrospect I can say it removed a lot of the urgency from situations. If I was feeling lazy and there was a single enemy, I&#8217;d just sneak up as close as a I could and then charge to do a take down, fully cognizant of the fact that if he gets a shot off, all I have to do is sit on my ass for 20 seconds. That is unless he head shots me or has a powerful enough weapon&#8230;</p>
<p>In the original DX, you had all sorts of fun because you were damaged. Getting through the next scenario might not be difficult but if you were out of medkits and had 10 health, getting through suddenly becomes a lot more challenging. There&#8217;s nothing like sneaking up on an enemy knowing that if he turns around it doesn&#8217;t matter if he&#8217;s armed with a feather duster, you&#8217;re fucked. Then there was fun stuff like, if you were hit in the arm enough, your aim got all wonky. If you were hit in the legs, you were slowed to a crawl. None of that happens in the new game, and it&#8217;s difficulty shows it.</p>
<h3 id='Cover-System'>Cover System</h3>
<p>Another change was the addition of a third person cover system. Honestly, this change was very well done and a welcome modification of the original game play. In the original game, you had the ability to lean around a corner to scope out what was there, but the cover system allows you to have a much better idea of what&#8217;s going on around you. On one hand, it&#8217;s kinda bullshit because you can see over walls that you&#8217;re crouched behind, but on the other hand I imagine it as sort of an extension of the main character&#8217;s intuition. The ability to see a room, see the enemies, crouch and still piece together what&#8217;s going on based on sound. Besides, you&#8217;re equipped with a radar system that can &#8220;see&#8221; practically everything, so why not?</p>
<p>The bottom line is that the cover system is just a formalization of the techniques you&#8217;d use in the first game if you were any good at it, and the ability to move quickly between cover is a definite improvement over the first game in which you&#8217;d crouch walk instead of doing a leaping somersault.</p>
<h3 id='Take-Downs'>Take Downs</h3>
<p>Related to the cover system you also have a third-person take downs. As a melee aficionado, I was disappointed that the game eliminated melee weapons. However, I&#8217;m still conflicted about it. The take downs were nice, very cinematic and also very useful. I would&#8217;ve have been able to complete a non-lethal stealth play through without them. Really I&#8217;m only apprehensive because they were so easy to achieve. Walk up to one (or two with an augmentation) guys and, provided you have enough energy, it&#8217;s light&#8217;s out. No finesse required, other than getting close to them without getting your head blown off.</p>
<p>In the original game, it was difficult to make it through with a knife or a baton. I can&#8217;t count the number of reloads I&#8217;ve had to do because I snuck up on someone, uncrouched and then fucked up the execution of a melee &#8220;take down&#8221; in the original.</p>
<p>I also don&#8217;t get why a takedown takes the same sort of energy as your augmentations. I mean, does it take as much energy to punch two dudes out as it does to turn invisible for 3/5/7 seconds? Maybe, but I think if they needed to limit the amount of take downs you could do (they did), then I think a cooldown period would&#8217;ve done the job better. Particularly because it&#8217;s tough to gauge how much energy you&#8217;re going to need in situations. For example, if you wanted to cloak and take someone down you need to make damn sure that you&#8217;ve got a full energy bar left by the time you reach your target or you&#8217;re just going to stand there.</p>
<p>All in all, I could take them or leave them. The take downs were fun to execute, even if they were too easy, and I suppose it makes sense that a consummate badass would be able to snap your neck or choke you out pretty much on a whim. </p>
<h3 id='Boss-Fights'>Boss Fights</h3>
<p>This is also the first time DX has had true boss fights. In the original you had climactic moments, and you killed a lot of important NPCs who were tough and armed like bosses, but there were no true bosses. Personally, I&#8217;m of the opinion that boss fights are contrived and this was no exception. Perhaps it makes a bit more sense considering the story line and the whole idea of augmented super warriors, but if they would&#8217;ve stayed true to the original and just integrated them into a level it would&#8217;ve been a lot more fun and a lot less frustrating than a true boss &#8220;arena&#8221; complete with ammunition and usually a novel way to destroy your foe. Not to mention it would&#8217;ve probably been a lot more challenging if they just showed up in the middle of a level and fucked you up instead of having the whole cliched cut scene.</p>
<p>The other point I&#8217;ll make here is that while the game did a good job making sure that the rest of the game was doable without killing anyone, when it came to the bosses you were forced to be lethal. I don&#8217;t really have a problem killing the bosses and sparing their lesser guards, but it was a huge pain in the ass to arm myself with lethal weapons at the beginning of each boss fight. For the second boss in particular it was extremely annoying that I had to find lockers, drop non-lethal items and ammo out of my inventory so I could pick up a machine pistol and some ammo &#8230; all while being chased. I guess that&#8217;s what I get for being non-lethal and having to kill someone.</p>
<h3 id='Hacking'>Hacking</h3>
<p>Hacking is one gameplay addition that I think the designers did right and better than the original. The hacking minigame was a challenge and different each time. It added a level of difficulty to opening a door that wasn&#8217;t present in the first game (where all you had to think about was &#8220;do I have enough skill/lockpicks/multitools to do this?&#8221;). It was nice that sometimes I could break a level 5 system without an alarm, and sometimes a level 2 system would alarm right off the bat and make you sweat. I enjoyed all of the hacking in the stealth play through.</p>
<h3 id='Omissions'>Omissions</h3>
<p>There were some other, minor, gameplay elements that I would&#8217;ve like to have seen in the new game, although I can forgive their omissions. I would&#8217;ve really liked to have seen ammo types, although since ammo is now an inventory item and you&#8217;re always at a loss for space that might&#8217;ve been annoying. Melee weapons would&#8217;ve been a plus as I mentioned before although similarly an inventory problem. Weapon mods were sufficiently scarce, but didn&#8217;t apply to enough weapons. With my non-lethal play through virtually none of the mods would apply to my tranquilizer rifle so I put them all on my reserve pistol. Some wouldn&#8217;t make any sense (damage, silencer), and it came with a scope, but why can&#8217;t I have a laser sight? I think the only mods I could actually apply to it were the reload speed mods.</p>
<p>None of these are that important however.</p>
<h2 id='The-World'>The World</h2>
<p>First off, let me say unequivocally that the level design was great. The levels provided numerous paths to take for virtually every scenario. The city hubs were atmospheric and suitably dirty and complicated. The facilities were well thought out and believable. The game seems to do squalor and sophistication with the same ease. This was a hallmark of the original Deus Ex, although the original seemed to tend toward the dingy post-apocalyptic side of the spectrum for the majority of the time. Perhaps I am just unaccustomed to the current state of PC gaming, but I was very impressed with the look and feel of the game.</p>
<p>The world told of through the various scattered e-books (not datacubes yet, I guess), newspapers, emails etc. seems realistic and, importantly, it seemed to connect well with the world of the original. There are a lot of juicy references for old players, like Manderley, TTong (who you actually get to see at one point), and the NSF.</p>
<p>That said, the immediate world that you play in seems much smaller. You globe trot, which is important for a Deus Ex game considering the original took you all across the world, but three of these locations you only see as a singular level. Albeit a singular, <em>well-designed</em> level, you still don&#8217;t get a chance to venture out before being choppered elsewhere. That&#8217;s similar to the first game where the only <em>cities</em> you truly explore are New York and Hong Kong, (I guess you might be able to count Paris, although it&#8217;s different) but there were many many many peripheral locations in those cities and between your visits to them. The original had much more content and had many more levels without a lot of time being spent doing pointless side-quests. I guess I shouldn&#8217;t be surprised in the age of DLC.</p>
<p>To make things worse, it seems like most of the places you visit don&#8217;t have any real secrets to find. The original had many little nooks and crannies to explore unrelated to the advancement of the storyline. To give an example: In the original Deus Ex, there was actually a very small secret MJ12 facility beneath the streets very early on in the game. You don&#8217;t encounter MJ12 as part of the story until <em>much</em> later, but if you find it you raise questions like &#8220;who the hell were those dudes with Roman numerals on their helmets carrying combat rifles in the sewers?&#8221; They weren&#8217;t part of any quest at that point. No one ever directs you to the facility, you just have to find them on your own. Now, I could be making an ass out of myself because there very well could be secrets like this in the new game. In fact, it could be rife with them <em>but</em> I can say that I didn&#8217;t find anything that surprising and <em>I was looking</em>.</p>
<p>The core issue I have with the immediate world is that it was too efficiently designed. There are different paths and doors to hack, storage units to break into, etc. but almost everything is there for a purpose. Every ladder, every vent, every corridor is there as part of some type of quest. Too many times I was called back to a room I had already broken into (the hacker in my character can&#8217;t stand a locked door) for some scripted event to happen. Without the reward of finding new places and secrets, I almost felt as though it was pointless to explore since the game would effectively take me to every place worth going. That&#8217;s not a good feeling in a Deus Ex game.</p>
<h2 id='The-Story'>The Story</h2>
<p><strong>This part has spoilers for both Deus Ex and DX:HR <a href="http://blog.codezen.org/2011/08/29/a-fans-review-of-deus-ex-human-revolution/#Conclusion">[skip]</a></strong></p>
<p>Finally, the story. Deus Ex had a lot of strong points, but its story was the strongest. It was vast in its scope. Your point of view shifted wildly as you played through the game. You were surprised and betrayed and truly felt the effect of your choices.</p>
<p>DX:HR tries to pull off the same feat. It does a much better job than the sequel-that-shall-not-be-named, but I still ended the game disappointed. I feel like I anticipated every twist and turn. The first time we heard of Pan&#8230; Pan&#8230; Panchaea? However you spell the arctic research facility, I knew I was going to be visiting it. The LIMB clinic biochip replacement because of the glitches? I <em>knew</em> that I should avoid it. The instant that it was revealed that Dr. Reed was &#8220;dead&#8221; I knew she wasn&#8217;t (although I admit I doubted myself when reading her autopsy).</p>
<p>I&#8217;m not sure why. Maybe it&#8217;s because I can never play a Deus Ex game for the first time again. Maybe I&#8217;m just not 15 anymore, but I&#8217;ve convinced myself that it&#8217;s more than mere experience that&#8217;s made the difference.</p>
<p>I felt that the choices that I made were of much less consequence than in the first game. This might be another place where I&#8217;m making an ass out of myself because I&#8217;ve only done one play through so I haven&#8217;t really seen how things <em>could&#8217;ve</em> turned out, however I feel that I have a grasp on the scope of the choices. On re-evaluating the choices in the first game I guess that they didn&#8217;t really have much effect on the overall story, but they had a psychological effect and they weren&#8217;t always obvious. The best example from the original is that I didn&#8217;t know, until my third play through (or so) that you could stay back (despite his urging) and save your brother, Paul. I always just assumed that I was supposed to run and he was supposed to die. Admittedly if you save him or he dies it has little effect in the long run (in one mission you have to recover his body if he&#8217;s dead, otherwise you don&#8217;t that&#8217;s about it &#8212; other than having him around your home base) but it&#8217;s psychological. I saved my brother, that&#8217;s important. Another big choice in the original was to kill Agent Navarre in the airplane. Basically you&#8217;re choosing whether you defect from UNATCO now or later, and the difference is very slight in the overarching storyline, but psychologically at the time of making the choice you feel like you have reached a giant fork and that feeling is all that&#8217;s important. DX:HR evoked no such feelings and each choice was obviously presented. The choice whether or not to frame Taggart is fun, but it&#8217;s effect is immediate and you never feel like it&#8217;s going to change the next steps of the game in any important way. Same with the biochip replacement.</p>
<p>I also mentioned betrayal. In the original Deus Ex, there was <em>nothing</em> more mind-blowing than escaping a prison complex full of secret police only to realize it&#8217;s in the basement of the department you used to work for. Yep, this super secret prison is actually right there where you happily and obliviously worked for the first couple of missions. It was totally shocking. That&#8217;s not a twist you can anticipate just by being aware of common cultural tropes.</p>
<p>The story suffers from the same fatal flaw that the level design did though. It&#8217;s effective and not much more. I can say that the story left me in the dark in terms of what I was going to be doing next, up until the very end. I didn&#8217;t know I was going to Shanghai until I was two minutes from being there. When I woke up in a cargo pod in Singapore, it was news to me. The story does have that going for it: it got me from one place to another with a purpose. If this was <em>any other game</em> that would be enough, Half-life even made its name doing this. But this isn&#8217;t just any game, this is Deus Ex.</p>
<p>The original story dealt with the Illuminati, the world government, secessionists. Conspiracy on an unknown number of levels that you had been thrust into as a wildcard. This story attempted to weave those elements into it (the Illuminati are mentioned, the crazy radio DJ ranting about the Bilderbergs, etc.) but failed to really make me feel like I was taking part until the last minute. In essence, the new storyline was attempting to weave conspiracy and corporate espionage into the main story, which was the most basic and utterly <strike>over done</strike> classic save-the-girl storyline. Here&#8217;s the true problem: JC Denton was a government operative that felt betrayed by the system that created him. JC was out for Truth with a capital T. The Truth to destroy those that had made and subsequently deceived him. Adam Jensen, as much as I loved playing him, was a bodyguard trying to get his woman back.</p>
<h2 id='Conclusion'>Conclusion</h2>
<p>Don&#8217;t get me wrong, this game was a lot of fun. I&#8217;m already planning another play through because, despite the fact that the choices were obvious and anemic, I&#8217;m interested in how the game changed and how it would play if I couldn&#8217;t open literally every door and hack every computer I found. It&#8217;ll also be nice to try out some of the more aggressive augmentations. Perhaps on this run through I&#8217;ll discover secrets and realize my previous statements are false or come to a greater appreciation of the game in general.</p>
<p>All in all, it&#8217;s worth it to check out, even if it isn&#8217;t as good as the original. This is definitely not a game that will be forgotten and it gives me hope that the next iteration will be even better. Hopefully, with strong reviews and sales, we won&#8217;t have to wait another 10 years either.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/08/29/a-fans-review-of-deus-ex-human-revolution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Taking Personal Notes</title>
		<link>http://blog.codezen.org/2011/08/24/taking-personal-notes/</link>
		<comments>http://blog.codezen.org/2011/08/24/taking-personal-notes/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 17:01:01 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=391</guid>
		<description><![CDATA[I&#8217;ve just started on a new team at work, which essentially means I have a clean slate for the first time since I got out of college and moved to Austin for IBM three years ago. Of course, since then, I&#8217;ve had a good three years of work experience which, while certainly not impressive, means [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just started on a new team at work, which essentially means I have a clean slate for the first time since I got out of college and moved to Austin for IBM three years ago. Of course, since then, I&#8217;ve had a good three years of work experience which, while certainly not <em>impressive</em>, means that I can avoid all sorts of newbie mistakes that I made when coming into my first project.</p>
<p>One of those mistakes, I believe, was not taking proper notes. And by &#8220;proper&#8221; I mean digital, searchable, and accessible from anywhere. There are probably five or six notebooks of various dimensions that I&#8217;ve alternatingly filled with doodles and cryptic notes taken on phone calls. Paper notes seemed like a good idea at the time &#8212; especially coming out of a college classroom &#8212; but, as the project stretched on and I couldn&#8217;t find that damned random IP address or URL I scrawled on a piece of paper (<em>I was sure was around here somewhere!</em>), it was clear I had failed.</p>
<h2>Desktop Software</h2>
<p>There are a lot of neat programs out there that I discovered looking for a good solution. GNOME actually comes with <a href="http://projects.gnome.org/tomboy/index.html">Tomboy</a> (or <a href="https://live.gnome.org/Gnote">gnote</a> if you&#8217;re not down with the whole mono thing) which has the right idea with a wiki-ish syntax, but having to keep things synced with rsync or something doesn&#8217;t appeal. If I was going to hand synchronize I might as well use Vim. To wit, there&#8217;s actually <a href="http://code.google.com/p/vimwiki/">Vimwiki</a> which seems a bit anemic although it does a good job of keeping in the Vim spirit. There&#8217;s also <a href="http://www.jhorman.org/wikidPad/">Wikidpad</a>, a notepad-esque wiki with a bunch of fun icons and settings, that looked neat as cross-platform solution &#8212; I haven&#8217;t actually used a Windows box in years, but I still have a lingering fear that I&#8217;ll be in the improbable situation in which I need to look something up from one. Not a cold sweat kind of fear, but it&#8217;s still something that I&#8217;d like to be able to do.</p>
<p>All of these solutions require a client though and either it&#8217;s Linux only and ubiquitous or cross-platform and a bit of trouble. None of them sync either. Also, what about my phone? Notebooks are great because they&#8217;re portable, so I&#8217;d like to be able to access notes from a coffee shop or hotel without lugging my laptop or counting on laughable &#8220;business centers&#8221;. These solutions would probably be better suited to someone that wants to take notes in them instead of using a static text file on one machine. I&#8217;m sure there are lots of users out there like this, but I&#8217;m not one of them.</p>
<h2>The Cloud?</h2>
<p>There are some well known cloud solutions that run on Android and the desktop, like Evernote, which would get the job done but as some of my <a href="http://blog.codezen.org/2011/06/29/android-mediatomb-upnplay-music-anywhere/">previous work</a> attests, I really prefer to keep my data out of the cloud and on my home servers if at all possible and, even better, using open source. In the case of work notes, I have to be very careful with security. I can&#8217;t have unknowns looking at my notes when they include stuff like phone numbers and passcodes, hostnames and passwords, potentially confidential attachments in the future. Even (or maybe especially) if they double super secret swear not to look, they <em>can</em>.</p>
<p>Since I have no desire to write any sort of synchronization script, or an Android app, or to keep my data on someone else&#8217;s machines, I narrowed my choices down to browser based solutions. Every platform has a browser, right?</p>
<h2>Pocket Wikis</h2>
<p>There are a number of browser wiki implementations (like <a href="http://stickwiki.sourceforge.net/index.html">Wiki on a Stick</a>, or <a href="http://www.tiddlywiki.com/">TiddlyWiki</a>) that are predicated on simplicity such that you can toss them on a USB key and read them almost anywhere and usually write them too, with browser support. However these are minimal to the point of ugliness and I&#8217;m not the kind of person that carries a USB key in my pocket. Seems like a useful thing to have on hand, but I have some sort of psychological aversion to it because I&#8217;m deadly afraid of breaking it in half. $400 phone? No problem. $30 USB stick? Oh no! What if I break it!? Of course, you can apparently use these single-file wikis from your Android phone (i.e. using <a href="http://mgsimon.de/android/andtidwiki">AndTidWiki</a>), which is definitely cool considering you don&#8217;t need to have any connectivity and you&#8217;re much more likely to be carrying your phone than having your laptop out, but then to actually read on a different screen (or use a real keyboard to edit it) you have to be carrying your USB cable or use another transfer method at which point you&#8217;re back to hand synchronization. Having the cable when you want to edit probably isn&#8217;t too bad &#8212; it is part of your charger after all &#8212; and small notes like addresses and phone numbers can be input easily enough on a phone keyboard.</p>
<p>The pocket wikis might be great if you&#8217;ve got a companion USB key on you all the time, or you&#8217;re cool using it on your phone 100% of the time. Offline access is definitely a bonus and you don&#8217;t get more cross-platform than HTML/Javascript these days. I was close to using this solution, but I&#8217;m hardly ever without internet (thankfully) and it&#8217;s also very theoretically dangerous to be walking about with all of your important / confidential information on an easy to lose device. Add the minor annoyance of having to make major edits to the wiki with the phone plugged into a desktop and I wasn&#8217;t sold.</p>
<p>At this point, I&#8217;m basically down to using a web server with a real, honest to $DEITY wiki. That lets me use it from my phone or an arbitrary computer with a browser. There are a ton of real wikis out there. Wikipedia&#8217;s servers run Mediawiki which is entirely open source, but then again I&#8217;m not exactly going to be serving 100,000 articles to millions of users with this thing so that seemed like overkill. Enter MoinMoin.</p>
<h2>MoinMoin</h2>
<p><a href="http://moinmo.in">MoinMoin</a> is essentially the perfect solution. It&#8217;s a very well known and widely used piece of software. It&#8217;s written in Python so if I ever needed to screw with it, I could. As I mentioned before it&#8217;s a <em>real</em> wiki with all that that entails (stuff like templating, history, a real interface for editing, markup, etc.) but as the true coup de grace to the other solutions, it has a self-contained &#8220;Desktop Edition&#8221; which means that it&#8217;s got a low-performance low-resource built-in webserver that just works, pre-configured for localhost:8080. That&#8217;s <em>perfect</em> for a wiki that will essentially only have one user.</p>
<p>For added security, I left the Desktop Edition webserver running on localhost:8080 and use my favorite encryption method &#8211; SSH port forwarding &#8211; to forward the port to any machine that I&#8217;m using. Even my phone with ConnectBot, or to the spectre of an unknown Windows machine with PuTTY.</p>
<p>Digital? Check. Searchable? Check. Accessible anywhere? Check. We have a winner.</p>
<p>I&#8217;ve been using MoinMoin for about two weeks now and I&#8217;ve put everything in it. Passcodes, bug links, TODOs for work and home, lists of helpful resources, server lists, even detailed instructions for doing PowerPC netboots from an internal server. I feel better already.</p>
<p>For anyone interested in doing the same thing, MoinMoin includes <a href="http://moinmo.in/DesktopEdition">instructions</a> for a basic self-contained install. You can even keep it upgraded just by untarring over your current directory structure and restarting the web server script.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/08/24/taking-personal-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Dungeons of Dredmor</title>
		<link>http://blog.codezen.org/2011/07/17/the-dungeons-of-dredmor/</link>
		<comments>http://blog.codezen.org/2011/07/17/the-dungeons-of-dredmor/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 08:02:16 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[gaming]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=375</guid>
		<description><![CDATA[I grabbed &#8220;Dungeons of Dredmor&#8221; today on Steam. Gaslamp Games, the publisher, is promising Linux binaries, but I really wanted to crack into it, so I spent the $4.50 on it and fired it up in Wine. Let me say, for less than the price of a latte at Starbucks, it&#8217;s a whole lot of [...]]]></description>
			<content:encoded><![CDATA[<p>I grabbed &#8220;Dungeons of Dredmor&#8221; today on Steam. Gaslamp Games, the publisher, is promising Linux binaries, but I really wanted to crack into it, so I spent the $4.50 on it and fired it up in Wine.</p>
<p>Let me say, for less than the price of a latte at Starbucks, it&#8217;s a whole lot of fun. It definitely calls forth the memories of Nethack and all of its other rogue-like brethren. It also is a bit reminiscent of Diablo (a similarity given a nod with the Horadric Lutefisk Cube), but in true rogue like fashion, it&#8217;s less about story and more about trying to squeeze the most out of a character before you die.</p>
<p>Yes. Permadeath. I was pleased to see that it&#8217;s on by default &#8211; although even having an option is further evidence that it&#8217;s walking the fine line between Nethack and Diablo 2 (which implemented permadeath as optional &#8220;hardcore mode&#8221; after beating the game once through). As always it&#8217;s both a blessing and a curse. Blessing because it makes you feel the fear of real death, a feature lacking in many modern games where a death means hitting F9 and restarting from where you were two minutes previously. Permadeath adds to the tension which is why it&#8217;s the hallmark of a rogue-like. It&#8217;s a curse because, obviously, it can mean that you just spent 5 hours and have nothing to show for it except another run at your high score.</p>
<p>My top score is about 12k. It&#8217;s not impressive, but after maybe 10 characters I&#8217;m finally getting the hang of it. Unfortunately there is no manual, so it seems that, aside from a very basic tutorial that covers the barest essentials (and will be old hat for rogue veterans), you&#8217;re basically on your own to figure out what everything means.</p>
<p>There&#8217;s a good selection of (34!) base skills, each with a linear progression between three and eight feats/skills/spells you can add beyond the initial one granted just by choosing the base skill. You get one point per level. Now, a linear tree in a game like Dragon Age was very disappointing (and indeed I was kinda disappointed with Dragon Age from a mechanics point of view), but this is a perfect optimization for a rogue like with permadeath. A broad set of base skills with shallow skill trees following just means you don&#8217;t spend much time playing an identical character if you die a couple of times. Each base skill gets you started off right so you can tell the difference in play style immediately. Very important when you may be starting over dozens of times.</p>
<p>A fresh character can choose 7 base skills to build upon. 7 skills is plenty to make sure your character is broad enough to survive the game. There&#8217;s also a good mix between wizard, rogue, warrior and crafting skills so there&#8217;s plenty there for characters of all stripes. As an added bonus, they added a &#8220;last choice&#8221; option (in case your previous build didn&#8217;t get as far as you thought it should have) and a &#8220;random&#8221; option which I&#8217;m sure will be the basis for a lot of fun for gamers seeking a new challenge. Unfortunately, the only way to view the skills in a tree is to start a character and look at the sKills (sic) menu. On one hand this encourages experimentation but on the other hand I&#8217;d like to know what I&#8217;m getting into. What does &#8220;Necronomiconomics&#8221; mean? Or &#8220;Viking Wizardry&#8221;? You have no clue until you start a character.</p>
<p>Aside from skills, you have a huge amount of character attributes. These aren&#8217;t your normal D&amp;D traits either. Your primary attributes are &#8220;Burliness&#8221;, &#8220;Sagacity&#8221;, &#8220;Nimbleness&#8221;, &#8220;Caddishness&#8221;, &#8220;Savvy&#8221;, and &#8220;Stubborness&#8221;. In addition there are many other stats, like magic resistance, chance to block, resistances, etc. It&#8217;s a nice level of complexity. Your character also has your typical &#8220;slots&#8221; : melee weapon, ranged weapon, torso, head, feet, shield, a couple of magic rings and a necklace all of which can be filled with all manner of magical and cursed trinkets.</p>
<p>Battle is pretty straightforward turn based. Lots of different damage types. Plenty offensive and defensive skills to use. It&#8217;s possible to block, dodge and counter as well as other skill specific extras automatically employed in combat (like blackjack). Some monsters seem to be immune to some skills. I haven&#8217;t gotten far enough to see if there are any real nasties (like physical immunes or ranged casters), but I haven&#8217;t been disappointed so far. The set of templates seems a bit small, but again I&#8217;ve only gotten to level 2 so I can&#8217;t judge.</p>
<p>Crafting is also neat and sufficiently complex. If you choose a crafting skill, you usually start with some device to activate and a set of basic, though useful, recipes. As you go through the game you can expand your repertoire by finding bookcases which teach you new ones. It&#8217;s especially useful for keeping a ranged character equipped with ammunition or a mage stocked with <del>booze</del> mana (yes they are equivalent). Turning ingots into 9 bolts can be very helpful when luck hasn&#8217;t provided you with enough. Traps are also craftable, but since the dungeons are absolutely rife with the things, I&#8217;ve found that they&#8217;re more useful to just pick up and reuse (that is, if you have the skill to do that).</p>
<p>Honestly, the menus and interface are the weakest part of the game. Icons in general are all too small. It&#8217;s very difficult to tell the difference between different wands / bolts / food items in your belt. The inventory management had the right idea (set # of squares like Diablo, each item takes one square and some are stackable) and even a much-needed &#8220;sort&#8221; function that I quickly became a fan of, but it&#8217;s a bit too clicky for me. For example, as far as I can tell, there&#8217;s no way to just &#8220;pick-up&#8221; an item&#8230; you need to pick it up and place it in your inventory. It doesn&#8217;t matter if you&#8217;ve got enough space you have to click move click to get it done <strong>Correction:</strong> <em>Commenter eselyoutee notes that you can shift + click to automatically place it in your inventory. I also discovered you can just drag to your person.</em>.</p>
<p>Attributes, and stats (and other things like damage types and resistances) are symbolized by very small and incomprehensible icons. I&#8217;m starting to get the down pat, but when you&#8217;re comparing two different swords and it&#8217;s not obvious what their attributes are because it just shows &#8220;-weird icon- 2&#8243; or something, it&#8217;s a pain to try and decipher.</p>
<p>As mentioned, crafting is a well-done mechanic but the interface is kludgy too. For some crafting it&#8217;s simple. Take some &#8220;native gold&#8221;, put it in the ingot press, smelt, and there you are: two ingots of gold. But for some recipes that you actually have to look up, it&#8217;s a pain to look at the recipe, select it (at which point the game puts its red outline in the crafting slots) and then try and figure out what goes in there. The killer thing here is that the recipe interface knows if you&#8217;ve got the ingredients so why on earth doesn&#8217;t it just take them out of your inventory and get them ready for you to hit &#8216;smelt&#8217; or whatever verb it is? I don&#8217;t have eidetic memory, friends. <strong>Correction:</strong> <em>I&#8217;ve also discovered the &#8220;autofill&#8221; button under the boxes that blends in with the decor a bit. I still don&#8217;t get why it wouldn&#8217;t just automatically do that and return them to the inventory if you close without activating, but nonetheless it makes crafting easier.</em>.</p>
<p>Likewise the whole belt / active spell thing is harder to use than it needs to be. Like Diablo before it you have a left and a right click attack. Unlike Diablo it seems that the left click is always your melee attack, and your right click has to function as your ranged and all of your spells/skills. That in itself isn&#8217;t so bad (you&#8217;re going to want a melee attack no matter what kind of character you are), but in order to, for example, switch to your ranged attack instead of a skill, you have to either go into your inventory or hit SHIFT + # for your belt. I can&#8217;t say how many times I&#8217;ve been trying to use the hotkeys and gotten that reversed. Trying to switch to a skill and thinking I needed shift at which point I do something stupid like eat a piece of fruit and proceed to take a round of beatings from the enemies standing around me. In my opinion Diablo did this perfectly. Have some inventory you can quick switch to, but allow a set of keys (like number keys, or F keys) be assigned to any item / skill for either left or right click. That way I can setup the hotkeys any way that my brain wants to. I can make F1, F2, and F3 my favorite bolts / wands and then F5 and F6 my primary skills, etc. (I particularly like the F keys because on most keyboard they have built in groupings). The whole shift thing doesn&#8217;t work for my brain.</p>
<p>Of course, all of this interface griping is minimized if for no other reason than Dredmor is a turn-based game (again, in true rogue-like fashion). I can take the time to dick around in the inventory box and drag ingredients hither and yon because I have an infinite amount of time before anything else is going to happen to me. Even in battle, making a quick selection is unnecessary because (if I&#8217;m still alive) I could take ten minutes to make my next move. That said, it breaks the flow of the game, and making a mistake taking your turn will lead to (one of) your deaths.</p>
<p>Interface griping notwithstanding, there&#8217;s a lot of fun material in Dredmor. I haven&#8217;t gotten very far into it, but there are myriad items, a bunch of damage types, a massive number of different spell effects (both negative and positive), tons of skills, and a whole lot of crafts. The game is a very light-hearted romp from its items and skills to its art direction and monster utterances. Combine that depth and irreverence with randomly generated dungeons and you&#8217;ve got quite a time sink on your hands.</p>
<p>All in all, I&#8217;m looking forward to playing it more and I&#8217;m hoping that some of the interface improvements can be made in subsequent patches. And c&#8217;mon&#8230; at $5 even those that aren&#8217;t pre-established rogue-like fans are practically guaranteed to get their money&#8217;s worth and more.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/07/17/the-dungeons-of-dredmor/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Android + Mediatomb + UPnPlay = Music Anywhere</title>
		<link>http://blog.codezen.org/2011/06/29/android-mediatomb-upnplay-music-anywhere/</link>
		<comments>http://blog.codezen.org/2011/06/29/android-mediatomb-upnplay-music-anywhere/#comments</comments>
		<pubDate>Thu, 30 Jun 2011 04:31:02 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[android]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=262</guid>
		<description><![CDATA[To be clear, this post is about hitting a UPnP (streaming media) server securely from outside of the LAN. If you just want LAN access, all you need is MediaTomb and UPnPlay. No special config. In addition, as some Redditors pointed out, you can use Subsonic for an easier open source solution. I already had [...]]]></description>
			<content:encoded><![CDATA[<p><strong>To be clear, this post is about hitting a UPnP (streaming media) server securely from outside of the LAN. If you just want LAN access, all you need is MediaTomb and UPnPlay. No special config.</strong></p>
<p><strong>In addition, as some Redditors pointed out, you can use Subsonic for an easier open source solution. I already had MediaTomb and I wanted to use it. In addition, this solution should work with all other UPnP devices (which Subsonic / Google Music don&#8217;t run on) and for video streaming (with vPlayer, or another app UPnPlay can talk to) as well.</strong></p>
<p><strong>NO ROOT REQUIRED</strong></p>
<div id='toc' class='post-262'><div id='toc_title'>Contents</div>
<ul><li><a href="#Introduction">Introduction</a></li>
<li><a href="#MediaTomb">MediaTomb</a>
<ul><li><a href="#Installation">Installation</a></li>
<li><a href="#Configuration">Configuration</a></li>
<li><a href="#Starting-the-server">Starting the server</a></li>
<li><a href="#Adding-media">Adding media</a></li></ul></li>
<li><a href="#SSH">SSH</a>
<ul><li><a href="#KeepAlive">KeepAlive</a></li></ul></li>
<li><a href="#External-Connection-Setup">External Connection Setup</a></li>
<li><a href="#UPnPlay">UPnPlay</a>
<ul><li><a href="#Test-MediaTomb-over-LAN">Test MediaTomb over LAN</a></li>
<li><a href="#Setting-up-a-WAN-server">Setting up a WAN server</a></li></ul></li>
<li><a href="#Secure-Connection-via-SSH-with-ConnectBot">Secure Connection via SSH with ConnectBot</a>
<ul><li><a href="#Setup-a-Port-Forward">Setup a Port Forward</a></li></ul></li>
<li><a href="#Finally-UPnPlay-WAN">Finally, UPnPlay WAN</a>
<ul><li><a href="#If-you-didnt--couldnt-clone">If you didn&#8217;t / couldn&#8217;t clone</a></li>
<li><a href="#UPnPlay-Troubleshooting">UPnPlay Troubleshooting</a></li></ul></li>
<li><a href="#Concluding-Notes">Concluding Notes</a></li>
</ul>
</div>
<h2 id='Introduction'>Introduction</h2>
<p>So Juliette and I ditched our respective cellphones (hers the aging dumbphone LG Lotus, mine the hard fighting but obsolete HTC Hero) with EVO3Ds, or 3VOs as the internet has nicknamed them. The phones are really cool, but I also noted that HTC advertised them as DLNA capable. This support <strong>isn&#8217;t required</strong> for these steps, they should work anywhere that UPnPlay works (Android 1.6+ AFAICT), but it was the inspiration for the idea.</p>
<p>DLNA is a collection of companies agreeing on standards, and UPnP (Universal Plug &#8216;n Play) is their set of standards for device cooperation. A lot of devices have come out in the past couple of years that interoperate. Very cool, although my first tangle with UPnP was with my PS3 a couple of years ago and it was very frustrating because the PS3 is a mis-mash of bad formats and pointless restrictions. Fortunately, though, that meant that when I started to experiment with the UPnP capabilities of the 3VO, I had a good starting knowledge. It still took me a bit of time to figure out how to be as remote as I wanted to be though. MediaTomb and the HTC Sense music player work pretty well together over WiFi but the Sense player has some drawbacks.</p>
<ul>
<li><strong>Can&#8217;t play Oggs</strong>. This was a major WTF. I couldn&#8217;t figure out why it wasn&#8217;t listing my music. One of the reasons I bought Android (among many) was that it had better support for open formats, particularly Ogg Vorbis, which is shown to have better quality at lower bitrates (very important when streaming) and, even better, it&#8217;s a totally free and unencumbered format. For an interim, in the house solution I settled on MP3 which the Sense player picked up immediately.</li>
<li><strong>No built-in WAN support</strong>. This is typical of a lot of players, and the HTC player (along with a lot of them in the Market) won&#8217;t even let you try to hit a remote server unless you&#8217;re on a WiFi connection. That&#8217;s all well and good, but sucks if you&#8217;re planning on streaming while driving or any other place outside of your home.</li>
</ul>
<p>Given those disappointments, I tried a lot of approaches to solve the problem. One approach that was suggested in various forums was to setup a VPN, which would allow the Sense player to think it&#8217;s on your home network and make things like UPnP server discovery work out of the box. That&#8217;s a huge pain in the ass to setup, especially if you&#8217;re security minded, and most importantly it <strong>didn&#8217;t work</strong>. I&#8217;m not a networking expert so it&#8217;s possible that my VPN setup was screwed up (although my Android was able to connect), but it was hard enough in the end that I didn&#8217;t want to maintain the solution anyway. Another solution I thought of would just be to run an NFS server, or another remote filesystem but those require root, which 3VOs don&#8217;t currently have despite a promise from HTC to unlock soon.</p>
<p>So, without further ado, the <strong>rootless</strong> way to stream your media anywhere securely.</p>
<blockquote><p><strong>NOTE:</strong> Non-Linux users can get a bit of strategy from this post, but not very many details. There are Windows UPnP servers that will work insecurely in this manner, just not MediaTomb, and there are some Windows SSH servers, but I don&#8217;t know anything about them. Unless you think you&#8217;re confident enough to translate the instructions, turn back now.</p></blockquote>
<h2 id='MediaTomb'>MediaTomb</h2>
<p>The first thing you have to do is setup a server to serve your content UPnP style. My favorite piece of software for this is <a href="http://mediatomb.cc">MediaTomb</a>. It&#8217;s free, it&#8217;s open source, and I already had familiarity with it getting the aforementioned PS3 to work with it. It also has a lot of neat transcoding options, which were invaluable for the PS3, but fortunately aren&#8217;t necessary for streaming Oggs and MP3s this way. If you&#8217;re serving FLACs (which are pretty high bitrate for streaming over 3G/4G) or another exotic format that your phone won&#8217;t play then I refer you to the <a href="http://mediatomb.cc/dokuwiki/transcoding:transcoding">MediaTomb wiki article on transcoding</a> and suggest that you judiciously use Google.</p>
<h3 id='Installation'>Installation</h3>
<p>Most modern Linux distros have a mediatomb package. Throughout this post I&#8217;ll assume Arch Linux, but the translation between pacman and apt-get or yum should be pretty straightforward. From the terminal:</p>
<p><code><br />
$ sudo pacman -S mediatomb<br />
</code></p>
<h3 id='Configuration'>Configuration</h3>
<p>I chose to run MediaTomb as my user because it&#8217;s better practice than having root daemons opening ports, even if they&#8217;re secure. Just running mediatomb from the command line will make it generate the default user config <code>(~/.mediatomb/config.xml)</code> along with an empty database file. The output of the daemon is quite useful and the default config is basically going to be right for our purposes. There are just two suggested tweaks to modify the default config:</p>
<h4>Port and Interface</h4>
<p>You&#8217;re going to need to specify a port, because Mediatomb will use one randomly if you don&#8217;t. That&#8217;s usually not a problem because generally these servers are &#8220;discovered&#8221; by the streaming device, but in our case (usage from WAN) we have to do the discovery step for the application and you don&#8217;t want the port to change. In addition, you want to be serving this content to your external network device, in my case (and most cases for wired connections) <code>eth0</code>. I added the following to my config <code>(~/.mediatomb/config.xml)</code>:</p>
<pre>&lt;?xml ...&gt;
    &lt;config ...&gt;
        &lt;server&gt;<strong>
            &lt;port&gt;49153&lt;/port&gt;
            &lt;interface&gt;eth0&lt;/interface&gt;</strong>
...</pre>
<p>That&#8217;s pretty much it for the <code>config.xml</code>. If you&#8217;re shy of opening an editor or messing with XML, both of these settings can be changed with command line switches when you start the server as well. You&#8217;d just use the <code>-e &lt;interface&gt;</code> and <code>-p &lt;port&gt;</code> options on invoking in the next step. Being familiar with the XML config is only really necessary for more advanced options, like transcoding.</p>
<h3 id='Starting-the-server'>Starting the server</h3>
<p>Starting the server is as easy as invoking MediaTomb from a terminal:</p>
<pre>
$ mediatomb
</pre>
<p>It will output some useful information. In particular you want to see:</p>
<pre>
INFO: Configuration check succeeded.
INFO: Initialized port: 49153
INFO: Server bound to: [interface IP]
INFO: MediaTomb Web UI can be reached by following this link:
INFO: http://[interface IP]:49153/
</pre>
<p>Where interface IP is most likely your LAN IP. Mine is <code>192.168.1.25</code> for example.</p>
<h3 id='Adding-media'>Adding media</h3>
<p>Now for the most important (and fortunately easiest) part: getting MediaTomb to serve up some content. MediaTomb has a nice and simple web interface that runs on the same port as the server. As it says in the above output you can hit the interface with the link <code>http://[interface IP]:49153</code>. Just paste that into the address bar of your favorite (Javascript capable, sorry lynx) browser and you should be greeted with a screen like this:</p>
<div id="attachment_271" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.codezen.org/wp-content/uploads/2011/06/mediatomb2-e1309299281572.png"><img src="http://blog.codezen.org/wp-content/uploads/2011/06/mediatomb2-e1309299281572-300x72.png" alt="Example MediaTomb interface" title="Example MediaTomb interface" width="300" height="72" class="size-medium wp-image-271" /></a><p class="wp-caption-text">Example MediaTomb interface</p></div>
<p>I won&#8217;t break down the details very much (this post is only tangentially about MediaTomb), but you initially go to the Filesystem section (the one I&#8217;m on in the screenshot), browse to your media using the lefthand tree, select the root directory you want to serve up (in my case <code>music-ogg</code>) and then you hit the add button (looks like a plus in the upper right corner), and optionally tell MediaTomb to watch it (show autosync options with the plus with the circle of arrows around it). After setting that up, you can see the files that are being served in the Database section. The Database section is occasionally useful as it can give you details about how MediaTomb is using a file. In particular it&#8217;s MIME-type which is how UPnP clients figure out which files they can play.</p>
<p>I setup mine such that it recursively monitors my music directory with inotify, which means I can drop files into the directory and they&#8217;ll automatically be served. This is probably the best way, unless you want to be more selective about what you&#8217;re serving up.</p>
<p>It may take a bit to add your whole directory to the database, but the server is actually operational as it adds the directory, so don&#8217;t let that deter you from continuing.</p>
<h2 id='SSH'>SSH</h2>
<p>The next step is all about security when you connect to MediaTomb. You should install an OpenSSH server. Most likely your install already has it, but it might not be running. If it doesn&#8217;t have it, then you should install it and start it:</p>
<pre>
$ sudo pacman -S openssh
$ sudo /etc/rc.d/sshd start
</pre>
<p>If you&#8217;re running pretty much any distro other than Arch, you&#8217;d install <code>openssh</code> or <code>openssh-server</code> and use another <code>/etc/init.d/</code> script instead. Look for <code>sshd</code> or <code>openssh-server</code>. Check your distro&#8217;s wiki or Google if you need help starting the SSH daemon.</p>
<p>By default, the SSH server runs on port 22.</p>
<p>We&#8217;ll connect to MediaTomb via SSH later in the post.</p>
<h3 id='KeepAlive'>KeepAlive</h3>
<p>There is one foible with SSH that should be ironed out now too. We&#8217;re going to setup a long term connection to the server over SSH, but a lot of routers and hardware will terminate a connection if it&#8217;s idle for too long. That&#8217;s not a problem if you&#8217;re going to be streaming over the connection the whole time, but what if you stop and start again? The answer is KeepAlive which, as the name implies, keeps the connection alive by sending empty traffic every so often to inform hardware that the connection is still necessary.</p>
<p><strong>UPDATE</strong>: I believe I got this wrong on the initial posting. In order to enforce this from the server side, instead of the client side (which is what <code>~/.ssh/config</code> affects), you need to add the following to <code>/etc/ssh/sshd_config</code></p>
<pre>
ClientAliveInterval 60
ClientAliveCountMax 3
</pre>
<p>This will send the client some traffic every minute to keep the connection alive, and will timeout the connection on the server side after 3 packets have been lost, for a total of 3 minutes of the client not responding (i.e. not returning the packets which is different than just sitting idle).</p>
<h2 id='External-Connection-Setup'>External Connection Setup</h2>
<p>If you&#8217;re already familiar with opening ports on your router and addressing your LAN from outside the house, just forward your SSH port to the right machine and skip this part.</p>
<p>The first is that you&#8217;re going to need a way to address your home computers. I use <a href="http://dyndns.org">DynDNS</a> for a free dynamic hostname, and <a href="http://ddclient.sf.net">ddclient</a> to keep the dynamic hostname up to date automatically.</p>
<p>You also need to setup your router to automatically forward traffic it receives on the SSH port (22 unless you changed it) to your server. Look for options in your router config like &#8220;Applications and Gaming&#8221; (which is a stupid name for it, but that was it on my Linksys) or, more simply, &#8220;Port Forwarding&#8221;. Setup TCP forwarding to your machine running MediaTomb and SSH. This is made much easier if you either have your computer setup for a static LAN IP, or configure the router to hand out a consistent IP with DHCP to the server&#8217;s MAC Address so that the port forwards are always to the right machine.</p>
<p>This is pretty standard fare for home servers, but if this isn&#8217;t enough to figure out what you need to do, DynDNS has a little <a href="http://www.dyndns.com/support/kb/dyndns.html">walkthrough</a> that should help get you setup. They point you to portforward.com which will try to sell you some BS tool to do it automagically, but once you skip their advertisements they actually have decent information on a lot of router models. For all of these steps the only thing you should need is a browser, so don&#8217;t despair at the IE screenshots =).</p>
<h2 id='UPnPlay'>UPnPlay</h2>
<p>I searched for a long time for an app that supported WAN connections to MediaTomb and <a href="http://bebopfreak.wordpress.com/upnplayer/">UPnPlay</a> is the only option that I&#8217;ve found. It&#8217;s interface is a bit clunky, but it&#8217;s functional. You can grab it by searching for UPnPlay in the market or using this QR code via Appbrain:</p>
<div id="attachment_281" class="wp-caption aligncenter" style="width: 160px"><a href="http://blog.codezen.org/wp-content/uploads/2011/06/upnplay-qr.png"><img src="http://blog.codezen.org/wp-content/uploads/2011/06/upnplay-qr.png" alt="UPnPlay QR Code" title="UPnPlay QR Code" width="150" height="150" class="size-full wp-image-281" /></a><p class="wp-caption-text">UPnPlay QR Code</p></div>
<h3 id='Test-MediaTomb-over-LAN'>Test MediaTomb over LAN</h3>
<p><strong>This is optional, but getting UPnPlay to detect over LAN will make the WAN configuration much easier</strong></p>
<p>The first thing you should do when you get UPnPlay installed is test that your MediaTomb setup works via LAN. Get on to your WiFi, fire up UPnPlay and it <emph>should</emph> automatically detect MediaTomb. Under it, you should be able to access your media in various forms, either by file path or by a number of pre-defined groups (like Audio > Album, etc.). If UPnPlay doesn&#8217;t recognize MediaTomb, you&#8217;re in trouble, I would suggest checking the <code>mediatomb</code> output, or  running <code>mediatomb --debug</code> and seeing if the server even recognizes that it&#8217;s being connected to. If not, then your first step is to figure that out.</p>
<p>If you have to debug this step, I suggest quitting (hit back on the library list and it will confirm quit) and restarting UPnPlay each time you test a change. Supposedly you can refresh the devices from the menu, but I&#8217;ve had no luck with it.</p>
<h4>Directories, but no media</h4>
<p>If you can browse your directories, but none of the directories have any files, then UPnPlay most likely isn&#8217;t recognizing the media format. As I mentioned above, MediaTomb has a lot of nice transcoding options that I won&#8217;t cover here, but they can be used to present any sort of weird file as one that your phone can play, and transcode that file on the fly when requested. Just to test everything else is working I&#8217;d suggest getting some vanilla MP3s/Oggs and adding them to MediaTomb. Those should show up without any special settings.</p>
<h3 id='Setting-up-a-WAN-server'>Setting up a WAN server</h3>
<p>If everything above was hunky dory and you can access all of your media over WiFi, excellent. At this point, we&#8217;re going to prepare a WAN server definition for UPnPlay that won&#8217;t be used immediately but will make your life easier in a couple of steps.</p>
<p>First, enable WAN server:</p>
<pre>
Menu > Settings > Media Sources > WAN Server
</pre>
<p>Then, while UPnPlay has your MediaTomb server detected, long press the MediaTomb item in the library list and select &#8220;<strong>Clone WAN Server</strong>&#8221; You needn&#8217;t make any changes <emph>except</emph> changing the first box after &#8220;Host&#8221; to &#8220;localhost&#8221; or &#8220;127.0.0.1&#8243; instead of the IP that&#8217;s there. Hit OK and we&#8217;ll save that for later. Go ahead and quit UPnPlay too (hit back on the main screen, it will prompt you to quit).</p>
<h2 id='Secure-Connection-via-SSH-with-ConnectBot'>Secure Connection via SSH with ConnectBot</h2>
<p>At this point, you should have a functional MediaTomb installation and UPnPlay working (over WiFi for now). Now we&#8217;re going to <strong>turn off WiFi</strong> and use Android&#8217;s excellent SSH client, <a href="http://code.google.com/p/connectbot/">ConnectBot</a> to securely connect to the server. First things first, install ConnectBot by searching for it on the Market or using the following QR code:</p>
<div id="attachment_297" class="wp-caption aligncenter" style="width: 110px"><a href="http://blog.codezen.org/wp-content/uploads/2011/06/connectbot-qr.png"><img src="http://blog.codezen.org/wp-content/uploads/2011/06/connectbot-qr.png" alt="ConnectBot QR code" title="ConnectBot QR code" width="100" height="100" class="size-full wp-image-297" /></a><p class="wp-caption-text">ConnectBot QR code</p></div>
<p>Using ConnectBot you should be able to access your server, <strong>with WiFi off</strong> using the dynamic hostname or IP you setup above. From the initial screen, &#8216;ssh&#8217; should be selected in the combobox and you specify <code>user@external-hostname</code> for the connection. When you input that it should attempt to connect, prompt you for your user&#8217;s password, and drop you in a shell. You don&#8217;t need to do anything with the shell.</p>
<p>If you&#8217;re unable to connect, most likely your hostname/IP is wrong (or not setup), or the port forward from your router to your server is messed up.</p>
<h3 id='Setup-a-Port-Forward'>Setup a Port Forward</h3>
<p>Here&#8217;s the cool part. We&#8217;re going to forward the server&#8217;s MediaTomb traffic (port 49153 in my example) directly to your phone. The traffic will be encrypted well, and obviously you have to authenticate to get it setup so it&#8217;s <strong>much</strong> more secure than just letting MediaTomb accept anybody&#8217;s connection. Not to mention that leaving MediaTomb unencrypted and accessible to all is most likely illegal, depending on your country&#8217;s view of file sharing.</p>
<p>To do this, while you&#8217;re looking at your home server&#8217;s shell, hit:</p>
<pre>
Menu > Port Forwards
</pre>
<p>And then, to add one:</p>
<pre>
Menu > Add Port Forward
</pre>
<p>The nickname doesn&#8217;t matter. The type of port forward is &#8220;<strong>Local</strong>&#8221; (i.e. on the phone), and the source port should be <strong>49153</strong>. The destination is a bit trickier. It needs to be how the <strong>server</strong> would refer to the port if you were logged into it. Basically you want to set it to &#8220;[Server's LAN IP]:49153&#8243;, where that IP should correspond with the IP in the MediaTomb output when you invoked it. In my case the value is &#8220;192.168.1.25:49153&#8243;. If you&#8217;ve got your /etc/hosts setup correctly it could also be &#8220;hostname:49153&#8243;.</p>
<p>Once you have the port forward setup, from your phone&#8217;s browser you should be able to access the MediaTomb media screen without WiFi by going to <code>http://localhost:49153</code>. That translates to &#8220;this device (localhost, the phone) port 49153&#8243; and will work if the forward is active. <strong>NOTE:</strong> Make sure you include the &#8220;http://&#8221;! If you just put &#8220;localhost:49153&#8243; the browser will interpret this as a Google search!</p>
<h2 id='Finally-UPnPlay-WAN'>Finally, UPnPlay WAN</h2>
<p>To double check, at this point you should be able to:</p>
<ul>
<li>Use UPnPlay over the LAN</li>
<li>Setup an SSH port forward to your server, with no WiFi</li>
<li>See the MediaTomb web interface by going to &#8220;http://localhost:49153&#8243; (with the http part!)</li>
</ul>
<p>If you can do all of those things, you&#8217;ve basically got it! Now you just need to fire up UPnPlay when you&#8217;re not on the WiFi. In the library list you won&#8217;t see your MediaTomb server. If you did the clone step above, you&#8217;ll see &#8220;MediaTomb (WAN)&#8221;. Hit that, it should connect, and cause a &#8220;MediaTomb&#8221; item to appear. Then you just access your music through that normal &#8220;MediaTomb&#8221; item. Golden!</p>
<h3 id='If-you-didnt--couldnt-clone'>If you didn&#8217;t / couldn&#8217;t clone</h3>
<p>If you&#8217;re trying to setup the WAN server option, but for some reason you&#8217;re away from the LAN and couldn&#8217;t do the clone step above, then you can manually add the WAN server.</p>
<p>First enable the WAN Server (this was covered in the clone step too):</p>
<pre>
Menu > Settings > Media Source > WAN Server
</pre>
<p>And then, from the library list (the initial screen):</p>
<pre>
Menu > WAN Server
</pre>
<p>Then fill out the fields:</p>
<pre>
<strong>Name</strong> Should be the same as the LAN server (MediaTomb by default)
<strong>Host</strong> localhost : 49153
<strong>Description</strong> /description.xml
<strong>UDN</strong> uuid:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
</pre>
<p>Description is a path to the XML description of the server, so that&#8217;s the same for all MediaTomb servers. The UDN is the real pain in the ass and why cloning is so much more convenient. You can find the value for your server in the MediaTomb <code>config.xml</code> where it&#8217;s <strong>everything</strong> between the UDB tags <strong>including</strong> the uuid: part.</p>
<h3 id='UPnPlay-Troubleshooting'>UPnPlay Troubleshooting</h3>
<p>UPnPlay is a bit finicky. As I mentioned before, the interface is clunky but functional. Here are some tips:</p>
<ul>
<li><strong>UPnPlay seems to be unaware of network changes.</strong> If your connection changes (i.e. WiFi to 3G, 4G to 3G etc.), quit UPnPlay (hit back until it prompts to quit) and restart. Device refresh seems a bit odd and I spent a bit of time trying to connect over 3G only to realize that when I hit &#8220;MediaTomb&#8221; is was still trying to hit the LAN version. Tangentially, having the WAN server variant just spawn something that looks just just the LAN variant which you actually use is very confusing.</li>
<li><strong>If you can see your media files remotely you&#8217;re all set.</strong> Starting a song may take a bit to actually get traction (i.e. it fails to play the first five seconds a couple of times), but be patient. After the first song plays though I usually don&#8217;t have trouble moving on to the next track. Also, I haven&#8217;t tested the &#8220;Near Gapless Playback&#8221; option, but this might help between tracks.</li>
<li><strong>If you do lose connection without switching networks</strong>, check to make sure that your ConnectBot session is still active. If it&#8217;s closed, the port forward obviously won&#8217;t work.</li>
</ul>
<h2 id='Concluding-Notes'>Concluding Notes</h2>
<p>I didn&#8217;t cover automatically starting these up on boot. Currently, I start SSH with Arch&#8217;s <code>/etc/rc.conf</code>. Then, from <code>/etc/rc.local</code> I use <code>sudo jack -c mediatomb</code> to run the MediaTomb server as my user. <code>rc.local</code> is universal, as far as I know, but for starting daemons check your distro&#8217;s wiki.</p>
<p>I&#8217;ve tested this a bit around Austin. I haven&#8217;t had much luck (in general on Sprint) with 4G, but 3G seems to work consistently and stream Ogg files without taking too much of my upload bandwidth or stuttering. I&#8217;ve also tested it connecting from foreign WiFi and UPnPlay seems smart enough to use the WAN definition even if you&#8217;re hooked to WiFi (thankfully).</p>
<p>Clearly this is going to be highly contingent on your bandwidth on the server. If you&#8217;re in a low bandwidth situation, you can try transcoding into a lower quality stream but you might be better off with buying a bigger SD card =).</p>
<p>I haven&#8217;t attempted to get cover art to work. I also haven&#8217;t attempted videos, although UPnP (and UPnPlayer with some third-party video apps) supports it. I can&#8217;t see a reason it <emph>wouldn&#8217;t</emph> work however. I can say that streaming remotely, the Amazon cover art lookup doesn&#8217;t seem to work. I don&#8217;t have a problem with this as I&#8217;m more concerned with bandwidth and performance, but don&#8217;t expect it to work out of the box.</p>
<p>Lastly, Bebopfreak, UPnPlay&#8217;s developer, will not take support requests on this feature. I, on the other hand, would be happy to attempt to give pointers in the comments and update this little walkthrough with any finer points.</p>
<p>Good luck!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/06/29/android-mediatomb-upnplay-music-anywhere/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Nerd Do Well: I met Simon Pegg</title>
		<link>http://blog.codezen.org/2011/06/16/nerd-do-well-i-met-simon-pegg/</link>
		<comments>http://blog.codezen.org/2011/06/16/nerd-do-well-i-met-simon-pegg/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 19:00:32 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[personal]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=251</guid>
		<description><![CDATA[I managed to catch Simon Pegg at his Bookpeople (local Austin independent bookstore) signing of his humorous biography &#8220;Nerd Do Well&#8221; last night. I was completely starstruck. If you don&#8217;t count kernel hackers, I&#8217;ve never met anyone honestly famous before. I tried not to be too embarrassing, but he seemed cool. I also finally got [...]]]></description>
			<content:encoded><![CDATA[<p>I managed to catch Simon Pegg at his Bookpeople (local Austin independent bookstore) signing of his humorous biography &#8220;Nerd Do Well&#8221; last night. I was completely starstruck. If you don&#8217;t count kernel hackers, I&#8217;ve never met anyone honestly famous before. I tried not to be too embarrassing, but he seemed cool. I also finally got a chance to actually crack into the book while standing in line and I can at least say it&#8217;s a promising start.</p>
<p>Here&#8217;s another obligatory picture I got snapped (my crappy phone camera strikes again &#8211; looking forward to grabbing the EVO 3D on the 24th). Maybe someday I&#8217;ll post a scan of the signature. Clearly I was a blur of excitement. Don&#8217;t bother enlarging =(.</p>
<div id="attachment_252" class="wp-caption aligncenter" style="width: 310px"><a href="http://blog.codezen.org/wp-content/uploads/2011/06/IMG_20110615_201121.jpg"><img src="http://blog.codezen.org/wp-content/uploads/2011/06/IMG_20110615_201121-300x225.jpg" alt="Simon Pegg signs my copy of Nerd Do Well." title="Simon Pegg signs my copy of Nerd Do Well." width="300" height="225" class="size-medium wp-image-252" /></a><p class="wp-caption-text">Simon Pegg signs my copy of Nerd Do Well.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/06/16/nerd-do-well-i-met-simon-pegg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Das Keyboard: Awesome</title>
		<link>http://blog.codezen.org/2011/06/14/das-keyboard-awesome/</link>
		<comments>http://blog.codezen.org/2011/06/14/das-keyboard-awesome/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 20:55:30 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://blog.codezen.org/?p=234</guid>
		<description><![CDATA[From the last post you&#8217;d probably guess that I&#8217;d been playing through videogames and have completely exited the world of software, but it&#8217;s not true. I&#8217;ve been hard at work, on (unfortunately) real work. The day job. I can&#8217;t lie that it&#8217;s pretty satisfying, but it does absorb my time. Especially when I get owned [...]]]></description>
			<content:encoded><![CDATA[<p>From the last post you&#8217;d probably guess that I&#8217;d been playing through videogames and have completely exited the world of software, but it&#8217;s not true. I&#8217;ve been hard at work, on (unfortunately) real work. The day job. I can&#8217;t lie that it&#8217;s pretty satisfying, but it does absorb my time. Especially when I get owned for having bad test methodology and miss a deadline. Whoops.</p>
<p>Anyway, I&#8217;m not here to talk about anything so mundane as work. I&#8217;m here to say that I made a mistake. Eight or nine months ago, I built my dream desktop. I went all out. Dual 24&#8243;s, kickass processor, top of the line graphics, a decent amount of RAM. However, in my salivation sessions on Newegg, I totally forgot two key elements&#8230; the human interface. Mouse and keyboard. So, despite spending a small fortune on hardware, I ended up running to Fry&#8217;s and grabbing a shitty $10 keyboard and a Microsoft mouse. The mouse ended up being fine (at least for as much as I use a mouse &#8211; not much), and I can credit Microsoft with making decent hardware. The keyboard, on the other hand, was a total piece of shit. I guess I shouldn&#8217;t expect any different for that price, but in its defense, I did manage to get this far with it and my previous self didn&#8217;t really think twice about something as trivial as a keyboard. Hell, I damn near went to Goodwill and picked up a used one for 99 cents.</p>
<p>Big mistake. Not only are the keys on the $10 monstrosity annoyingly flimsy and flat, but also it has the ACPI control buttons directly over the arrow keys. Possibly the worst design ever. Using arrows to scroll a webpage or something, make a bit of a mistake hitting the &#8216;up&#8217; key and suddenly your computer is shutting down. What the fuck. Of course, I was able to disable that functionality in Linux (and honestly, I was sort of surprised it worked out of the box in the first place), but nonetheless. Scarlett&#8217;s now using it as a toy, I didn&#8217;t even hoard the thing like I usually do with keyboards.</p>
<p>I was complaining about it once and my friend Scott turned me on to the world of elite keyboards. I admit, I was skeptical. The shitty keyboard was bad, but I also didn&#8217;t really want to spend a hundred bucks on a keyboard, and I honestly don&#8217;t care about wireless bullshit or LED screens (although <a href="http://www.amazon.com/Optimus-Maximus-OLED-keyboard-white/dp/B0042FWNMW/ref=sr_1_1?ie=UTF8&#038;s=electronics&#038;qid=1308082578&#038;sr=1-1">OLED keys</a> would be cool, those boards also cost more than my whole desktop). Mechanical keys meant something to me though, I&#8217;ve had a number of Model Ms all in various states of repair over my college career, but they&#8217;re loud and bulky and the only functional one I have has to be connected with serial -> PS2 -> USB which is just ridiculous. Anyway, talking with Scott and reading about Cherry mechanical keys and all of this stuff, he finally pointed me to <a href="http://www.daskeyboard.com/">Das Keyboard</a>, a spiritual successor to the Model M, with mechanical keys and a no-BS approach. No wireless. No LED screen (although it has lights for the typical stuff, like Caps Lock) just a solid, no-frills keyboard, with comfortable keys. It&#8217;s even made by a local Austin company too, which is pretty sweet.</p>
<p>It was still hard to pull the trigger though, the $10 thing was serving its purpose, it wasn&#8217;t really getting in the way now that I had learned to avoid those damn ACPI keys. I did tell my wife about it though and despite the fact that I don&#8217;t think I&#8217;d ever spend three figures on a keyboard for myself, today I answered the door and the UPS who handed me a number of packages. One of which was a keyboard shaped box from Metadot. It arrived two days early (probably because their shipping department is basically down the street). Now here I sit, typing on a Model S Professional Silent keyboard. This thing rocks. I can&#8217;t even really identify what it is about it, I mean consciously I know it&#8217;s the mechanical keys, but the whole thing just feels&#8230; right. It feels solid. I feel like I&#8217;ll be typing on this bad boy 30 years from now. Juliette even got the Tux keys to replace the Windows keys, very thoughtful and definitely puts the final touches on it.</p>
<p>It was a Father&#8217;s Day gift that arrived early and I happened to notice, but I&#8217;ll be damned if I&#8217;m going to do the rest of my week of work on the old keyboard when I know that this masterpiece is in the house =). Here&#8217;s a shot of it on my desk, taken with my crappy phone camera and then conveniently uploaded through its built-in USB 2.0 hub.</p>
<div id="attachment_240" class="wp-caption aligncenter" style="width: 330px"><a href="http://blog.codezen.org/wp-content/uploads/2011/06/IMG_20110614_135835.jpg"><img src="http://blog.codezen.org/wp-content/uploads/2011/06/IMG_20110614_135835-1024x768.jpg" alt="Obligatory keyboard shot" title="Obligatory keyboard shot" width="320" height="240" class="size-large wp-image-240" /></a><p class="wp-caption-text">Obligatory keyboard shot</p></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.codezen.org/2011/06/14/das-keyboard-awesome/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

