<?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>Jason Grey &#187; Programming</title>
	<atom:link href="http://www.jason-grey.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jason-grey.com</link>
	<description>web development, mobile, service oriented architecture, flex, flash, silverlight, ajax and so on.</description>
	<lastBuildDate>Wed, 27 May 2009 00:48:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What makes a good component/service?</title>
		<link>http://www.jason-grey.com/2008/10/what-makes-a-good-componentservice/</link>
		<comments>http://www.jason-grey.com/2008/10/what-makes-a-good-componentservice/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 15:46:54 +0000</pubDate>
		<dc:creator>jg</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Services]]></category>
		<category><![CDATA[architecture]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/?p=23</guid>
		<description><![CDATA[A few collected thoughts &#38; notes from around the web regarding what makes a good component/service.

Interface &#8211; all implementations share this. Should have few methods, use data objects as return values, take primitives as inputs, throw only custom exceptions, and be very, very well documented.
Implementations &#8211; implement the logic behind the service. May provide extra [...]]]></description>
			<content:encoded><![CDATA[<p>A few collected thoughts &amp; notes from around the web regarding what makes a good component/service.</p>
<ul>
<li>Interface &#8211; all implementations share this. Should have few methods, use data objects as return values, take primitives as inputs, throw only custom exceptions, and be very, very well documented.</li>
<li>Implementations &#8211; implement the logic behind the service. May provide extra features such as caching, or such things as optional collaborations.</li>
<li>Data &#8211; data objects this service deals with. Should be immutable, comparable, cloneable as much as is possible. Should be serializable/XML/Persistance annotated in most languages.</li>
<li>Storage &#8211; Data (or data.io) package should define storage API, and an in-memory data store. Allow other services/projects/subprojects to define database backed or other kinds of data stores.</li>
<li>Cache &#8211; Data.Cache packages should define cache API? (or can this be standard per runtime?) Who should be in charge of caching? The service itself, or the user of the service?</li>
<li>Use dependency injection for all services/data stores it requires. Use constructor-injection as much as possible.</li>
<li>Throw errors early &#8211; in constructor if possible.</li>
<li>Exceptions &#8211; custom exceptions for high level categories of erroneous behavior (try not to do one for every possible condition &#8211; classify, and wrap). Don&#8217;t re-throw exceptions from other frameworks &#8211; wrap in custom exception.</li>
<li>Make behavior configurable via dep injection as much as possible. Use filters or strategies.</li>
<li>Inject 1 configuration object instead of many options. Standardize on configuration API/Framework for each runtime/language.</li>
<li>Standardize on logging framework/API for each runtime/language, and make sure it&#8217;s used (instead of System.out or simliar)</li>
<li>Provide events/messages and/or hooks for important happenings so others can do things pre/post.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2008/10/what-makes-a-good-componentservice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone development thoughts</title>
		<link>http://www.jason-grey.com/2008/06/iphone-development-thoughts/</link>
		<comments>http://www.jason-grey.com/2008/06/iphone-development-thoughts/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 00:49:43 +0000</pubDate>
		<dc:creator>jg</dc:creator>
				<category><![CDATA[My Work]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[objective-c]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/?p=17</guid>
		<description><![CDATA[I&#8217;ve recently finished the functionality of my first native iPhone application. Here are some thoughts:

Apple makes it easy to &#8220;do the right thing&#8221; as far as the UIKit libraries go, pretty nice, and cleaner &#38; easier than Swing or .NET in many ways. Very humanistic.
Unless I&#8217;m missing something, common tasks like field validation don&#8217;t seem [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently finished the functionality of my first native iPhone application. Here are some thoughts:</p>
<ul>
<li>Apple makes it easy to &#8220;do the right thing&#8221; as far as the UIKit libraries go, pretty nice, and cleaner &amp; easier than Swing or .NET in many ways. Very humanistic.</li>
<li>Unless I&#8217;m missing something, common tasks like field validation don&#8217;t seem to be built-in, that&#8217;s a hassle&#8230;</li>
<li>No SOAP libraries yet either.</li>
<li>Interface Builder isn&#8217;t quite there yet &#8211; many components still missing, so unless you&#8217;re doing a pretty simple UI, better code it by hand (which isn&#8217;t really <em>that </em>bad&#8230;)</li>
<li>I&#8217;m not a huge fan of XCode &#8211; the code completion is very weak compared to eclipse, as is the display of errors/warnings &#8211; many more clicks/research needed to diagnose what&#8217;s going on.</li>
<li>Managing your own memory sucks&#8230;</li>
<li>Since I&#8217;m coding the UI by hand, lining things up pixel perfect is quite a hassle. I&#8217;d be nice if they had the concept of a layout manager, like Swing/AWT, laying out components in a grid is not intuative (many examples I&#8217;ve seen use UITableView and a whole mess of ugly switch statements &#8211; very inconvenient &amp; hard to maintain.)</li>
</ul>
<p>Read on for more about the app&#8230;</p>
<p><span id="more-18"></span></p>
<p>The application is a front end for a project I&#8217;ve been working on for the last few months. The backend of the project is very involved, lots of data flying around, and much analysis, the end result of which is exposed via a few web services. One to find a location based on name, lat/lon, etc, and one to get news near that location (sort of like <a href="http://www.topix.com/">topix</a> in some ways).</p>
<p>So far, everything is functional. The next steps will be to refactor how the data &amp; events flow between components of the application &#8211; I now have a good grip on what a good architecture is for iPhone applications, and will be able to clean up the code considerably.</p>
<p>Overall, it was fun to learn a new language, the SDK wasn&#8217;t too painful, and the application will be pretty darn slick. I&#8217;d be cool to do another &#8211; so if you know someone that wants an iPhone application developed, let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2008/06/iphone-development-thoughts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Presenting at mn.swf camp 2008</title>
		<link>http://www.jason-grey.com/2008/04/presenting-at-mnswf-camp-2008/</link>
		<comments>http://www.jason-grey.com/2008/04/presenting-at-mnswf-camp-2008/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 02:00:51 +0000</pubDate>
		<dc:creator>jg</dc:creator>
				<category><![CDATA[My Work]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[air]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[presentation]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/?p=15</guid>
		<description><![CDATA[I&#8217;ll be presenting development best practices in the Flex/Flash/AIR tomorrow at mn.swf camp. Check back on this post for a copy of the presentation after I&#8217;m done.
Here is my presentation.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be presenting development best practices in the Flex/Flash/AIR tomorrow at <a href="http://www.mnswf.org/camp/">mn.swf camp</a>. Check back on this post for a copy of the presentation after I&#8217;m done.</p>
<p>Here is <a href="http://www.jason-grey.com/wp-content/uploads/2008/04/tips-techniques.pdf">my presentation</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2008/04/presenting-at-mnswf-camp-2008/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learn objective-c/Cocoa (Mac OSX) development on the PC&#8230;</title>
		<link>http://www.jason-grey.com/2008/04/learn-objective-ccocoa-mac-osx-development-on-the-pc/</link>
		<comments>http://www.jason-grey.com/2008/04/learn-objective-ccocoa-mac-osx-development-on-the-pc/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 02:08:13 +0000</pubDate>
		<dc:creator>jg</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/index.php/2008/04/01/learn-objective-ccocoa-mac-osx-development-on-the-pc/</guid>
		<description><![CDATA[So, I got  interested in developing an application for the iPhone, but I don&#8217;t have a decent Mac to develop on. I found that the iPhone development is based on a subset of the Mac Cocoa framework. OSX came from NeXTStep. Cocoa is mostly NeXTStep libraries&#8230; hummm&#8230; how can I learn Objective-C/Cocoa on a [...]]]></description>
			<content:encoded><![CDATA[<p>So, I got  interested in developing an application for the iPhone, but I don&#8217;t have a decent Mac to develop on. I found that the iPhone development is based on a subset of the Mac Cocoa framework. OSX came from NeXTStep. Cocoa is mostly NeXTStep libraries&#8230; hummm&#8230; how can I learn Objective-C/Cocoa on a PC&#8230; let me think&#8230;<span id="more-14"></span></p>
<ol>
<li>Download and install <a href="http://www.gnustep.org/experience/Windows.html">GNUStep System and Core</a> for windows.</li>
<li><a href="http://www.gnustep.org/resources/ObjCFun.html">Learn </a>&amp; write some objective-c code using some of the NS libraries</li>
<li>Compile using gcc (comes with GNUStep). I use <a href="http://ant.apache.org/">ant</a>, my build file is attached &#8211; fiddle with it to work in your environment</li>
<li>You may also have to have <a href="http://www.cygwin.com/">CygWin </a>installed. I&#8217;m not actualy sure which pieces are making this all work yet, so give that a try (install the base package, plus gcc, gdb, and whatever else you like)</li>
</ol>
<p>Currently, I&#8217;ve got this all working, and I&#8217;m using the Foundation library in the attached example. Going to try getting some UI stuff to work next.</p>
<p>Here&#8217;s my <a title="Sample Project" rel="attachment wp-att-14" href="http://www.jason-grey.com/index.php/2008/04/01/learn-objective-ccocoa-mac-osx-development-on-the-pc/sample-project/">Sample Project</a> zip file in all it&#8217;s glory</p>
<p>I love open source&#8230; hehe.</p>
<p>p.s. this was also a <a href="http://cocoadevcentral.com/">handy site</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2008/04/learn-objective-ccocoa-mac-osx-development-on-the-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First thoughts on Microsoft Silverlight</title>
		<link>http://www.jason-grey.com/2007/07/first-thoughts-on-microsoft-silverlight/</link>
		<comments>http://www.jason-grey.com/2007/07/first-thoughts-on-microsoft-silverlight/#comments</comments>
		<pubDate>Sat, 28 Jul 2007 17:23:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/2007/07/28/first-thoughts-on-microsoft-silverlight/</guid>
		<description><![CDATA[
Cool that it can work with plain JS and XML
Fast rendering engine
Cross platform/browser
MediaElement events not great &#8211; may be due to the beta version.

I&#8217;m currently working on a very simple video player in SilverLight that will be controlled via JavaScript.
]]></description>
			<content:encoded><![CDATA[<ol>
<li>Cool that it can work with plain JS and XML</li>
<li>Fast rendering engine</li>
<li>Cross platform/browser</li>
<li>MediaElement events not great &#8211; may be due to the beta version.</li>
</ol>
<p>I&#8217;m currently working on a very simple video player in SilverLight that will be controlled via JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2007/07/first-thoughts-on-microsoft-silverlight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Oriented Programming</title>
		<link>http://www.jason-grey.com/2006/03/object-oriented-programming/</link>
		<comments>http://www.jason-grey.com/2006/03/object-oriented-programming/#comments</comments>
		<pubDate>Tue, 21 Mar 2006 02:43:00 +0000</pubDate>
		<dc:creator>jg</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.jason-grey.com/2006/03/20/object-oriented-programming/</guid>
		<description><![CDATA[One of the most important concepts you can learn is Object Oriented programming. Once OOP is mastered, learning any object style language becomes much simpler. Common OOP languages used on the web: Java, C#, as well as scripting languages such as JavaScript, and ActionScript.
Check out this wikipedia article for a general overview of OOP and [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most important concepts you can learn is Object Oriented programming. Once OOP is mastered, learning any object style language becomes much simpler. Common OOP languages used on the web: <a href="http://java.sun.com">Java</a>, <a href="http://msdn.microsoft.com/vcsharp/programming/language/">C#</a>, as well as scripting languages such as <a href="http://en.wikipedia.org/wiki/ECMAScript">JavaScript</a>, and <a href="http://www.macromedia.com/support/flash/action_scripts/actionscript_dictionary/">ActionScript</a>.</p>
<p>Check out <a href="http://en.wikipedia.org/wiki/Object-oriented_programming">this wikipedia article</a> for a general overview of OOP and many links out to OOP theory, and even a few links about what&#8217;s BAD about OOP.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jason-grey.com/2006/03/object-oriented-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
