<?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>HybridLogic</title> <atom:link href="http://hybridlogic.co.uk/feed/" rel="self" type="application/rss+xml" /><link>http://hybridlogic.co.uk</link> <description>Home of Luke Lanchester &#124; Web Developer &#38; Geek</description> <lastBuildDate>Mon, 31 Dec 2012 14:13:39 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <item><title>Forza Horizon</title><link>http://hybridlogic.co.uk/2012/12/forza-horizon/</link> <comments>http://hybridlogic.co.uk/2012/12/forza-horizon/#comments</comments> <pubDate>Mon, 31 Dec 2012 14:13:39 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[games]]></category> <category><![CDATA[xbox]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=728</guid> <description><![CDATA[I love Forza. Ever since clocking up 400 hours on Forza 2 I&#8217;ve been hooked, slowly honing my racing skills ready for new tracks and new opportunities. With Forza Horizon, Turn 10 have given control of their almighty racing simulator to a relative unknown and set them loose to make something new. And they did, [...]]]></description> <content:encoded><![CDATA[<p>I love Forza. Ever since clocking up 400 hours on Forza 2 I&#8217;ve been hooked, slowly honing my racing skills ready for new tracks and new opportunities. With Forza Horizon, Turn 10 have given control of their almighty racing simulator to a relative unknown and set them loose to make something new. And they did, brilliantly.<span
id="more-728"></span></p><p>Forza 2 was a landmark for me. Gone was the stiff control I always felt in Gran Turismo, here was something that felt real, that felt like you were a hairsbreadth away from losing it on every corner. Each car was its own unique entity, with distinct characteristics. These weren&#8217;t just the same models with different skills and a different value for &#8220;grippiness&#8221; or &#8220;acceleration&#8221;, they were each a fun ride in their own right.</p><p>Forza 3 and 4 added a few new tracks each time and pushed the graphics ever onwards, but it was hard to not see them as just &#8220;the old game&#8221; + a few new additions. When you&#8217;ve gone round Mugello a hundred times it&#8217;s hard to add anything new. Turn 10 did try; the multi-class races were a unique challenge but ultimately completing season after season of race after race is more akin to grinding than racing.</p><p>And so Turn 10 turned the keys to their precious engine over to a newcomer, Playground Studios. And they in turn took everything about Forza and turned it on its head. This is not the clinical simulation you knew, it&#8217;s an arcade racer with real world cars. Need For Speed with a manual transmission. Perhaps the biggest difference is the change from a set of tracks to a single open-world map, featuring miles of roads of every type and description from tarmac to gravel and everything in between.</p><p>The environment deserves the most credit in Horizon. It is simply stunning, with miles of road effortlessly segueing from desert freeway to mountain pass. The day-night cycle provides another variable to contend with, with some races beginning in the evening twilight with sun shining over the horizon before plunging you into the darkness of night. All of this graphical beauty comes with a price though, the 60 gorgeous frames per second of games past have been halved. In their place are a range of various motion blurs and effects, serving to make the game look more like its arcade compatriots than previous Forzas. And you know what? It&#8217;s better. Yes, the human eye can notice the difference if you know what to look for, but when you&#8217;re racing and having fun, it&#8217;s a non-issue.</p><p>The races themselves are an excellent mix of circuits and point-to-point, with a few others thrown in. Tracks are composed of small recognisable sections, built up into unique tracks for each race. What might be a sweeping right hand bend coming off a freeway is turned into a tight corner when approached from the other direction. Points are awarded for drifts, avoiding cars etc and build up to unlock Showcase events which are awesome. Drift around a mountain pass in a Ford Mustang while a P-51 Mustang banks overhead. Slamon along a dirt track while a hot-air balloon drifts lazily overhead. These events are designed to show off the landscape and variety that Forza Horizon embodies, but most of all they&#8217;re fun.</p><p>Overall, Forza Horizon is the best thing to happen to the series. This isn&#8217;t a breath of fresh air, it&#8217;s a whole new series in a day and age of endless NFS clones and sequels. Definitely one to get.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2012/12/forza-horizon/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Twenty Twelve</title><link>http://hybridlogic.co.uk/2012/12/twenty-twelve/</link> <comments>http://hybridlogic.co.uk/2012/12/twenty-twelve/#comments</comments> <pubDate>Thu, 27 Dec 2012 12:37:39 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[film]]></category> <category><![CDATA[running]]></category> <category><![CDATA[sport]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=712</guid> <description><![CDATA[2012. We&#8217;re all still here, which means another entry on the Wikipedia list of predicted doomsday dates that came to pass (it&#8217;s a thing) and another blog post for this sorely neglected site. So, without further ago, begin Operation: DESCRIBE YEAR IN REVIEW WITH FOLLOW UP GOALS FOR NEXT OPERATION. Sport If a year can [...]]]></description> <content:encoded><![CDATA[<p>2012. We&#8217;re all still here, which means another entry on the Wikipedia list of predicted doomsday dates that came to pass (<a
href="http://en.wikipedia.org/wiki/List_of_dates_predicted_for_apocalyptic_events#Past_predictions">it&#8217;s a thing</a>) and another blog post for this sorely neglected site. So, without further ago, begin Operation: DESCRIBE YEAR IN REVIEW WITH FOLLOW UP GOALS FOR NEXT OPERATION.<span
id="more-712"></span></p><h2>Sport</h2><p><img
src="http://farm9.staticflickr.com/8503/8314413520_2548c398e2.jpg" width="500" height="313" alt="Sports 2012" /></p><p>If a year can be defined by one thing, this one can be described as the year I got off my ass (or at least off the streets/out of the pool) and started doing actual sporting events. Here&#8217;s a selection of the things I&#8217;ve done this year, and for anyone who thinks they couldn&#8217;t do this, <a
href="http://hybridlogic.co.uk/2010/10/the-best-thing-i-ever-did/"> remember I used to a proper couch potato </a>.</p><ul><li><strong>Sutton Fun Run</strong> My first public sporting event since Sports Day as a kid. 8.5 miles of running up and down hills in Sutton Park, I eventually finished in 1:04:19 placing me #248 out of 6,000.</li><li><strong>Great Manchester Swim</strong> Another first, this time open water swimming (and wearing a wetsuit). The canals outside Media City weren&#8217;t what you would describe as pristine, but it was an awesome day despite all this. Finishing in 32:43 (after swimming the wrong way) was a great first attempt.</li><li><strong>Sutton Triathlon</strong> My first triathlon! Admittedly only a Super Sprint distance for beginners, it comprised a 200 m swim, 10 km bike ride and a final 2.5 km run all through Sutton Park. The hardest part was treading water in the middle of Powells Pool for 20 minutes in the freezing cold water (no wetsuit) before starting. In the end I finished in 42:09, taking first place overall for the distance. I signed up for the next event as soon as I got home.</li><li><strong>People&#8217;s Triathlon</strong> A Sprint distance triathlon, this race involved a 750 m swim, 20 km bike ride and 5 km sprint to the finish line. I came in at 1:27:20, well under my target time. As I was the only entrant in my age band (the average age is 49!) there wasn&#8217;t a prize for coming first. Even though I managed a good time on my trusty mountain bike as well, it showed me how valuable a road bike would be.</li><li><strong>Spartan Race</strong> A 5 km slog under nets, through waist high water and over walls, this was more a test of endurance than raw speed. A great laugh, especially if you run as part of a team. Finished in just over an hour, coming in the top 100!</li><li><strong>Birmingham Half Marathon</strong> The longest run of the Summer (but not my longest run of all time), the half really pushed me to my limits (and beyond), but was an excellent event. Finishing in 1:40:22, I was just glad to sit down afterwards.</li></ul><p>Outside of the events, I got my first road bike, ran my first sub-20 minute 5K and upped my swimming distance to 2.5 km. Unfortunately, I did push myself a bit too hard. Since the half marathon my knees have been slowly recovering which has meant little to no running for the remainder of the year. Hopefully next year I can pick it back up again.</p><p>I&#8217;d also like to mention those I&#8217;ve raced with this year; My brother for driving me across the country to compete, Canning for been a good swim buddy and showing me how not to be a complete n00b in the water, Adam for some great conversation during the Spartan Race and John for motivating me to enter the Fun Run and half marathon.</p><h2>Film</h2><p>Another year means another bunch of visits to the cinema. This time I only managed to see 72 films (a total of 73 times) and overall there&#8217;s been a fairly large drop in my ratings. I&#8217;m not going to pick out a Top 10 (or Bottom 10), instead I&#8217;m just going to remark on what I&#8217;ve seen.</p><ul><li><strong>The Cabin in the Woods</strong> This easily takes the title for favourite film released this year. Smart, funny and unexpected, all the things you&#8217;d expect from a script with Joss Whedon&#8217;s fingerprints on it.</li><li><strong>Chronicle</strong> takes the award for most unexpected film this year. Really liked the story it told, and also how it told it.</li><li><strong>Coriolanus</strong> is the most unusual film I&#8217;ve seen. An adaptation of a Shakespearean play, this had a fairly A-list cast but still kept true to the original story (and dialogue).</li><li><strong>Dredd</strong> definitely gets the award for most underrated movie. This was such a good sci-fi flick but it just didn&#8217;t get the chance it deserved.</li><li><strong>Skyfall</strong> gets the award for biggest pile of steaming doggie doo-doo I&#8217;ve seen. This felt like such a let down after finally seeing Bond start to rise again. Thinking mans film? Nope, dimwitted setpieces strung together with less likelihood than DKR.</li></ul><h2>Geekery</h2><p>What would a new year be without some new toys. The iPad mini is the best tablet ever made, hands down. It&#8217;s shocking how plasticky other devices feel when compared against this. It might not be retina (yet), but the dimensions make its big brother feel far too cumbersome. I also got one of the newfangled Slim Xboxes and I must say it&#8217;s a definite improvement over previous generations. Except for the touch sensitive buttons. Damn them to hell.</p><p>Dev-wise, I started learning the Go language and while I have yet to use it for a production app it does feel very nimble and modern. I especially love the visibility system, though not so much the loss of objects for structs (yet). I have also begun updating all of my PHP code to what it should be: dependency-injected, unit-tested, composable modules. Gone are the framework specific libraries, <a
href="https://github.com/Dachande663/PHP-Cron">now I can share code around</a>, much better.</p><p>Finally, I picked up an Arduino Uno after playing with one at a hack day. The world of electronics feels like a completely alien planet, with ohms and amps coming out my ears. I&#8217;m working on a few projects and having fun learning as I go, stay tuned for more announcements!</p><h2>To The Next?</h2><p>And that&#8217;s about it. I&#8217;m having fun expanding at 383, with internal projects growing to maturity and new projects providing a good challenge. Next year I hope to have finally moved out and put live a few projects I&#8217;ve been working on for a (long) time. Until then, Happy New Years everyone.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2012/12/twenty-twelve/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>PSR-0: Great Idea, Bastardised Execution</title><link>http://hybridlogic.co.uk/2012/04/psr-0-great-idea-bastardised-execution/</link> <comments>http://hybridlogic.co.uk/2012/04/psr-0-great-idea-bastardised-execution/#comments</comments> <pubDate>Thu, 05 Apr 2012 22:43:02 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[php]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=707</guid> <description><![CDATA[If there&#8217;s one thing PHP needs, it&#8217;s a bit more convention. Node and Ruby can both attribute a large portion of their success to their respective package managers. Unfortunately PHP has such a&#8230; diverse history that using different components between frameworks and projects often requires a cumbersome set of differing bootstraps and loaders. PSR-0 looked [...]]]></description> <content:encoded><![CDATA[<p>If there&#8217;s one thing PHP needs, it&#8217;s a bit more convention. Node and Ruby can both attribute a large portion of their success to their respective package managers. Unfortunately PHP has such a&#8230; diverse history that using different components between frameworks and projects often requires a cumbersome set of differing bootstraps and loaders. <a
href="https://gist.github.com/1234504">PSR-0</a> looked set to be at least a partial solution; a common naming convention such that files could be loaded in the same way, regardless of their original framework. And they royally screwed it up.<span
id="more-707"></span></p><p>I know I&#8217;m a bit late to the party, but like all people I only started to moan when it started to affect me. My framework of choice, <a
href="http://kohanaframework.org/">Kohana</a>, added PSR-0 compliance to the 3.3 development branch. And broke how every existing user expected the framework to work.</p><p>Firstly a bit of background on what PSR-0 actually it. PHP Standards Recommendation 0 is a guideline for how classes, their files and autoloaders should work to ensure harmony between projects. Set up by a group called FIG (supposedly made up of the major framework players, but with little in the way of online presence) it&#8217;s become so much of a standard now that PHP itself is deciding whether to include it in the core SPL. At it&#8217;s most basic if you have the class foo_bar, the autoloader should look in foo/bar.php for the class definition. Simple. Underscores (and namespaces) become directories and the last part becomes the filename.</p><p>Except once again PHP&#8217;s history rears its ugly head. You see, in PHP Foo and foo and FOO all represent the same class. That&#8217;s right, functions and variables are case sensitive, but not class names. There are reasons for this, and it can actually be useful (especially when dynamically generating class names in routing libraries and drivers), but ultimately this is something that cannot change without risking breaking all existing projects. So what to do?</p><p>The logical choice is simple: normalize all class names when generating file paths, typically by lowercasing the class name first. So Foo_Bar, foo_BAR and FoO_bAr should all look in foo/bar.php. And this is exactly what Kohana and a dozen other frameworks did. But they didn&#8217;t write PSR-0, the big boys did; Zend, Symfony et al. And they decided to do things &#8220;the correct way&#8221; i.e. the way they&#8217;d been doing it for years.</p><p>So, what&#8217;s the problem you might ask? Just name your files the same way. Great! Until you start hitting the edge cases. Calling &#8220;new foo()&#8221; after calling &#8220;new Foo&#8221; would work, but swap the order of those two arguments and suddenly your code breaks. Or even better, develop on a local filesystem that&#8217;s case insensitive by default e.g. OS X/HFS+ and then deploy to a live server and watch everything crumble before your eyes.</p><p>The solution to this was so simple; a single call to strtolower(). Tools like Git make it ridiculously easy to rename files and preserve history. Instead, we now have to refactor code to ensure every call represents the same class. If we want &#8220;pretty URLs&#8221; with dynamically extracted controllers, we now need to start breaking naming conventions e.g. Controller_BlogPost would only match /BlogPost/view/123 so now you end up with classes such as Application_Controller_blogpost.</p><p>This is the first time I&#8217;ve felt motivated enough to write about something in the PHP community. I can take all the stick from other languages, I can get over the haphazard naming conventions, but this? Right when PHP was moving in the right direction they go and screw it all up. If PSR-0 gets included the SPL autoloader it&#8217;ll be game over. Thanks for reading.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2012/04/psr-0-great-idea-bastardised-execution/feed/</wfw:commentRss> <slash:comments>4</slash:comments> </item> <item><title>Running</title><link>http://hybridlogic.co.uk/2012/03/running/</link> <comments>http://hybridlogic.co.uk/2012/03/running/#comments</comments> <pubDate>Sat, 31 Mar 2012 12:13:37 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[running]]></category> <category><![CDATA[sport]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=700</guid> <description><![CDATA[Today marks three years since I began running. In that time I&#8217;ve gone from a wheezing 13 minute mile (and enough leg cramps to make me doubt ever walking again) to being able to run the Sutton Fun Run route (8.5 mi) in just over an hour (and getting my mile time down to 5:58 [...]]]></description> <content:encoded><![CDATA[<p>Today marks three years since I began running. In that time I&#8217;ve gone from a wheezing 13 minute mile (and enough leg cramps to make me doubt ever walking again) to being able to run the Sutton Fun Run route (8.5 mi) in just over an hour (and getting my mile time down to 5:58 in the process). In that time I&#8217;ve learnt a few things, often the hard way, so here&#8217;s some tips on what&#8217;s worked for me for the 1,300 Km I&#8217;ve covered so far.<span
id="more-700"></span></p><p><strong>Shoes</strong><br
/> Mid-last year I had to take a four week break due to my knees becoming more and more painful. On a recommendation I visited the <a
href="http://www.upandrunning.co.uk/">Up &#038; Running</a> store in Birmingham to have a proper gait analysis performed. You&#8217;re filmed running on a treadmill and your motion analysed. Apparently I &#8220;over supplanted&#8221; my feet, five minutes later I was walking out with a pair of shoes that have so far been miracle workers.</p><p>More than anything else, having the right shoes has improved how I run. If you ever begin to feel pains in your legs, stop running and get yourself down to a specialist running shop. The analysis is normally free, the shoes are *not* that much more expensive than typical trainers (mine were £60) and the potential damage you can cause otherwise is not something you want to experience. Another little tip for shoes: listen to them. If you&#8217;re feet are hitting the ground heavily you&#8217;re wasting energy and putting more force into your legs, try and be quieter for a much smoother pace.</p><p><strong>Data Tracking</strong><br
/> Definitely a geeky thing, but I&#8217;ve been tracking my runs since the very beginning. In all honesty, it&#8217;s what kept me going initially, being able to see how much I was improving (or not). A Nike+ served me well for a while, but it&#8217;s inaccuracy eventually led me to get a Garmin Forerunner 305 for my 21st Birthday. GPS tracking meant not only was it much more accurate, but it could also allow me to do some <a
href="http://hybridlogic.co.uk/2010/11/runheat/">cool visualizations</a> with the data.</p><p>With the growing trend of social sports websites as well, including Nike+ and Garmin Connect, it&#8217;s even easier to set-up office challenges and the like. Running with friends, whether online or onroad is a great buzz.</p><p><strong>Clothing</strong><br
/> Like everyone I started with the standard cotton tees, but as soon as you start passing the 5K mark they become&#8230; less than comfortable. Sweaty, chafing, rubbing; not what you want to be wearing, especially in winter months. There&#8217;s a lot to be said for getting a proper running shirt and some lightweight shorts. Perhaps a bigger change though was moving to compression wear. After about the 13K marker my right thigh would always begin to cramp up, throw in some Under Armour shorts and I can keep on going. It&#8217;s also worth pointing out that unless you&#8217;re a professional athlete, these are definitely base layers so please don&#8217;t become one of &#8220;those&#8221; runners.</p><p><strong>Cross Training</strong><br
/> About a year after starting to run I decided to pick up swimming after a very long absence. I figured now my legs are improving, swimming should be easy right? No. Specialising too much in one sport is a *bad* thing, unless you only ever want to be able to do that sole sport. Cross training, exercising via multiple forms of sport, is a great way to improve your whole body. Swimming, and more recently cycling, have both had benefits on not just the individual performance but also across each other. And when you&#8217;re knees are aching after a particularly gruelling ride, it&#8217;s nice to be able to stretch out in the pool.</p><p><strong>Intervals &#038; Negative Splits</strong><br
/> I&#8217;m including this point for when you&#8217;ve conquered those first few months of running and are looking to improve. These two techniques helped me take my mile pace from just under 10 minutes to 6 minutes in under three months. Intervals are exactly what they sound like: find a steep hill and sprint to the top, then gently jog down and repeat. It&#8217;s absolutely exhausting but do it a few times a week and you&#8217;ll soon find your average pace shooting up.</p><p>Negative splits are useful for the longer runs where you&#8217;re trying to improve your average pace. The meaning is simple: the second half (split) of your run should be faster than the first half. Starting off slower seems counter-productive, but it helps improve your breathing and gives you more energy for the home straights.</p><p>Ultimately, there&#8217;s no hard and fast rule to running apart from&#8230; running. Make sure you enjoy it, don&#8217;t force your body into a set schedule as before you know it you&#8217;re legs will be falling off and you&#8217;ll forever associate it with pain. Don&#8217;t expect to lose much weight, I found any fat I lost was quickly replaced with muscle. Running with a buddy can be a great way to pass the time, but music can work just as well.</p><p>Three years ago I couldn&#8217;t run a mile. Since then I&#8217;ve clocked up 1,300Km. If I can do it, anyone can.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2012/03/running/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Film January 2012</title><link>http://hybridlogic.co.uk/2012/02/film-january-2012/</link> <comments>http://hybridlogic.co.uk/2012/02/film-january-2012/#comments</comments> <pubDate>Tue, 07 Feb 2012 08:17:04 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[film]]></category> <category><![CDATA[review]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=697</guid> <description><![CDATA[The first month of 2012 has already gone and I&#8217;m still yet to see my flying car or robot assistant. To make up for this I continued my cinema run, seeing 8 films in January. Unfortunately most of them sucked. Goon A film about ice hockey, not something we English normally care about but Goon [...]]]></description> <content:encoded><![CDATA[<p>The first month of 2012 has already gone and I&#8217;m still yet to see my flying car or robot assistant. To make up for this I continued my cinema run, seeing 8 films in January. Unfortunately most of them sucked.<span
id="more-697"></span></p><p><strong>Goon</strong><br
/> A film about ice hockey, not something we English normally care about but Goon actually made it enjoyable. A good performance from William Scott, even if he is still basically playing the same role from 10 years ago.</p><p><strong>The Darkest Hour</strong><br
/> This could have been so good, and in some respects was at least a bit different from the normal Hollywood fodder. But the ending and some choice plot holes just couldn&#8217;t do it justice.</p><p><strong>War Horse</strong><br
/> This one will of course do well and I enjoyed it if only for the great direction and good acting. Don&#8217;t be under any illusions though, this is a sentimental film about a horse.</p><p><strong>Haywire</strong><br
/> I hated this film. It felt slow, awkward, badly written and even more badly directed. It&#8217;s instantly recognisable as by the guy who directed Ocean&#8217;s 11, but whereas that had a great ensemble cast and witty dialog this has the most uninspiring chase scenes ever.</p><p><strong>Underworld: Awakening</strong><br
/> Underworld. Maybe it&#8217;s best credit is that you can&#8217;t tell one film apart from the other. Plot holes and silly things going on, but it&#8217;s a film about vampires and werewolves, what do you expect!</p><p><strong>Coriolanus</strong><br
/> Ralph Fiennes directorial debut, this is a remake of a classic Shakespeare play set in near modern-day Eastern Europe. Brilliantly acted, the olde English dialog can be a bit hard to follow especially if the last time you saw this used was in Baz Lurman&#8217;s Romeo + Juliet.</p><p><strong>The Sitter</strong><br
/> Jonah Hill continues to play the same character in the same situations. There&#8217;s a few good laughs which you&#8217;ll hate yourself for, but overall it&#8217;s a watchable popcorn flick.</p><p><strong>The Grey</strong><br
/> Loved this film, right up until the end. From the opening plane crash which is excellently produced through to the succession of deaths, it&#8217;ll keep you riveted to your seat. You know how everyone is going to die, yet you&#8217;re still not prepared for it. The ending is a bit of letdown, but you can&#8217;t have everything.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2012/02/film-january-2012/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Film 2011</title><link>http://hybridlogic.co.uk/2011/12/film-2011/</link> <comments>http://hybridlogic.co.uk/2011/12/film-2011/#comments</comments> <pubDate>Wed, 28 Dec 2011 11:35:17 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[bestof]]></category> <category><![CDATA[film]]></category> <category><![CDATA[review]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=691</guid> <description><![CDATA[So, the total cinema visit count for this year was only 94 (down from last years 100+), but still a respectable amount. It was also the year we finally bothered to get Cineworld Unlimited cards, saving a small fortune! Anyway, here are my top 10 films of 2011. 10. 127 Hours Another Danny Boyle success, [...]]]></description> <content:encoded><![CDATA[<p>So, the total cinema visit count for this year was only 94 (down from <a
href="http://hybridlogic.co.uk/2010/12/the-best-films-of-2010/">last years 100+</a>), but still a respectable amount. It was also the year we finally bothered to get Cineworld Unlimited cards, saving a small fortune! Anyway, here are my top 10 films of 2011.<span
id="more-691"></span></p><p><strong>10. 127 Hours</strong><br
/> Another Danny Boyle success, this film took a great true story and turned it into a spellbinding visual tale. The dream-like sequences felt out of place at first, but really helped build up the character. And what a great performance from James Franco after the dismal Spider Man 3.</p><p><strong>9. True Grit</strong><br
/> It&#8217;s been a long time since I&#8217;ve enjoyed a Western. Scratch that, I&#8217;ve never enjoyed a Western. But True Grit was a great success, bringing modern production values to a seemingly tired genre in much the same way Pirates of the Caribbean did. Throw in a great cast and it was a recipe for success.</p><p><strong>8. Blitz</strong><br
/> A lesser known British film, Blitz is on this list purely because it was so different to your standard Hollywood crime-capers. Here&#8217;s a cop who isn&#8217;t afraid to bend the rules, teaming up with a bent cop (in the non-expected sense of the word) to catch a serial killer who&#8217;s so deranged it&#8217;s scary. Definitely one worth a watch, especially after the lackluster Kill List which also came out this year.</p><p><strong>7. Rango</strong><br
/> You can always count on Johnny Depp to make a weird movie. While The Rum Diary was enjoyable it didn&#8217;t grab me the way Rango did, with it&#8217;s weird visuals and oddball cast of characters. Throw in a great story and it really was something special to behold. Definitely not a kids film, it&#8217;s a decent watch.</p><p><strong>6. Fast Five</strong><br
/> A surprising addition, Fast Five was the first decent Fast and Furious film since&#8230; well, the beginning. Bringing all the main characters together it dropped all the silly pretenses and just concentrated on being a good all round action movie. With some great driving scenes, decent special effects (for once) and good all round fights, this was definitely one of the best action movies out this year.</p><p><strong>5. Hanna</strong><br
/> An oddball action movie, Hanna deserves a spot purely for being a bit smarter than your average flick. With a globe-trotting set of locations, unique characters and a decidedly violent streak, Hanna should be watched at least once.</p><p><strong>4. Another Earth</strong><br
/> Another Earth follows the perfect definition of how to succeed with popular sci-fi in movies; put the fiction before the science. This is a tale of love and loss set the backdrop of an unimaginable event. The actual science is put in the background, mentioned in passing on TV broadcasts. Instead, this film is about repairing the wrongs we have done. Watch it and enjoy the tale.</p><p><strong>3. Stake Land</strong><br
/> Stake Land came out with relatively little fanfare which is a shame as it&#8217;s a very well made film, even with some faults. The story draws you in and the tension is much more real than The Road. You can see the ending coming a mile off and there are many questions left open, but it&#8217;s still more than worth a watch.</p><p><strong>2. Drive</strong><br
/> Perhaps the most underrated film of the year, primarily because of the backwards advertising campaign that sold it as a GTA-like movie, Drive was easily the best surprise of the year. Ryan Gosling pulls off his role with aplomb, never hurrying to get to the next scene. If you watch only one film from this list, make it this one.</p><p><strong>1. Super 8</strong><br
/> Definitely a love-it-or-hate-it movie judging by others who have seen it, Super 8 is my favourite movie of this year. Harking back to the sci-fi movies of the 80s, especially those of Spielberg, this movie is packed with nostalgia. The lens flares J.J. Abrams lusts after almost end up ruining the entire picture, and the acting of some of the younger cast members really do leave a lot to be imagined but overall? This is the 80s all over again. Throw in the great heard-but-not-seen monster, mystery army men and some awesome special effects and this movie has it all.</p><p><strong>Bottom 5</strong><br
/> As ever, there were some real pieces of crap released this year alongside everything else. In no particular order: Your Highness, Mission: Impossible 4, Captain America, Red State and the 3D adaptation of The Lion King.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2011/12/film-2011/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Setting up Ubuntu Server in VirtualBox for a headless LAMP server in Mac OS X Lion</title><link>http://hybridlogic.co.uk/2011/07/setting-up-ubuntu-server-in-virtualbox-for-a-headless-lamp-server-in-mac-os-x-lion/</link> <comments>http://hybridlogic.co.uk/2011/07/setting-up-ubuntu-server-in-virtualbox-for-a-headless-lamp-server-in-mac-os-x-lion/#comments</comments> <pubDate>Tue, 26 Jul 2011 21:02:36 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[guide]]></category> <category><![CDATA[server]]></category> <category><![CDATA[ubuntu]]></category> <category><![CDATA[web]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=682</guid> <description><![CDATA[The title may be a bit of a mouthful, but it explains the purpose of this post. Similar to my previous post, this guide serves as a reference for myself but I figured others might also find it useful. First the why. For a long time I have used MAMP Pro to test sites locally [...]]]></description> <content:encoded><![CDATA[<p>The title may be a bit of a mouthful, but it explains the purpose of this post. Similar to my <a
href="http://hybridlogic.co.uk/2011/07/setting-up-nginx-in-front-of-apache2-on-ubuntu-server/">previous post</a>, this guide serves as a reference for myself but I figured others might also find it useful.<span
id="more-682"></span></p><p>First the why. For a long time I have used MAMP Pro to test sites locally on my Mac, and truth be told it&#8217;s done pretty well. I was, and to a degree still am, a server n00b. It&#8217;s only in the past few months, administering my <a
href="http://www.linode.com/?r=d2c6d58d4e44064d4eaffe843d49ca4cba24daf0">Linode</a>, that I&#8217;ve learnt where and what to edit to get things to work. And with this new found control, it became increasingly obvious that the differences between Mac and Linux were starting to cause issues.</p><p>Installing memcached, mongo and other systems became a chore on Mac, requiring use of homebrew or other bad implementations of package managers. Botching the built in Apache caused more issues than it solved and testing Nginx became a nightmare when building in new modules.</p><p>Then I remembered <a
href="http://www.virtualbox.org/">VirtualBox</a>. A powerful virtualization product, I&#8217;d been using it for years to test websites in Windows. Why not run Ubuntu Server, the same OS as my actual Linode server, in VirtualBox? Even better, why not run it invisibly in the background? Imagine it, boot up VirtualBox and you&#8217;ve got a complete replica of your production server. Upgrade to a new machine and take it with you!</p><p>So, on to the guide. For reference, the versions used are:</p><ul><li>Mac OS X 10.7</li><li>Ubuntu Server 11.04</li><li>VirtualBox 4.0.12</li></ul><p><strong>Step 1)</strong> Download <a
href="http://www.virtualbox.org/wiki/Downloads">VirtualBox</a> and <a
href="http://www.ubuntu.com/download/server/download">Ubuntu Server</a></p><p>According to some reports, older versions of VirtualBox had issues with 64-bit OSs. This doesn&#8217;t seem to be an issue anymore from what I can tell.</p><p><strong>Step 2)</strong> Create a new Virtual Machine in VirtualBox</p><ol><li>Open VirtualBox</li><li>Click on Machine &gt; New&#8230;</li><li>Enter a Logical Name. Or not. I went with Morlock and called my Mac Eloi.</li><li>Try and match the memory size to your production target. I&#8217;m running a Linode 512, so went for 512Mb of memory.</li><li>Create a new hard disk. Again, try to match your production environment.</li><li>Launch your new Virtual Machine. On first run you will be asked to provide a boot image, choose the Ubuntu Server image you downloaded above.</li><li>Proceed to install Ubuntu as you would on your server. Ubuntu provides a &#8220;virtualised specific&#8221; boot option, however I found it caused more trouble than it was worth.</li><li>VirtualBox should now boot into your Ubuntu Server! Now&#8217;s a good time to do the dirty post-install stuff.<ul><li><a
href="http://www.howtogeek.com/howto/ubuntu/change-ubuntu-server-from-dhcp-to-a-static-ip-address/">Set up a static IP for Ubuntu Server.</a></li><li>Copy your SSH public key over ( ~/.ssh/id_rsa.pub | pbcopy -&gt; ~/.ssh/authorized_keys)</li></ul></li><li>When you&#8217;re done, shutdown the Virtual Machine &#8220;sudo shutdown -h now&#8221;</li><li>In a Terminal window in OS X, enter &#8220;VBoxManage startvm &#8216;My Image Name&#8217; &#8211;type headless</li><li>Ubuntu will now boot up in the background! You can SSH in via Terminal and administer it! To shutdown, just SSH in and issue the same command as in #9.</li></ol><p><strong>Step 3)</strong> Making it usable</p><p>The last thing is to tie it all together. In Terminal (on OS X), edit /etc/hosts and add your dev domain names e.g.</p><pre>192.168.1.123    mysite.dev
192.168.1.123    anothersite.dev</pre><p>Now when you visit mysite.dev now in your browser, the request will automatically send your request to the Virtual Machine. (You will need to set up Apache/Nginx on Ubuntu to handle these requests however).</p><p>The final thing is to add your sites as a shared folder within Ubuntu. Shutdown the Virtual Machine if it&#8217;s running and open Virtual Box. On the Settings for your Virtual Machine, add a new Shared Folder keeping a note of its share name.</p><p>Boot your machine once more. You will need to <a
href="http://blog.brettalton.com/2010/04/28/installing-guest-additions-in-virtualbox-for-an-ubuntu-server-guest/">install the Guest Additions</a> to access the Shared Folder which is a bit tricky on Ubuntu Server. Finally, create the mount point and mount the folder.</p><pre>
sudo mkdir /mnt/sharename
sudo mount -t vboxsf ShareName /mnt/sharename
</pre><p>You will now have a working share making developing sites much easier.</p><p>If you&#8217;ve got any tips or suggestions, please leave a comment below!</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2011/07/setting-up-ubuntu-server-in-virtualbox-for-a-headless-lamp-server-in-mac-os-x-lion/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Setting up Nginx in front of Apache2 on Ubuntu Server</title><link>http://hybridlogic.co.uk/2011/07/setting-up-nginx-in-front-of-apache2-on-ubuntu-server/</link> <comments>http://hybridlogic.co.uk/2011/07/setting-up-nginx-in-front-of-apache2-on-ubuntu-server/#comments</comments> <pubDate>Tue, 26 Jul 2011 20:22:50 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[apache]]></category> <category><![CDATA[nginx]]></category> <category><![CDATA[php]]></category> <category><![CDATA[web]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=674</guid> <description><![CDATA[I love my little Linode (shameless referral link), running several sites on the smallest instance available which gives just 512Mb of memory. With the popularity of HL Twitter and Plex Export, I pretty often max out the available memory and Apache starts dropping requests. So I recently set about looking at the best way to [...]]]></description> <content:encoded><![CDATA[<p>I love my little Linode (<a
href="http://www.linode.com/?r=d2c6d58d4e44064d4eaffe843d49ca4cba24daf0">shameless referral link</a>), running several sites on the smallest instance available which gives just 512Mb of memory. With the popularity of <a
href="http://hybridlogic.co.uk/code/wordpress-plugins/hl-twitter/">HL Twitter</a> and <a
href="http://hybridlogic.co.uk/code/standalone/plex-export/">Plex Export</a>, I pretty often max out the available memory and Apache starts dropping requests. So I recently set about looking at the best way to reduce my memory footprint and settled on dropping Nginx in front of Apache. This guide explains how and why.<span
id="more-674"></span></p><p>Apache is a memory hog, with each request loading up a full instance including mod_php et al. <a
href="http://nginx.org/">Nginx</a> (pronounced Engine-X) on the other hand is designed to be lightweight and fast, very fast. It excels at serving static content, but its features don&#8217;t end there. <a
href="http://hybridlogic.co.uk/2010/06/setting-up-php-fpm-and-nginx-on-linode/">In the past</a> I tried using Nginx and routing dynamic requests to PHP with FPM, but this ended up being more trouble than it was worth.</p><p>This time I would serve all requests for existing files via Nginx, anything else would be passed on to Apache running behind the scenes. As such, Nginx would receive all requests on port 80, while Apache would be relegated to 8080.</p><p>This guide serves as a reference for myself, but I figured others may find it useful. If you find anything incorrect or have a better idea, please leave a comment! At the time of writing, the following softwares were used:</p><ul><li>Ubuntu Server 11.04</li><li>Nginx 1.0.5</li><li>Apache2 2.2.19</li><li>PHP 5.3.5</li></ul><p>Begin by setting up your server if you haven&#8217;t already, with the necessary directories. We&#8217;ll be using SSH so make sure you can login and have root access.</p><pre>
ssh user@host
mkdir -p /srv/www/mysite.com/{logs,public_html}
</pre><p>Install Nginx and tell it to listen on port 80:</p><pre>
sudo apt-get install nginx
</pre><p>Create a new site definition in Nginx. We tell Nginx to try loading any files or directories that have been requested, if that fails route the request through index.php. Any requests for a php file are routed through to Apache. This is a very simple set-up, and can be tweaked as needed.</p><pre>
sudo vi /etc/nginx/sites-available/mysite.com
server {
        listen 80;
        access_log /srv/www/hybridlogic/logs/nginx.access.log;
        error_log /srv/www/hybridlogic/logs/nginx.error.log;
        root /srv/www/hybridlogic/public_html;
        index index.php index.html;
        server_name hybridlogic.dev;
        location \ {
                try_files $uri $uri/ index.php/$uri;
        }
        location ~* ^.*\.php$ {
                if (!-f $request_filename) {
                        return 404;
                }
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
                proxy_pass http://127.0.0.1:8080;
        }
        location ~ /\.(ht|git) {
                deny all;
        }
}
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/mysite.com
sudo nginx -t
sudo /etc/init.d/nginx restart
</pre><p>Nginx should now be up and running. If you visit mysite.com/static-file.html it should load without ever having touched Apache! Now it&#8217;s time to make Apache listen for those dynamic requests.</p><pre>
sudo apt-get install apache2
sudo vi /etc/apache2/sites-available/mysite.com
&lt;VirtualHost *:8080&gt;
        ServerName mysite.com
        DocumentRoot /srv/www/mysite.com/public_html/
        CustomLog /srv/www/mysite.com/logs/apache.access.log common
        ErrorLog /srv/www/mysite.com/logs/apache.error.log
