<?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>Holsee&#039;s Blog &#187; Ramblings</title>
	<atom:link href="http://www.blog.holsee.com/category/ramblings/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blog.holsee.com</link>
	<description>Adventures in Entrepreneurship, Code, Coffee and Photography..</description>
	<lastBuildDate>Fri, 02 Jul 2010 10:48:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>C# &amp; Objective C &#8211; Just thinking out loud&#8230;</title>
		<link>http://www.blog.holsee.com/2010/01/c-objective-c-just-me-thinking-out-loud/</link>
		<comments>http://www.blog.holsee.com/2010/01/c-objective-c-just-me-thinking-out-loud/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 15:42:17 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Objective C]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/2010/01/c-objective-c-just-me-thinking-out-loud/</guid>
		<description><![CDATA[I am learning Objective C at the minute as Mac users seem to actually buy software D= and because I am hungry to learn something completely different and new.&#160; I’m coming from a Java &#38; C# background.&#160; I thought I would share some of my thoughts on the two languages. This is not a “How [...]]]></description>
			<content:encoded><![CDATA[<p>I am learning Objective C at the minute as Mac users seem to actually buy software D= and because I am hungry to learn something completely different and new.&#160; I’m coming from a Java &amp; C# background.&#160; I thought I would share some of my thoughts on the two languages. This is not a “How To” guide nor direct comparison of the two languages.&#160; I am just sharing some thoughts and perspective. I really appreciate comments and feedback no matter how critical.</p>
<p><em>This post will be complemented with a comparative implementation post where I will show the same solution to a problem in C# using Mono and Objective C using Cocoa. (*Thinks to self, I should use C# to write a Mac App with Mono and <a href="http://www.cocoa-sharp.com/" target="_blank">Cocoa#</a> if I need some UI and the Objective C solution to run on <a href="http://www.blog.holsee.com/2009/12/hello-world-in-objective-c-using-gnustep-on-windows/" target="_blank">Windows using GNUstep</a> libraries).</em></p>
<h2>C# -&#160; Extreme Growth and Evolution </h2>
<p>I do about 90% of my development with C#.&#160; I love that it is such a <a href="http://en.wikipedia.org/wiki/Swiss_Army_knife" target="_blank">Swiss Army Knife</a> of a language and that its constantly growing to become an better multipurpose tool.&#160; </p>
<p>The language first came onto the scene in 2001 with it’s 1.0 release. Now in 2010 we are scheduled to see the official release of C# 4.0 which is a completely different animal indeed.&#160; C# 1.0 was very much like Java, even with version 2.0 the same could be said, but as version 3.0 came out we started to see something very different from Java indeed. </p>
<p>Check out the Language Specs by ECMA if you care that much =] </p>
<ul>
<li><a href="http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-334,%201st%20edition,%20December%202001.pdf" target="_blank">C# 1.0</a> </li>
<li><a href="http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-334,%202nd%20edition,%20December%202002.pdf" target="_blank">C# 2.0</a> </li>
<li><a href="http://www.ecma-international.org/publications/files/ECMA-ST-WITHDRAWN/ECMA-334,%203rd%20edition,%20June%202005.pdf" target="_blank">C# 3.0</a> </li>
<li><a href="http://www.ecma-international.org/publications/standards/Ecma-334.htm" target="_blank">C# 4.0</a> </li>
</ul>
<h3>With Great Power Comes Great Responsibility</h3>
<p><strong>The flip side</strong> of a language which is gaining more and more features is inconsistent development practises in said language will become an issue.&#160; </p>
<p>C++ is famous for this.&#160; For example, if you have a relatively simple task and got 5 developers of differing experience and ability to each implement the solution with a feature rich language you will get 5 very different solutions.&#160; The junior developer will look at the experts code and it will seem like some crazy voodoo.&#160; [I hope to go into this topic in more detail in another post in the future.]</p>
<p>I would classify myself as a relatively experienced when it comes to modern C#, I am familiar with 99% of the language features and I would generally use the best tool for the job (but I am young and far from perfect it must be noted!).&#160; </p>
<p>But say I was to write a solution using the powerful functional language features such as passing delegates, composing numerous expressions using Expression Trees in a resolution based approach to the problem, or even using a multi tiered LINQ query which used the lambda syntax for delegates… I would not expect a Junior C# developer to be able to effectively <a href="http://en.wikipedia.org/wiki/Grok#In_hacker_culture" target="_blank">grok</a> and maintain such a solution without the overhead of having to learn and master these aspects of the language (and in many cases the underlying framework).</p>
<p>Of course the answer is to define coding policies (possibly enforcing them using a tool like <a href="http://msdn.microsoft.com/en-us/library/bb429476(VS.80).aspx" target="_blank">FXCop</a>), but this will enviably be broken and restrictive (as in my humble opinion this always is even if its not at the point of conception).&#160; The best or most efficient or most elegant tool (in this case language feature) for the job may be a company policy NO NO!</p>
<h2>Objective C</h2>
<p>As I learn Objective C, I see a language which..</p>
<blockquote><p>“was created … in the early 1980s”&#160; </p>
<p><a href="http://en.wikipedia.org/wiki/Objective-C">http://en.wikipedia.org/wiki/Objective-C</a></p>
</blockquote>
<p>and only reached version 2 in 2006.</p>
<blockquote><p>“At the 2006 Worldwide Developers Conference, Apple announced the forthcoming release of &quot;Objective-C 2.0,&quot; a revision of the Objective-C language to include &quot;modern garbage collection, …” <a href="http://en.wikipedia.org/wiki/Objective-C#Objective-C_2.0">http://en.wikipedia.org/wiki/Objective-C#Objective-C_2.0</a></p>
</blockquote>
<p>I also see design patterns and conventions as a first class citizen in the Objective C and Cocoa world.</p>
<p align="center"><strong>What is my point? ..consistency by being so lean.</strong></p>
<p align="left">Teams developing for the Mac &amp; iPhone are aided by this consistency.&#160; It is very likely that developers for these platforms could move to a different company and become productive on a code base very quickly and effectively as the way things are done (at a high level) will not vary a great deal.&#160; </p>
<p align="left">The <a href="http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller" target="_blank">MVC</a> pattern is an integral part of how applications are developed with Objective C, Cocoa and Interface Builder.&#160; This helps a great deal.&#160; With C#, .NET and the associated View technologies such as WPF, WinForms, WebForms, GTK etc the design pattern in place ranges from MVC, MVP, MVVM to <strong>none what so ever</strong> which is too often the case to the expense of my (and many others) mental health.&#160; This means that the consistency is not in place and design patterns (i.e. separation of concerns) are not seen as a fundamental as much as they are seen as an advanced topic and higher learning.&#160; Microsoft have released their MVC framework for web development which is called <a href="http://www.asp.net/(S(d35rmemuuono1wvm1gsp2n45))/mvc/" target="_blank">ASP.NET MVC</a>.&#160; This is a step in the correct direction, not to mention they released it under the <a href="http://www.opensource.org/licenses/ms-pl.html" target="_blank">MS-PL license</a> which allows the Mono Team to take advantage of it as part of the Mono core libraries.</p>
<p align="left">Objective C as a language is what it is, a C variant which introduces object orientation and the notion message passing to call methods on instances using a “infix” notation as opposed to “postfix” which most people are used to.</p>
<p align="left"><strong>Example: Calling a method in ObjC, C++ &amp; C#</strong></p>
<ul>
<li>
<div align="left">[obj method: parameter]; //Objective C – Infix</div>
</li>
<li>
<div align="left">obj-&gt;method(parameter); //C++ &#8211; postfix</div>
</li>
<li>obj.Method(parameter); //C# – postfix </li>
</ul>
<p align="left">As the language is low level enough, even if the solution is quite complex relative to the equivalent C# implementation there is very little that can’t be done. </p>
<p align="left">In my discussion of C# I tried to talk purely about the language, not the underlying framework be it .NET or <a href="http://www.mono-project.com/Main_Page" target="_blank">Mono</a>. With Objective C much of its power comes from the Cocoa libraries, the same can be said about C# and its frameworks I guess, but C# as a language is far more feature rich. </p>
<p align="left">I am really exited about learning Objective C, its dynamic <a href="http://en.wikipedia.org/wiki/Smalltalk" target="_blank">Small Talk</a>-esk nature intrigues me.&#160; It is lean in language features relative to C# and that I believe is its biggest advantage.</p>
<h3>Generalised Comparisons of C# &amp; Objective C</h3>
<p>C# is powerful and can be very elegant and highly productive (in the correct hands).&#160; The language features such as LINQ, lambdas, anonymous classes, expression composition, statically compiled dynamic madness, covariance &amp; contravariance… are something special, but the languages many advanced features may baffle and confuse those who are not intimate with it. </p>
<p>The development stacks which C# lives in lack structure out of the box it could be said, this can lead to some nasty un-maintainable evil without the correct guidance.&#160; When done properly C# very plays well with tooling allowing for highly accelerated development and refactoring with ease and efficiency.&#160; Objective C (which I am no expert in) seems to exist in a world of structure, best practises and conventions without taking it to the extreme as Rails does with Ruby (i.e. without a 500 page book on conventions).&#160; The language is light when it comes to features but by its nature it is by no means weak.&#160; </p>
<p>C# lives on a higher level, it is about 4 or 5 generations away from C whereas Objective C is 1 generation about C.&#160; </p>
<p>There low level control fits well with the Apple ethos.&#160; The proprietary nature of Apples hardware and the low level nature of Objective C means you can interact with the hardware components, with a large degree of control and in a consistent fashion without worrying if the hardware will work with your app.&#160; So Objective C is a better fit with the Mac in that regard. </p>
<p>In comparison C# and Java live at a higher abstraction.&#160; They are designed to work with a massive range of machines with potentially infinite hardware configurations so the fine grained control is sacrificed for portability. That is not to say you can’t call into C code from C# or Java when the need is there.</p>
<p>//Todo: This post is in need of Refactoring, but all the tests are passing =] (i.e. I think I said all I wanted to)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2010/01/c-objective-c-just-me-thinking-out-loud/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My New Reading / Late Night Coding Lair..</title>
		<link>http://www.blog.holsee.com/2009/12/my-new-reading-late-night-coding-lair/</link>
		<comments>http://www.blog.holsee.com/2009/12/my-new-reading-late-night-coding-lair/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 21:41:18 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Work Environment]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/2009/12/my-new-reading-late-night-coding-lair/</guid>
		<description><![CDATA[With some cash I got for Christmas I thought I would spend it on creating a chilled out area in my house for reading and for some late night coding.&#160; I work remotely from a home office… I have a nice set-up, but I desire a space which is less formal and more relaxing.&#160; These [...]]]></description>
			<content:encoded><![CDATA[<p align="left">With some cash I got for Christmas I thought I would spend it on creating a chilled out area in my house for reading and for some late night coding.&#160; I work remotely from a home office… I have a nice set-up, but I desire a space which is less formal and more relaxing.&#160; These items will go a long way towards achieving this: </p>
<p align="center">XXL Bean Bag</p>
<p align="center"><a href="http://www.blog.holsee.com/wp-content/uploads/2009/12/image5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blog.holsee.com/wp-content/uploads/2009/12/image_thumb5.png" width="244" height="246" /></a> </p>
<p align="center">Lap Desk</p>
<p align="center"><a href="http://www.blog.holsee.com/wp-content/uploads/2009/12/image6.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blog.holsee.com/wp-content/uploads/2009/12/image_thumb6.png" width="246" height="203" /></a> </p>
<p align="center">Blue Lava Lamp </p>
<p align="center"><a href="http://www.blog.holsee.com/wp-content/uploads/2009/12/image7.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.blog.holsee.com/wp-content/uploads/2009/12/image_thumb7.png" width="145" height="246" /></a> </p>
<p align="center">Blue Plasma Lamp</p>
<p><a href="http://www.blog.holsee.com/wp-content/uploads/2009/12/image8.png"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="image" border="0" alt="image" src="http://www.blog.holsee.com/wp-content/uploads/2009/12/image_thumb8.png" width="121" height="246" /></a> </p>
</p>
</p>
<p align="left">…I welcome all suggestions! Kthx =]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/12/my-new-reading-late-night-coding-lair/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The 5 newest additions to my &#8216;dev&#8217; book shelf..</title>
		<link>http://www.blog.holsee.com/2009/12/the-5-newest-additions-to-my-dev-book-shelf/</link>
		<comments>http://www.blog.holsee.com/2009/12/the-5-newest-additions-to-my-dev-book-shelf/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 21:31:09 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[MacRuby]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Objective C]]></category>
		<category><![CDATA[Unit Testing]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/2009/12/the-5-newest-additions-to-my-dev-book-shelf/</guid>
		<description><![CDATA[Just thought I would share my 5 most recent programming book purchases.
The first of which is “The Art of Unit Testing (with examples in ‘C#’ .NET)” by Roy Osherove, the only book on this list I have finished reading. This book I found to be essential reading, and I don’t say that often. I rate [...]]]></description>
			<content:encoded><![CDATA[<p>Just thought I would share my 5 most recent programming book purchases.</p>
<p>The first of which is “The Art of Unit Testing (with examples in ‘C#’ .NET)” by <a href="http://weblogs.asp.net/rosherove/" target="_blank">Roy Osherove</a>, the only book on this list I have finished reading. This book I found to be essential reading, and I don’t say that often. I rate this book so highly I recommended that it become a required text for the “Agile and Component based Development” Module at my old university.&#160; If you are looking to improve your unit testing, or if you are just starting out with unit testing this book is for you.&#160; The author purposefully avoids the topic Test Driven Development (TDD) in order to achieve clarity and focus on the actually unit testing of code without the confusion which can be caused by trying to do so whilst at the same time explaining the TDD workflow.</p>
<p><a href="http://www.amazon.co.uk/Art-Unit-Testing-Examples-NET/dp/1933988274/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1262032997&amp;sr=1-1" target="_blank"><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="" src="http://i27.tinypic.com/27xf7nn.jpg" width="242" height="309" /></a></p>
<p>C# is the love of my life.. two more books on the language from two highly regarded individuals is exactly what the doctor ordered.</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="" src="http://www.informit.com/ShowCover.aspx?isbn=0321580176" width="241" height="320" /></p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="" src="http://s3.amazonaws.com/adaptiveblue_img/books/c_in_depth_what_you_need_to_master_c_2_3/jon_skeet" width="248" height="309" /></p>
<p align="center"><em>(The MEAP for the second edition (C# 4) is available </em><a href="http://www.manning.com/skeet2/" target="_blank"><em>here</em></a><em>)</em></p>
<p>2010 for me is going to be the year of C# 4, Objective C, Cocoa and Ruby.</p>
<p>When I was a Microsoft Student Partner I got it in the neck from my friends (especially the Linux Zealot housemate) about my favourite language and framework not being portable nor open source.&#160; This really pushed by button (as they well knew) considering I am passionate Open Source, Cross Platform development and learning new languages D= !</p>
<p>I am a massive fan of the <a href="http://www.mono-project.com" target="_blank">Mono Project</a>.&#160; I love the idea of C# being truly cross platform.&#160; I also like the fact that many of the .NET libraries are being ported to run on Linux and OSX.&#160; Over the last year I have been working hard to get all my apps that I write in C# to work as well on Linux (where possible).&#160; But there was one platform I did not work with.. the ever more popular OSX.</p>
<p>I find that Apple have an interesting platform (although I may not agree on principle with their ethos).&#160; But this doesn’t mean that I don’t wish to expand my skill set to be a competent developer on their platform.</p>
<p>I purchased a Macbook this Christmas, <em>against my better judgement, </em>and have purchased these two books:</p>
<p><img style="display: block; float: none; margin-left: auto; margin-right: auto" alt="" src="http://3.bp.blogspot.com/_QLwms0mVa4w/SVjmBGqQEzI/AAAAAAAAADw/OCVPn3ZyX10/s400/loc.jpg" width="234" height="308" /></p>
<p><a href="http://www.blog.holsee.com/wp-content/uploads/2009/12/0596004230.01._SCLZZZZZZZ_.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="0596004230.01._SCLZZZZZZZ_" border="0" alt="0596004230.01._SCLZZZZZZZ_" src="http://www.blog.holsee.com/wp-content/uploads/2009/12/0596004230.01._SCLZZZZZZZ__thumb.jpg" width="181" height="306" /></a></p>
<p>Why learn Objective C when I could just use C# with Mono?</p>
<p>Because I, as a hacker at heart, am not satisfied with some abstraction over what is going on… I want to be a strong Objective C developer with a sound knowledge of Cocoa and how things work in the Apple world.&#160; I find the difference from Java and .NET refreshing and I love learning stuff that is completely new.&#160; I want to be able to more effectively use and contribute back into open source projects like <a href="http://www.mono-project.com/CocoaSharp" target="_blank">CocoaSharp</a> and <a href="http://www.macruby.org/" target="_blank">MacRuby</a> / <a href="http://www.macruby.org/trac/wiki/HotCocoa" target="_blank">HotCocoa</a>.</p>
<p>I like how its low level and not “as easy”… I have recently graduated and I am still hungry so lets hope this new educational expedition lives up to my expectations.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/12/the-5-newest-additions-to-my-dev-book-shelf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep the Fun in Computer Science…</title>
		<link>http://www.blog.holsee.com/2009/12/keep-the-fun-in-computer-science/</link>
		<comments>http://www.blog.holsee.com/2009/12/keep-the-fun-in-computer-science/#comments</comments>
		<pubDate>Mon, 28 Dec 2009 20:20:39 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Programming Books Quotes]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/2009/12/keep-the-fun-in-computer-science/</guid>
		<description><![CDATA[“I think that it&#8217;s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>“I think that it&#8217;s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don&#8217;t think we are. I think we&#8217;re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don&#8217;t become missionaries. Don&#8217;t feel as if you&#8217;re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don&#8217;t feel as if the key to successful computing is only in your hands. What&#8217;s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.”</p>
<p>Alan J. Perlis (April 1, 1922-February 7, 1990)</p>
<p><a title="http://is.gd/5EA5f" href="http://is.gd/5EA5f">http://is.gd/5EA5f</a> (MIT Press)</p>
</blockquote>
<p>I love this quote and I am starting to really love this book.&#160; Although it is a mammoth text I find myself finding lots of brilliant quotes and useful experience which as a junior developer I really cant get enough of.</p>
<p>Another great snippet from the Foreword:</p>
<blockquote><p>“To appreciate programming as an intellectual activity in its own right you must turn to computer programming; you must read and write computer programs &#8212; many of them. It doesn&#8217;t matter much what the programs are about or what applications they serve. What does matter is how well they perform and how smoothly they fit with other programs in the creation of still greater programs. The programmer must seek both perfection of part and adequacy of collection”</p>
<p>Alan J. Perlis</p>
<p><a title="http://is.gd/5EAlT" href="http://is.gd/5EAlT">http://is.gd/5EAlT</a> (MIT Press)</p>
</blockquote>
<p>I even thought the first line was brilliant D= !</p>
<blockquote><p>“This book is dedicated, in respect and admiration, to the spirit that lives in the computer.”</p>
<p>Alan J. Perlis</p>
<p><a title="http://is.gd/5EA5f" href="http://is.gd/5EA5f">http://is.gd/5EA5f</a> (MIT Press)</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/12/keep-the-fun-in-computer-science/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Every days a school day: Don&#8217;t Count Your Chickens!</title>
		<link>http://www.blog.holsee.com/2009/10/every-days-a-school-day-dont-count-your-chickens/</link>
		<comments>http://www.blog.holsee.com/2009/10/every-days-a-school-day-dont-count-your-chickens/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 10:21:40 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Contracting]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/2009/10/every-days-a-school-day-dont-count-your-chickens/</guid>
		<description><![CDATA[Introduction:
Don&#8217;t count your chickens until they have hatched.
In this case swap eggs for contracts and chickens for payments.
This is a tale of why it is important to secure your work with a contract, being a nice guy can lead to you getting burned if you’re not smart so be careful.
The Story:
Recently I approached an acquaintance [...]]]></description>
			<content:encoded><![CDATA[<p><b>Introduction:</b></p>
<p>Don&#8217;t count your chickens until they have hatched.</p>
<p>In this case swap eggs for contracts and chickens for payments.</p>
<p>This is a tale of why it is important to secure your work with a contract, being a nice guy can lead to you getting burned if you’re not smart so be careful.</p>
<p><b>The Story:</b></p>
<p>Recently I approached an acquaintance that was developing a funky product and was in need of some expertise which I knew I could offer.&#160; I had no real desire to make money from this project as it was something I would do for free.</p>
<p>I informed them I would help develop the product, teaching them as I go along for free if the product was made <b>Open Source.</b> Open Source development would protect me legally as the contributor to the project, whilst benefiting the world (as I like to think open source does).</p>
<p>This was not going to be the case.&#160; I was told as the product was to be commercial, so I put a pretty generous financial proposal for my time which was subsequently “<i>Accepted”</i>.</p>
<p>Things looked good at this point; I was almost counting my chickens for another payday.</p>
<p>I knew from my research into good practises in contracting and advice passed onto me that if there is money involved and a commercial product that (at least) 3 things should be checked:</p>
<ul>
<li><b>Credibility*</b> of the Client and their ability to pay (Credit Check). </li>
<li>The <b>Indemnity*</b> agreement as you could lose it all if things go sour. </li>
<li>There is a <b>Contract*</b> which both parties agree to. </li>
<p>   <i></i></ul>
<ul><i>Note: I thought I knew the client and things were very friendly between us so I skipped the Credit Check. </i></ul>
<p>Things were good, spirits were high and I was genuinely getting excited about working on the project!&#160; I had one week to work on this project which was more than enough time.</p>
<p>Things started to worry me whenever my request for a contract was met with odd behaviour.&#160; There was a lot of fluff spoken to me in reply to my solid enquiries to getting a contract sorted.&#160; The client assured me everything was fine and that the money (which I had officially invoiced them for) was on its way to my bank account for the <u>Monday morning</u> which was to be the first day’s work.</p>
<p>Payment didn’t appear in my bank account and it was now <u>Wednesday</u> of the week, nor was there any official response to my invoice.&#160; In the meantime I was working overtime on another contracted project in order to free up time for the contract in question later in the week.&#160; As the delay in payment was leading to time running out for the project to be completed.</p>
<p>At this point I started to throw some functional prototypes together, but I kept them close to my chest as there was no sign of a contract or the payment which would allow to me to start working on the project properly.</p>
<p>The inner sceptic kicked in, and I decided to make it my policy not to work anymore out of contract on this project as things were starting to smell fishy and I believed any time I contributed would most likely go unpaid and I would have been taken for a free ride so to speak.</p>
<p>In the meantime I was working away happily on my main contract which took precedence, so it was not like I was losing anything, but I certainly wasn’t gaining anything other than experience dealing with an awkward client.</p>
<p>I made it clear I was not going to take on any responsibility for the indemnity for the client, for working on this project as I knew the client and they spent a lot of time in the courtroom due to prior projects, and this scared me to be honest.</p>
<p>After seeking advice from people I trust they helped my realise that without a contract I would be powerless to claim for the work I would deliver, not to mention the legal implications regarding IR35 and liability.</p>
<p>My general policy is, if I am to undertake legal liability for a commercial product whilst working as an independent contractor I will obtain Liability / Indemnity Insurance for the project, and this costs more and it reflected in the price for my services, simple.</p>
<p>It was now <u>Thursday</u> and payment was still stalled. At this point I started to question the funding for the project and as I knew the funding was coming from a 3rd party I thought I would risk not having a contract if I was allowed to have a conversation with the funding party in the deal.</p>
<p>As you can see now, what started off as a nice little project and a kind offer on my part to help out a fellow professional turned into a mess.</p>
<p><u>Friday</u> morning came, no payment.&#160; This meant that if I was to undertake the work at this stage I would be doing so on good faith.</p>
<p>The client wished to meet up and was eager for work to begin.&#160; They thought I was being awkward, but I knew I had to tread lightly and play this smart by not getting involved until it was on paper and I was protected.</p>
<p>At this stage:</p>
<p>I had forgone the preliminary Credit Check on the Client:</p>
<p>- This meant I not sure if they could pay me.</p>
<p>I was willing to commence work in question without a contract:</p>
<p>- This meant I didn’t have a leg to stand on if I did the work but was never paid.</p>
<p>The payment was 5 days late and the client was acting as a middle man without any real answers.&#160; I just continued to play it cool, I had offered enough of a concession at this point that I wouldn&#8217;t have a leg to stand on, but at least I was trying to get things going. <b>This being said, I still needed some kind of guarantee</b> as the client&#8217;s words were growing increasing empty and the buck was being passed constantly onto a third party who apparently was having issues with the payment (which I found hard to believe from my prior experience with contracts and payments).</p>
<p>So I put it to the client that if they passed on the contact details of the funding party (who was meant to be transferring to payment to me but had not done so to date), that I would get the payment sorted directly with them, iron out any problems and I in the mean time I would commence work regardless of there being no contract nor payment received. I know now that this was me being too nice.</p>
<p>The response I got when I asked to be connected directly to the funding party was &quot;That&#8217;s no problem&quot;, but without the actual details which would enable me to do so.</p>
<p>When I enquired for the details the response I got was that the whole thing was off.&#160; I breathed a sigh of relief and had a giggle. Can you imagine if I had of worked on good will all week with no payment, no contract, no insurance… only to be told on the Friday afternoon that the whole thing was off.</p>
<p><b>The Lesson Learned:</b></p>
<p>Don’t ever sell yourself short; don’t forgo your legal protection and security of payment when the client is being awkward.&#160; You may be like myself and just want to get to the code (or the task in hand whatever it may be), but keep your head screwed on.&#160; If the client is legit they should have no problem agreeing to a contract being signed at the very beginning and actually doing so.</p>
<p>When it comes to the pre-project contract and payments and you find client is constantly not sticking to their promises and/or passing responsibility of the failings onto other 3rd parties, its often wise to question them and get some confirmation that you’re not being taken for a ride. But when things start to smell fishy it generally means something’s up so don’t begin work until your protected via a contract (or at the very least the money is in your account).</p>
<p>Even though I made many concessions to try and get the project started including forgoing the contract signing, and willingness to start without payment, I did make sure I didn’t start until I was 100% sure I wasn’t going to be screwed over, I did so by challenging the client to give me the so called funding party contact details in order to confirm with them what I was being told the entire week regarding the stalled payments etc.</p>
<p>Hope this was helpful!</p>
<p><b>Feedback:</b></p>
<p>I&#8217;m always interested in hearing what others have to say, so comments are very welcome&#8230; please keep them constructive and on topic!</p>
<ul>
<li>The client thinks I was being awkward, do you? </li>
<li>What could I have done better? </li>
<li>Do you think I acted professionally? </li>
</ul>
<p>I’m interested in hearing your thoughts, Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/10/every-days-a-school-day-dont-count-your-chickens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So I&#8217;ve Started a Company..</title>
		<link>http://www.blog.holsee.com/2009/10/so-ive-started-a-company/</link>
		<comments>http://www.blog.holsee.com/2009/10/so-ive-started-a-company/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 14:00:07 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Business]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/?p=97</guid>
		<description><![CDATA[A few weeks ago I started my company “Holdsworth &#38; Co Consultants”.
I thought this name to be a tad cheesy but it best describes the business, as the majority of the work which is undertaken involved consultancy and the “&#38; Co” refers to the fact in some cases I would subcontract designers and/or other developers [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I started my company “<strong>Holdsworth &amp; Co Consultants</strong>”.</p>
<p>I thought this name to be a tad cheesy but it best describes the business, as the majority of the work which is undertaken involved consultancy and the “&amp; Co” refers to the fact in some cases I would subcontract designers and/or other developers in order to effectively complete the tasks at hand.</p>
<p>I found umbrella companies too restricting for my needs, but great for short term contracting, as my business needs include capital expenditure and management which the umbrella company would not allow for under its form of expenses.</p>
<p>So I ran through the business start-up routine of getting up to speed with the small business laws, taxation and recommended practises, then registered with the powers that be.  I have studied Business Studies for 4 years and Economics for 2 so I was well prepared for what was required and process went smoothly.</p>
<p>As a contractor I knew I would have to beware of <strong>IR35</strong>.  This legislation was brought in to stop people working as contractors when they were doing the job of an “Employee”.  By employee they mean working 9 to 5 so to speak as a part of a particular business, not really as a independent but in the guise of one in order to achieve the subsequent benefits.</p>
<p>A great resource for getting up to speed with IR35, how to avoid it and its implications is can be found <a href="http://www.contractorcalculator.co.uk/determine_contract_passes_ir35.aspx" target="_blank">here</a>.</p>
<p>The next step for me is to get a business account set up to separate all my business concerns from my personal ones.</p>
<p><strong>It is nice being my own boss</strong>, who knows if I’ll keep up the contracting, maybe one of my projects will come into fruition in the near future and I can ride one of those ponies.</p>
<p>I’m gaining a broad spectrum of skills working as a contractor.. and it only enhances my portfolio as a hired gun.. but that is a post for another day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/10/so-ive-started-a-company/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Shiny New Blog</title>
		<link>http://www.blog.holsee.com/2009/10/test/</link>
		<comments>http://www.blog.holsee.com/2009/10/test/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 23:52:05 +0000</pubDate>
		<dc:creator>holsee</dc:creator>
				<category><![CDATA[Ramblings]]></category>
		<category><![CDATA[Rambling]]></category>

		<guid isPermaLink="false">http://www.blog.holsee.com/?p=93</guid>
		<description><![CDATA[Hello World!
I’ve moved my blog now from http://holsee.blogspot.com to my newly purchase hosting from Dreamhost.
Blogger was fine, a vast improvement over Microsoft offering Live Spaces, but so far I have to say I’m very impressed with Wordpress.
I decided I would link to my old blog rather than importing all my old posts.. I don&#8217;t know.. [...]]]></description>
			<content:encoded><![CDATA[<p>Hello World!</p>
<p>I’ve moved my blog now from <a href="http://holsee.blogspot.com">http://holsee.blogspot.com</a> to my newly purchase hosting from Dreamhost.</p>
<p>Blogger was fine, a vast improvement over Microsoft offering Live Spaces, but so far I have to say I’m very impressed with Wordpress.</p>
<p>I decided I would link to my old blog rather than importing all my old posts.. I don&#8217;t know.. I guess I just want a fresh start and my old posts wont be going anywhere so its all good.</p>
<p><strong>Syntax Highlighting</strong></p>
<p>I love changing my themes so I needed to make sure whatever I used for syntactical highlighting had to work with both dark and light themes. I am using the <strong>WP-Syntax</strong> Wordpress plug-in. I’ll no doubt play with a few others before I settle.  <strong>Syntax Highlighter 2.x</strong> is another option but I was getting some <em>funky behaviour</em> when I used a Dark them.</p>
<p>For the mean time my code is going to look like this:</p>
<p><strong>C#</strong></p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> args<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span>
	Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Hi Whirld!&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p><strong>Ruby</strong></p>

<div class="wp_syntax"><div class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'rubygems'</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'sinatra'</span>
&nbsp;
get <span style="color:#996600;">'/hi'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
  <span style="color:#996600;">&quot;Hello World!&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
get <span style="color:#996600;">'/hello/:name'</span> <span style="color:#9966CC; font-weight:bold;">do</span>
    <span style="color:#008000; font-style:italic;"># matches &quot;GET /hello/foo&quot; and &quot;GET /hello/bar&quot;</span>
    <span style="color:#008000; font-style:italic;"># params[:name] is 'foo' or 'bar'</span>
    <span style="color:#996600;">&quot;Hello #{params[:name]}!&quot;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></div></div>

<p>I plan to blog mostly surrounding my two languages for choice C# &amp; Ruby.. but I’m a bit of a language nerd so there will no doubt be allsorts.</p>
<p>Oh.. I’m looking to look into the space of DSLs and Code Generation so I’ll most likely be rambling about my experiences.</p>
<p>Time to sleep, meeting the bank manager tomorrow to open a business account.. fun never ends.</p>
<p>Goodbye World!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blog.holsee.com/2009/10/test/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
