<?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>Yeah it&#039;s a blog &#187; SimpleHost project</title>
	<atom:link href="http://www.owenpellegrin.com/blog/category/net/simplehost-project/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.owenpellegrin.com</link>
	<description>I write stuff here</description>
	<lastBuildDate>Sun, 14 Aug 2011 17:36:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>I Joined a Project for Fun</title>
		<link>http://www.owenpellegrin.com/blog/net/i-joined-a-project-for-fun/</link>
		<comments>http://www.owenpellegrin.com/blog/net/i-joined-a-project-for-fun/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 16:59:43 +0000</pubDate>
		<dc:creator>Owen Pellegrin</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[SimpleHost project]]></category>

		<guid isPermaLink="false">http://www.owenpellegrin.com/blog/net/i-joined-a-project-for-fun/</guid>
		<description><![CDATA[User ident on the XVBT forums asked for some comments and suggestions about his project.&#160; I took a look at it and decided the number of comments sans explanation of fixes would exceed the size of a post, so I &#8230; <a href="http://www.owenpellegrin.com/blog/net/i-joined-a-project-for-fun/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>User ident on the XVBT forums <a href="http://www.xtremevbtalk.com/showthread.php?t=310016">asked for some comments and suggestions about his project.</a>&#160; I took a look at it and decided the number of comments sans explanation of fixes would exceed the size of a post, so I asked if I could join the project and make some lessons out of refactoring it.</p>
<p>The project itself is a neat little tool for automating <a href="http://www.imageshack.com">ImageShack</a> uploads.&#160; On the outside, it looks pretty slick.&#160; After inspecting the code, I have a bad feeling that it doesn’t work anywhere near as slick as it looks, but that’s why I’m here.&#160; The application is an almost perfect example of what WinForms development does to suppress good software design practices.&#160; In this ~3,000 line application, 2,600 of the lines are in <code>ClientForm</code>, the main form of the application.&#160; This form is responsible not only for UI interaction, but all of the application logic.&#160; There’s many other errors that are more related to what happens when a novice writes a large application than what WinForms inflicts upon you: dozens of unused methods, huge areas of commented-out code, no consistent naming conventions, etc. There’s at least a wrapper for the ImageShack API, but I haven’t peeked inside of that yet to see if it needs some work as well.&#160; It looks like it was lifted from <a href="http://www.codeemporium.com/2009/06/14/dot-net-c-sharp-wrapper-for-the-imageshack-xml-api/">a blog by a man named Bryce Thomas</a>, then converted from C# to VB.&#160; I’m not sure if any attribution is currently given; if not I’m going to fix that.</p>
<p>The code for the client itself is not under any particular license, but does happen to have this notice at the top of each file:</p>
<pre class="brush: vb;">'*************************************************************
'
' DX Coders
' Copyright 2001-2009 Simple Coders
' All Rights Reserved
' Created: 09/06/09                                   *
' Author: Johnson

' NOTICE:  DX permits you to use, modify, and
' distribute this file in any way.
' DX takes no responsibility on how you use
' this code. It is strictly for learning purposes
' and is not designed to cause harm. If you decide
' to reuse this code please give credit where credit is due.
'*************************************************************</pre>
<p>I have entertained the notion that the developer(s) (there is a mysterious second developer involved that I’ve never met) are planning to have me clean up their application for free, then cut off my access to the project and sell it.&#160; I would be disappointed if this happens, but I decided that the experience of reworking an application from a mess into something polished is something I need more than defense against my hobby work benefiting someone else.&#160; The comments above mean that, should they excommunicate me from the project I have no qualms about releasing the source code and promoting the project as a fork under a very permissive copyleft license. </p>
<p>I have one concern at this point.&#160; The code looks like it’s either a mishmash of examples gathered from various forums or the result of running a C# to VB .NET converter on a pre-existing project.&#160; Indeed, one of the more questionable bits of code is admitted to be the result of running a converter on some C# example code.&#160; If you have written an ImageShack upload client and this one looks familiar, please contact me with proof.&#160; I will not work on a project that was ripped off.</p>
<p>As I work on refactoring, I’m going to make posts that detail why I did what I did.&#160; I’m going to cross-post these onto the blog.&#160; I’d normally do them *only* on the blog, but I don’t want to undermine XVBT’s policies by taking discussion of a user problem offsite.&#160; I’m already skirting the edge by taking on a full project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.owenpellegrin.com/blog/net/i-joined-a-project-for-fun/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