&lt;/VirtualHost&gt;
sudo a2ensite mysite.com
sudo /etc/init.d/apache2 reload
sudo /etc/init.d/apache2 restart
</pre><p>We&#8217;re just missing PHP and MySQL now.</p><pre>
sudo apt-get install mysql-server php5 php5-mysql php5-suhosin
sudo /etc/init.d/apache2 restart
</pre><p>And that&#8217;s it. You should now have a fully functional LEAMP stack. To test if files are being served correctly, use the Web Inspector tool provided in Chrome/Safari or Firebug for Firefox and inspect the network requests. Nginx should appear as the Server in the Response Headers, with an X-Powered-By header present for dynamic requests served by Apache.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2011/07/setting-up-nginx-in-front-of-apache2-on-ubuntu-server/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>First Timer Builder, Long Time Architect</title><link>http://hybridlogic.co.uk/2011/05/first-timer-builder-long-time-architect/</link> <comments>http://hybridlogic.co.uk/2011/05/first-timer-builder-long-time-architect/#comments</comments> <pubDate>Fri, 13 May 2011 16:22:31 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[php]]></category> <category><![CDATA[technology]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=672</guid> <description><![CDATA[Within the world of web applications, and much more relevantly within PHP, there is an abundant choice of frameworks available for use. It almost goes without saying that any project begun nowadays has at its foundation some form of framework, if only to remove the tedious repetition every project involves (requests, routes, database, caching etc). [...]]]></description> <content:encoded><![CDATA[<p>Within the world of web applications, and much more relevantly within PHP, there is an abundant choice of frameworks available for use. It almost goes without saying that any project begun nowadays has at its foundation some form of framework, if only to remove the tedious repetition every project involves (requests, routes, database, caching etc). Within this world of frameworks though, two groups continually push to create new frameworks.<span
id="more-672"></span></p><p>The first are the architects. Developers who have written code for every possible situation, distilled the common functionality and enshrined the best practices. Kohana, Zend, any of the big frameworks nowadays have a solid technical foundation which provides a great starting point for most (but not all) applications.</p><p>The other group however are the newbies. Developers who are just breaking free of the copy-paste phase and starting to write code on their own two feet. Every time they give the same argument as to why they&#8217;re creating their own system versus re-using existing frameworks and libraries. Typically it comes down to: performance (my code is bespoke so it&#8217;s the fastest it can be), &#8220;can&#8217;t understand others code&#8221;, &#8220;don&#8217;t know why you&#8217;d use MVC&#8221;, &#8220;it doesn&#8217;t do everything I want&#8221; or any number of other excuses. Ultimately though it&#8217;s because of <a
href="http://en.wikipedia.org/wiki/Not_Invented_Here">NIH Syndrome</a>.</p><p>Yes they&#8217;ll end up with the rudimentary basics of a framework, admittedly with unusual terminology and globals strewn across the place, but in my opinion <strong>this is more important than using any framework</strong>.</p><p>Think about it; when we approach a new project we already know what it&#8217;s going to need and have written similar code a thousand times before. We know what changing a View layer takes compared to extricating HTML from across a dozen different files filled with business logic and database calls. But to the beginner, splitting a website into three (or two if you don&#8217;t like models) layers and all the necessary extra files and handling that requires seems insane! Better to just keep it all together.</p><p>Then they start another project. They might want to reuse a thumbnail system but end up spending more time rewriting it to remove references to the previous site. Then the designer they&#8217;ve teamed up with wants to add their shiny HTML to the app but ends up breaking the logic.</p><p>Only by seeing why not can most new developers see why. That&#8217;s why it always infuriates me when people bemoan a new developer for not using an established framework. Imagine trying to understand Zend&#8217;s layer upon layer of abstraction if all you&#8217;re used to doing is a simple function call.</p><p>So I say, let the newbies shoot themselves in the foot. Just be ready to show them how to turn their spaghetti into a nice three course meal.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2011/05/first-timer-builder-long-time-architect/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>You Built It. They Came. Now Support It.</title><link>http://hybridlogic.co.uk/2011/04/you-built-it-they-came-now-support-it/</link> <comments>http://hybridlogic.co.uk/2011/04/you-built-it-they-came-now-support-it/#comments</comments> <pubDate>Tue, 12 Apr 2011 16:15:36 +0000</pubDate> <dc:creator>Luke L</dc:creator> <category><![CDATA[Journal]]></category> <category><![CDATA[php]]></category> <category><![CDATA[programming]]></category> <guid
isPermaLink="false">http://hybridlogic.co.uk/?p=667</guid> <description><![CDATA[Since my last post on HL Twitter almost a month ago, I&#8217;ve accrued another 3,000 downloads bringing my total to just over 8,000. Now obviously this doesn&#8217;t mean 8,000 people are using my plugin, undoubtedly many of them are repeat downloads etc. But it does mean I now have a much larger userbase compared to [...]]]></description> <content:encoded><![CDATA[<p>Since my last post on <a
href="http://hybridlogic.co.uk/2011/03/hl-twitter-updates/">HL Twitter</a> almost a month ago, I&#8217;ve accrued another 3,000 downloads bringing my total to just over 8,000. Now obviously this doesn&#8217;t mean 8,000 people are using my plugin, undoubtedly many of them are repeat downloads etc. But it does mean I now have a much larger userbase compared to my initial development, and with that comes &#8220;support requests&#8221;.<span
id="more-667"></span></p><p>It begins as a trickle. A friend who has installed the plugin can&#8217;t get it to perform a certain function; you check the code and invariably find a fault in your logic. You fix it, push the update and everyone&#8217;s happy. Until a week later when someone else finds another bug. Then someone asks if it can do Feature X, you add it in for them. The next day it&#8217;s Feature Y and you don&#8217;t have time so you put it on the end of the &#8220;To Do&#8221; list.</p><p>After a while though, the emails start building up. Many of them are polite, some are hostile and most just want to know why the plugin isn&#8217;t working. It&#8217;s not just email though; support forums, blog posts, feedback forms and other means of communications begin to clog up your inbox each morning.</p><p>Seriously, spending an hour a day just responding to users is not an uncommon occurrence between the collection of plugins and tools I&#8217;ve releaed. So why do I do it? These people haven&#8217;t paid me for the bits of code I release (excepting donations which always make me smile). I&#8217;m under no obligation to support this code. So why do I spend my hard-earned time responding to each and every request I can? Simple; this is my work out there. If it fails, it&#8217;s failed because of me. Nobody likes admitting they make mistakes but everyone does. If someone points out a fault I fix it, thank them and carry on.</p><p>Over time I have learnt a few things about users however, that makes dealing with support requests much simpler.</p><ul><li><strong>Users don&#8217;t read.</strong> The FAQ for HL Twitter often answers 90% of questions, but has the user ever looked at it? In these cases, canned responses are the best solution. A nice generic email explaining where the solution can be found.</li><li><strong>Never give a timeframe</strong>. When I first released Plex Export I was inundated with really cool feature requests and I&#8217;d constantly say it&#8217;d be added by the following day. This <strong>will</strong> come back to bite you in the ass. Miss one deadline and people start asking why. Now you&#8217;re dealing with two issues. Instead, make a list, prioritise based on how much demand/time each item has/requires and then work through them when you can.</li><li><strong>Make it easy for people to get in touch</strong>, preferably through one channel. During my WordPress dev phase, I built a plugin for plugins that adds a feedback form within the plugin itself. This lets users easily get in touch with me, with minimal hassel. It even sends along diagnostic information! The worst offender for muddying the waters is WordPress itself, their support forums are a nightmare of tags that means I&#8217;m forever getting duplicate emails for hl-twitter, hl-twitter-widget, hl-twitter-plugin et al.</li><li><strong>The web is not english.</strong> While english may be the lingua franca for development, guess what; most users aren&#8217;t developers! i18n support for HL Twitter is coming, but in the meantime using simple english phrases can help immensely, especially when explaining how to fix a problem.</li><li><strong>Respond quickly.</strong> While the solution may take a while, let users know you are aware of it, even if all you do is say hang on. All developers know this from their own experiences; emailing the maintainer of a library you&#8217;re reliant on, only to wait weeks for a reply. A prompt response means the user will be much more willing to wait, even if the problem will take a while to fix.</li><li><strong>Be thankful, but take no stick.</strong> The vast majority of emails are from truly nice people who just want a bit of help, make sure you say thank you for choosing your plugin/library/tool over the myriad others. On the other hand, those outright rude or offensive emails? Ditch them. Nobody likes to wake up and be told their a crummy developer who should stick to VB macros. If someone has already gone to the effort of sending a message like that then no amount of placating or problem solving will fix their troubles. Luckily, only a fraction of emails ever fall into this category.</li></ul><p>Needless to say, supporting an application is easily as much work as writing it in the first place. But by being quick, kind and helpful you can help ensure those users that do pick your work over the alternatives have a positive impression. And I will release HL Feedback someday hopefully. See, no timetables.</p> ]]></content:encoded> <wfw:commentRss>http://hybridlogic.co.uk/2011/04/you-built-it-they-came-now-support-it/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: hybridlogic.co.uk @ 2013-05-22 07:46:01 -->