<?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"
	>

<channel>
	<title>jenkz.org</title>
	<atom:link href="http://www.jenkz.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jenkz.org</link>
	<description>touching people with his noodly appendage</description>
	<pubDate>Tue, 09 Sep 2008 09:46:12 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>How not to launch a beta for a WoW-Killer MMO</title>
		<link>http://www.jenkz.org/2008/09/09/how-not-to-launch-a-beta-for-a-wow-killer-mmo/</link>
		<comments>http://www.jenkz.org/2008/09/09/how-not-to-launch-a-beta-for-a-wow-killer-mmo/#comments</comments>
		<pubDate>Tue, 09 Sep 2008 09:44:17 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Games]]></category>

		<category><![CDATA[Warhammer]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=45</guid>
		<description><![CDATA[
Heres a few points that will result in an interesting weekend for thousands of eager MMO fans in Europe. A tale of the recent EU launch of Warhammer Online. 
1. Provide misleading information about a &#8220;Collectors Edition&#8221;. Make it sound like you need to pay nearly double to gain Open Beta access. After misleading people about the [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>Heres a few points that will result in an interesting weekend for thousands of eager MMO fans in Europe. A tale of the recent EU launch of Warhammer Online. </p>
<p><strong>1. Provide misleading information about a &#8220;Collectors Edition&#8221;. Make it sound like you need to pay nearly double to gain Open Beta access. After misleading people about the Collections Edition, flood free Open Beta keys to various fansites.</strong></p>
<p>Surely we&#8217;ll make loadsa dollars by convincing people to shell out £60 for the Collectors Edition. They&#8217;ll love it. They&#8217;ll get guarenteed Open Beta access. They&#8217;ll get onto the release servers a couple of days before the peasants. But hey. Let&#8217;s release thousands and thousands of keys that do pretty much the same thing </p>
<p><strong>2. Completely underestimate how much throughput you are expecting. Don&#8217;t allow people to create game accounts using their keys (purchased, or otherwise) until a couple of hours before you intend to open the servers, then publicly announce the exact date and time you plan to open your registration web service.</strong></p>
<p>Warhammer is touted as a WoW-killer game, so roughly a million subscribers in the EU. We know how many beta keys we distributed, we know how many pre-orders have been placed. We know people don&#8217;t visit a MMO site once. Surely, we have enough metrics and measures to make a rough estimate. Then stress-test against that estimate in our QA department.</p>
<p>Or not, do that at all, and watch your site fall to it&#8217;s knees in a matter of minutes.</p>
<p><strong>3. Have a load of cowboys make a bespoke flashtastic website and authentication service. Assume that stress testing of said bespoke service is not required, even though you are expecting a hundred thousand users in the period of a few hours. </strong></p>
<p>Architecture and development of highly scalable web services is not a trivial task. If you don&#8217;t have the skills in house don&#8217;t attempt the impossible. Outsource, or pay the big bucks. Stress-testing can be easily done in house using scripts that simulate client requests, there is no excuse other than incompetency that this fell so flat on its face.   </p>
<p>To top it off, the bespoke website has to be entirely in flash of all technologies. Literally, everything is in flash.</p>
<p><strong>4. An easy solution to point 3 would be to use Mythic&#8217;s off-the-shelf service. They have either developed in house, or outsourced development to non-cowboys, a carbon copy of what you need. Make sure your contract to host includes everything, including support/surround/signup services. </strong></p>
<p>GOA have slightly different requirements to Mythic, they need to support three languages. To meet that requirement, let&#8217;s re-write the whole shebang, from the ground up. There are existing Mythic webservices available that do the job (or very nearly do the job) - why not use those? Path of least resistance.</p>
<p><strong>5. When everything fails, go and develop a completely new system in half a day. On a Monday Morning.</strong></p>
<p>When your existing cowboy signup service fails in a matter of minutes under &#8220;unpredicted&#8221; load, get your coding gloves on. We&#8217;re boarding the Monday morning &#8221;write a new service in half a day&#8221; train and it&#8217;s not stopping. Choo Choo. This is an &#8220;asynchronous&#8221; service, and you proudly announce the fact. (Did your lead developer have a Sunday morning shower moment and Google &#8220;asynchronous web architecture&#8221;? He really should have searched for scalable.)</p>
<p>This new, flash-front ended PHP script, takes your details, your key, and promises to email you back in 1 to 2 hours. 17 hours later, still nothing. People have discovered if you repeatedly hit submit, your email comes back in 10 minutes! No idea what happened to the asynchronous request from 17 hours ago&#8230;.</p>
<p><strong>6. Don&#8217;t undertake a lessons learned exercise from your experience of hosting an MMO from the same developer for 6 years.</strong></p>
<p>Hang on a minute, I&#8217;ve got a spell of déjà vu coming on. Spooky. We&#8217;ve done all this before! We hosted Dark age of Camelot for 6 years and made countless screw ups then. Surely we could have sat down around a table, discussed what went well, what didn&#8217;t go well, and how to improve next time?</p>
<p><strong>7. Let the upset fans on the defacto-official forums know just how you feel. </strong></p>
<p>You&#8217;re an experienced community manager, you work for a company that&#8217;s known for screwing up, constantly. You think you&#8217;d know how to handle a few disgruntled Internet users. Let them know just how you feel! It&#8217;s all their fault, how dare they complain.</p>
<p><strong>8. Cry as your American partners launch a beta thats supporting 50k concurrent users without a hitch.</strong></p>
<p>Watch and learn as the actual developers of the game manage to deploy a beta to 50,000 concurrent users without a hint of a major problem. How could they have managed that? We&#8217;re deploying exactly the same game?</p>
<p>In conclusion, GOA are a horrific waste of space. Warhammer Online in Europe is doomed to be a mediocre game, clearly it will surpass DAoC in subscription numbers, but with a service such as this it will never reach the heights of WoW. There must be substantial improvement in service levels, or Warhammer Online&#8217;s title as WoW-killer is a pipe-dream, at least in Europe&#8230;.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/09/09/how-not-to-launch-a-beta-for-a-wow-killer-mmo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>C# Dictionary to F# Map</title>
		<link>http://www.jenkz.org/2008/07/18/c-dictionary-to-f-map/</link>
		<comments>http://www.jenkz.org/2008/07/18/c-dictionary-to-f-map/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 18:20:40 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Erlang]]></category>

		<category><![CDATA[F#]]></category>

		<category><![CDATA[Functional Languages]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=13</guid>
		<description><![CDATA[Following on from my past blog on effective parallelism I&#8217;ve continued digging into the functional language F#. I&#8217;m getting there – slowly and I am loving immutability. It&#8217;s quite a mindset change from my day-to-day work in imperative languages but I can see a little bit of progress in my functional thinking every day.
I&#8217;m doing [...]]]></description>
			<content:encoded><![CDATA[<p>Following on from my past blog on effective parallelism I&#8217;ve continued digging into the functional language F#. I&#8217;m getting there – slowly and I am loving immutability. It&#8217;s quite a mindset change from my day-to-day work in imperative languages but I can see a little bit of progress in my functional thinking every day.</p>
<p>I&#8217;m doing quite a lot of C#-&gt;F#-&gt;C# interop (writing a distributed Erlang-like message passer, with agents using F#&#8217;s MailboxProcessor) and I came across a problem where I needed to convert a Dictionary produced in my C# layer to an immutable F# equivalent: Map.</p>
<p>Digging around online so far regarding F# is proving slow, it&#8217;s a new language, and there isn&#8217;t the plethora of code-snippets there are for other languages. The F# Manual also is nothing like MSDN – where code-snippets and examples are all over the place.</p>
<p>Anyway, here is a trivial little example of what I have come up with. I have an F# assembly, TestMap.dll, which exposes a module TestMap. A type in this module, ExampleDictionaryToMap, has a method Convert that takes a C# Dictionary and returns an F# immutable</p>
<p>The F# performing the conversion:</p>
<pre name="code" class="csharp">

#light

module TestMap

open System.Collections.Generic

type ExampleDictionaryToMap =
  // Convert a C# Dictionary&lt;string,int&gt; to a Map&lt;string,int&gt;
  static member Convert(_dict: Dictionary&lt;string, int&gt;) =
     List.fold_left (fun acc idx -&gt; Map.add idx _dict.[idx] acc) Map.empty (Seq.to_list _dict.Keys)

  // Convert a C# Dictionary&lt;string,int&gt; to a Map&lt;string,int&gt;
  // Steps are broken down:-
  //   (1) define an accumulator: function &quot;accumulator&quot;
  //   (2) define an initial value for the accumulator: &quot;initialAccumulatorValue&quot;
  //   (3) create the list to fold using Seq.to_list on the C# Dictionaries Keys emuerator: &quot;list&quot;
  static member StepByStepConvert(_dict: Dictionary&lt;string, int&gt;) =
     let accumulator acc idx = Map.add idx _dict.[idx] acc
     let initialAccumulatorValue = Map.empty
     let list = Seq.to_list _dict.Keys
     List.fold_left accumulator initialAccumulatorValue list
</pre>
<p>Then calling this F# from C#, Map is the F# type from Fsharp.Core:</p>
<pre name="code" class="csharp">
Dictionary&lt;string, int&gt; csharpDictionary = new Dictionary&lt;string,int&gt;();
csharpDictionary.Add(&quot;value1&quot;, 1);
csharpDictionary.Add(&quot;value2&quot;, 2);
csharpDictionary.Add(&quot;value3&quot;, 3);
csharpDictionary.Add(&quot;value4&quot;, 4);

Map&lt;string,int&gt; fsharpMap = TestMap.ExampleDictionaryToMap.Convert(csharpDictionary);
</pre>
<p>I&#8217;m sure there is a more efficient way so any comments welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/07/18/c-dictionary-to-f-map/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The crusade for effective parallelism</title>
		<link>http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/</link>
		<comments>http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 07:41:30 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Erlang]]></category>

		<category><![CDATA[F#]]></category>

		<category><![CDATA[Functional Languages]]></category>

		<category><![CDATA[Parallelism]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=12</guid>
		<description><![CDATA[Everyone is now aware that multiple cores is the direction that chip manufacturers are heading, but many of us are stuck without a way of writing reliable software that is capable of running on, say, 64 cores. Concurrency in C/C++/C#/Javaet.al. is not easy. We are getting better, but, it&#8217;s still not easy, and is error [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone is now aware that multiple cores is the direction that chip manufacturers are heading, but many of us are stuck without a way of writing reliable software that is capable of running on, say, 64 cores. Concurrency in C/C++/C#/Javaet.al. is not easy. We are getting better, but, it&#8217;s still not easy, and is error prone. Theres a lack of design expertise, a lack of development tools/debugging tools/predicting concurrency errors, and a severe lack of high-level concurrency support at the language level.</p>
<p>I stumbled across the <a href="http://blogs.msdn.com/pfxteam/">Parallel Extensions</a> Customer Technology Preview (<a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=348F73FD-593D-4B3C-B055-694C50D2B0F3">June `08</a>) the other day whilst researching effective concurrency in high performance server software. It&#8217;s set me off on a little bit of a functional crusade. Firstly, back to the Parallel Extensions CTP. It&#8217;s a pre-release .NET extension that provides Parallel LINQ , the Task Parallel Library, and some concurrency primitives, lazy initialisation, and thread-safe lock-free collections (the somewhat obvious stack and queue). The two aspects I have found most useful &#8220;out of the box&#8221; are:</p>
<p>The user-mode concurrency primitives, i.e. SemaphoreSlim, ManualResetEventSlim, rather than diving down to the kernel for synchronization primitives, they are implemented entirely in the CLR<br />
The concurrency collections, notably concurrent queue, and blocking collection, which provided a simple and easy to use multiple producer consumer queue</p>
<p>Theres lots of other cool stuff in the Parallel Extensions CTP, especially PLINQ, which when using LINQ like a functional language provides what looks like a straight forward way to exploit parallelism in C#</p>
<p>Digging around I stumbled across a statement that functional languages are ideal for solving parallelism problems, as they have no side effects. Holy grail time. I also <a href="http://www.strangelights.com/">stumbled across Rob Pickerings blog</a> which is a great resource for the .NET functional language F#. F# is currently being productized by Microsoft to sit nicely in the Visual Studio suite of tools, so I am expecting it to be pretty mainstream quite soon, and having tinkered with C#/F#/C#interop for about an hour I can see why. It is so simple to use, and coupled with some of the &#8220;no side effects&#8221; stuff I will touch on shortly, I can see why.</p>
<p>To understand &#8220;functional languages are ideal for solving parallelism problems&#8221;, it was clear I needed to grasp immutability in the context of functional languages. Every software engineer is aware of immutability,readonly data, strings in C# are immutable, and Effective C# encourages writing immutable classes. However, writing a whole system using immutable types seems a very alien concept - and that&#8217;s ignoring what appears to be major performance headache (especially in my area, Games). Here&#8217;s a very simple immutable class in C#, it&#8217;sreadonly int member can only be assigned during construction, so if you want a client&#8217;s Id to change, you have to instantiate another instance of client. There is lots of discussion on<a href="http://weblogs.asp.net/bleroy/archive/2008/01/16/immutability-in-c.aspx"> immutability and immutable C# types in this post</a></p>
<pre name="code" class="csharp">

public class Client
{
  private readonly int m_id;
  public int Id
  {
     get { return m_id; }
  }

  public Client(int _id)
  {
    m_id = _id;
  }
}
</pre>
<p>Instantiating a new object every time is hitting garbage collection, definitely, but releases will be picked up by the fast first generation. This is the first performance concern I have with moving over to the functional world.</p>
<p>That&#8217;s immutability in 5seconds: state cannot change. Functional languages take this a step further, statements like x = x + 1, which is entirely valid in an imperative language, is alien to a functional language. You can have a function that returns a value plus one, but the value returned is a new value, not the previous value mutated. Functional languages provide immutable structures that are ideal for this, in F# there&#8217;sTuples and Records.</p>
<p>There&#8217;s a couple of videos - <a href="http://channel9.msdn.com/posts/Charles/JAOO-2007-Joe-Armstrong-On-Erlang-OO-Concurrency-Shared-State-and-the-Future-Part-1/">a discussion with Joe Armstrong</a> (a godfather of Erlang, a distributed, concurrent, functional language) and <a href="http://channel9.msdn.com/posts/Charles/Simon-Peyton-Jones-Towards-a-Programming-Language-Nirvana/">another discussion with Simon Peyton Jones</a> (a godfather of Haskell) that explain why functional languages aid concurrency that explain side effects, immutability in the context of functional programming languages. Both videos do a better job than I can at explaining this, and are well worth watching.</p>
<p>Ok, I thought, that&#8217;s it. Clearly to solve all my concurrency problems I need to use a functional language. I couldn&#8217;t get my little head around the lack of &#8220;state&#8221;. Clearly there is state, that these functions need to operate on. As mentioned in the Simon Peyton Jones video, I don&#8217;t just want to make my cores get warm, I want to observe the results&#8230; I&#8217;ve struggled for this for days now, the evangelist of &#8220;side effects = bad, NEVER!!&#8221;. Clearly I had misunderstood as I gathered on Sunday after watching the Joe Armstrong video again.</p>
<p>Given a &#8220;world state&#8221;, there are operations that want to read this, and there are operations that want to change this. Reading this is not a problem - they just get the latest view, and as that view is immutable (in a functional language) it&#8217;s safe to pass around, and do what you please with it - multiple cores can read this concurrently without any issue whatsoever. It&#8217;s the writing of a new &#8220;version&#8221; that I was struggling with. Given two operations that want to execute concurrently and both want to return a new state - there is an inherent race! I can&#8217;t grasp how to solve that race in this &#8220;no side effects please&#8221; world of functional languages, and to be honest, it&#8217;s been making my head hurt. I stumbled across Joe Duffy&#8217;s (a Microsoft Developer on Parallel Libraries) blog yesterday that put me at ease.</p>
<p>Joe presents a simple compare-exchange method for writes, where by there could be lost work by a &#8220;writing thread&#8221;. Nabbed directly from Joe&#8217;s blog. Joe also covered some issues with this approach, which are discussed in more detail in his post.</p>
<pre name="code" class="csharp">

internal static World s_theWorld = new World(…);
internal void ReadTheWorld()
{
  World w = s_theWorld;
}
internal void ChangeTheWorld()
{
  World oldWorld;
  World newWorld;
  do
  {
    oldWorld = s_theWorld;
    newWorld = new World(…);
  }
  while (Interlocked.CompareExchange(ref s_theWorld,
         newWorld, oldWorld) != oldWorld);
}
</pre>
<p>I now feel I can get started using F# (via my existing C# code) creating immutable, functional assemblies that C# can quite happily make use of. I&#8217;m really looking forward to trying this out and I&#8217;ll hopefully post an update as to how it goes.</p>
<p>Finally, I&#8217;m really really intrigued by Erlang, which I hinted at earlier. It&#8217;s a functional language developed by Ericsson <a href="http://video.google.com/videoplay?docid=-5140917568901801025&amp;q=erlang&amp;total=16&amp;start=0&amp;num=10&amp;so=1&amp;type=search&amp;plindex=6">quite some time ago</a> with a primary design goal of redundancy and fail-over. Erlang provides &#8220;processes&#8221; where each component/object/whatever you want to call it is an extremely lightweight process in the Erlang runtime. These processes only communicate by explicit message passing. The two part discussion with Joe Armstrong above is a good starting point, but I&#8217;ve bought a copy of his book to have a nosey around too, it was only £15 from Amazon. I&#8217;m not planning on usingErlang, but learning from it - and possibly adapting some of it&#8217;s good points to my distributed server code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/07/01/the-crusade-for-effective-parallelism/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visual C# 2008 Express</title>
		<link>http://www.jenkz.org/2008/05/10/visual-c-2008-express/</link>
		<comments>http://www.jenkz.org/2008/05/10/visual-c-2008-express/#comments</comments>
		<pubDate>Sat, 10 May 2008 14:05:18 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[Managed DirectX]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=11</guid>
		<description><![CDATA[Well, I&#8217;ve been using Visual Studio Express (C#) as my development environment at home for a while now. I am use to standard Visual Studio Standard at work, but use Express at home. I&#8217;ve recently got a copy of Vista Home Basic (x64) and Visual C# 2008 Express builds &#8220;Any CPU&#8221; assemblies which seems to [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I&#8217;ve been using Visual Studio Express (C#) as my development environment at home for a while now. I am use to standard Visual Studio Standard at work, but use Express at home. I&#8217;ve recently got a copy of Vista Home Basic (x64) and Visual C# 2008 Express builds &#8220;Any CPU&#8221; assemblies which seems to default to the current architecture. You can&#8217;t, at least via the interface that I can find, specify what assembly to produce (x86 x86) in Express. In standard you can setup build configurations for Debug/Release/x86/x64/Any CPU combinations. Express, on the other hand, is naff when it comes to this.</p>
<p>Long story short, I have been coding for Managed DirectX which are 32bit assemblies (x86) and my application level code has been compiling to x64 under Express as I have a 64bit machine. Result is a BadImageException at runtime as it load&#8217;s the 32bit Managed DirectX assembly from the GAC into a 64bit runtime application. Joy.</p>
<p>My solution has been to edit every one of my .csproj files manually to add the PlatformTarget tag like so:</p>
<pre name="code" class="xml">

&lt;WarningLevel&gt;4&lt;/WarningLevel&gt;
&lt;PlatformTarget&gt;x86&lt;/PlatformTarget&gt;
&lt;/PropertyGroup&gt;
</pre>
<p>I think I&#8217;m going to write an XNA renderer as hopefully XNA has 64bit assemblies&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/05/10/visual-c-2008-express/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Lotro</title>
		<link>http://www.jenkz.org/2008/05/09/lotro/</link>
		<comments>http://www.jenkz.org/2008/05/09/lotro/#comments</comments>
		<pubDate>Fri, 09 May 2008 07:49:07 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Games]]></category>

		<category><![CDATA[Lotro]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=10</guid>
		<description><![CDATA[Well Kris and myself finally hit level 50 in Lord of the Rings Online (or &#8220;lo&#8221;-&#8221;tro&#8221;, what a stupid name). We&#8217;ve been playing it casually since Christmas, and really casually - like maybe a couple of hours a week. It&#8217;s quite suited to casual play for leveling, it&#8217;s very quest centric and there&#8217;s a bonus [...]]]></description>
			<content:encoded><![CDATA[<p>Well Kris and myself finally hit level 50 in Lord of the Rings Online (or &#8220;lo&#8221;-&#8221;tro&#8221;, what a stupid name). We&#8217;ve been playing it casually since Christmas, and really casually - like maybe a couple of hours a week. It&#8217;s quite suited to casual play for leveling, it&#8217;s very quest centric and there&#8217;s a bonus XP that builds up if you are offline. I think we leveled entirely in bonus XP.</p>
<p>Now we&#8217;ve hit 50 though, the kind of realisation hits that you need to finish your character setup - that involves getting equipment, and traits. Traits involve farming NPCs, and the higher traits involve farming stupid numbers of NPCs - like 400+ Yawn, time-sink. The other aspect equipment, is another story. For a decent setup you need a couple of bits of highest-tier crafted, which are expensive as hell (like 5-8g, and 1g takes ~1 hour to farm unless you get lucky drops). The other aspect of equipment is drops from raiding. I dont think it&#8217;s remotely like DAoC high end raiding (i.e. Caer Sidi or ML10 dungeon) but still, it&#8217;s more raiding.</p>
<p>We&#8217;re also going to try out the PvP aspect, which is a little weird. It&#8217;s called PvMP (Player vs Monster Player). Which is a battle between the &#8220;free people&#8221; (the characters you level to 50) and player controlled monster characters. Anyone past a certain level, I think 15, or 20 or so, can make a monster character. These can only be played in the PvMP zone, and I think they rank up, and you equip them from PvMP encounters. I don&#8217;t know anything about it really, but I&#8217;ll probably post a comparison with DAoC RvR after trying it for a bit. DAoC RvR obviously had much more attachment, actually fighting other people&#8217;s main characters, rather than some PvP alt, but we&#8217;ll see&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/05/09/lotro/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Synergy</title>
		<link>http://www.jenkz.org/2008/04/25/synergy/</link>
		<comments>http://www.jenkz.org/2008/04/25/synergy/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 08:31:38 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Code]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=9</guid>
		<description><![CDATA[I have two machines at work for network development, and well, I often find myself either not using my second machine, or knocking mice all over the place as I switch between them. A colleague pointed out Synergy - I&#8217;m hooked. It&#8217;s amazing. It&#8217;s just like dual monitor behaviour, mouse + keyboard events get transitioned [...]]]></description>
			<content:encoded><![CDATA[<p>I have two machines at work for network development, and well, I often find myself either not using my second machine, or knocking mice all over the place as I switch between them. A colleague pointed out <a href="http://synergy2.sourceforge.net/">Synergy</a> - I&#8217;m hooked. It&#8217;s amazing. It&#8217;s just like dual monitor behaviour, mouse + keyboard events get transitioned across screen boundaries. Easy debugging with Visual Studio on two machines with no need to switch mouse/keyboard.</p>
<p>Was a little bit of a faff to setup, but it&#8217;s all working and extremely useful. Great for productivity, and it doesn&#8217;t feel like a second machine now <img src='http://www.jenkz.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/04/25/synergy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Podcasts</title>
		<link>http://www.jenkz.org/2008/04/15/podcasts/</link>
		<comments>http://www.jenkz.org/2008/04/15/podcasts/#comments</comments>
		<pubDate>Tue, 15 Apr 2008 17:45:53 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[iPod]]></category>

		<category><![CDATA[iPod Touch]]></category>

		<category><![CDATA[Podcasts]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=8</guid>
		<description><![CDATA[I got Kris and myself an iPod Touch over the weekend, after seeing a friends. Wow&#8230; They are so cool and I have been totally hooked, including watching the BBC via iPlayer. I&#8217;ve also noticed a world of pod casts that I&#8217;ve been totally blind to before. Downloaded a load of them, including:
The Drone Bay [...]]]></description>
			<content:encoded><![CDATA[<p>I got Kris and myself an iPod Touch over the weekend, after seeing a friends. Wow&#8230; They are so cool and I have been totally hooked, including watching the BBC via iPlayer. I&#8217;ve also noticed a world of pod casts that I&#8217;ve been totally blind to before. Downloaded a load of them, including:</p>
<p><a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=275202464">The Drone Bay</a> - Average EVE podcast, quite newbie focused. Maybe it&#8217;ll get better..<br />
Game Design - Horrible quality sound. Hurt my head. Couldn&#8217;t listen to it due to that, so can&#8217;t comment on quality of content.<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=220231116">Game Theory</a> - Podcast entitled &#8220;Death, Rebirth&#8221; Talk about the possible death of PC game print magazines, due to the emergence of online consoles. also about bringing some old game franchises back to life. Pretty interesting.<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=159065675">Indie Game Development</a> - MIT Grad student talks about a face book game, including design methodologies including paper prototyping.<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=181371817">Guardian Film Weekly</a> - Little bit pretentious, Probably check out a couple more before dismissing it.<br />
<a href="http://http//phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=120316245">NY Times Front Page</a> - Brief to the point, news updates from NY Times<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=128929173">Radio 5live Wake Up to Money</a> - Business/Finance update<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=266453602">Warhamma</a> - What a shite name. Quite well done, catch up on War-hammer Online happenings.<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=273171147">Men of the Rings</a> - LotRO podcast with three jolly American guys. Made the PvMP stuff sound remotely interesting.<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=73330909">Polymorphic Podcast</a> - .NET podcast, about Model-View-Controller in some ASP.NET MVC framework. Seemed pretty decent if the subject gets more interesting/relevant<br />
<a href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=267255279">Pragmatic Podcasts</a> - Very cool introduction to Core Animation in OSX/iPhone. I need OSX and the iPhone SDK!</p>
<p>It&#8217;s made me really want to get OSX installed, and check out the iPhone SDK&#8230; Can&#8217;t wait for the App Store.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/04/15/podcasts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New site. New hostage.</title>
		<link>http://www.jenkz.org/2008/03/30/new-site-new-hostage/</link>
		<comments>http://www.jenkz.org/2008/03/30/new-site-new-hostage/#comments</comments>
		<pubDate>Sun, 30 Mar 2008 18:32:06 +0000</pubDate>
		<dc:creator>Tim</dc:creator>
		
		<category><![CDATA[Site]]></category>

		<category><![CDATA[jenkz.org]]></category>

		<category><![CDATA[STEAK]]></category>

		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://www.jenkz.org/?p=7</guid>
		<description><![CDATA[Alex Tomkins (a.k.a GReaper) is kindly lending his server resources to host my website, DNS, and SVN server. I&#8217;ve done away with my old web host, they put up their prices, are basically naff. Alex is so much better  He also hosts www.legionsplayers.com so he is clearly just amazing. Thanks Alex!
In the process of [...]]]></description>
			<content:encoded><![CDATA[<p>Alex Tomkins (a.k.a GReaper) is kindly lending his server resources to host my website, DNS, and SVN server. I&#8217;ve done away with my old web host, they put up their prices, are basically naff. Alex is so much better <img src='http://www.jenkz.org/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> He also hosts <a title="www.legionsplayers.com" href="http://www.legionsplayers.com">www.legionsplayers.com</a> so he is <em>clearly just amazing</em>. Thanks Alex!</p>
<p>In the process of moving, I&#8217;ve also done away with my old phpBB driven website backend, replaced with a &#8220;Web 2.0&#8243; extravaganza. This site is now powered by Wordpress 2.5&#8230;.. It has meant I&#8217;ve lost most of my stuff, including my portfolio, but I&#8217;m not too bothered. I&#8217;ve transitioned what I wanted to keep including my articles, files, images etc.</p>
<p>I actually really like Wordpress. The admin features are very cool. It was damn easy to setup. I just need a better header. *whips out gimp and pretends to be an artist*. Hopefully I&#8217;ll actually update the blog a bit more now too&#8230; Now that it&#8217;s easier to manage and all <img src='http://www.jenkz.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Oh, theres steak cooking, from West End Butchers. It smells bloody great.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenkz.org/2008/03/30/new-site-new-hostage/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
