<?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>Andre Liem &#187; Development</title>
	<atom:link href="http://www.andreliem.ca/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andreliem.ca</link>
	<description>My personal blog</description>
	<lastBuildDate>Thu, 08 Sep 2011 05:09:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Playspedia &#8211; my latest creation</title>
		<link>http://www.andreliem.ca/2011/09/07/playspedia-my-latest-creation/</link>
		<comments>http://www.andreliem.ca/2011/09/07/playspedia-my-latest-creation/#comments</comments>
		<pubDate>Thu, 08 Sep 2011 03:59:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreliem.ca/?p=215</guid>
		<description><![CDATA[Playspedia is my latest creation that I&#8217;ve taken on for 2011. In short, it&#8217;s the Ultimate playbook for people to share animated plays with dragging and dropping, and annotating each step. My brother and I created this after running the Ultimatehandbook for many years and realized there was not a simple way for Ultimate players <a href="http://www.andreliem.ca/2011/09/07/playspedia-my-latest-creation/">[...more]</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andreliem.ca/wp-content/uploads/2011/09/pp-1.jpg"><img class="alignleft size-full wp-image-203" title="pp-1" src="http://www.andreliem.ca/wp-content/uploads/2011/09/pp-1.jpg" alt="" width="150" height="120" /></a><a href="http://www.playspedia.com">Playspedia</a> is my latest creation that I&#8217;ve taken on for 2011. In short, it&#8217;s the Ultimate playbook for people to share animated plays with dragging and dropping, and annotating each step. My brother and I created this after running the <a href="http://www.ultimatehandbook.com" target="_blank">Ultimatehandbook</a> for many years and realized there was not a simple way for Ultimate players to illustrate plays online. While it&#8217;s still in its very early stages, <a href="http://www.playspedia.com">Playspedia</a> has been quickly adopted by the community and shared on various blogs.</p>
<p>In addition, we&#8217;re  cooking up some new features features that we expect to roll out by Fall 2011. While it is currently only for Ultimate Frisbee, we plan on opening it up to more sports as we get through the &#8220;beta&#8221; phase.</p>
<p><strong>Technical Side</strong><br />
<a href="http://www.playspedia.com/">Playspedia</a> runs on <a href="http://www.codeigniter.com">CodeIgniter</a>, <a href="http://www.mysql.com">MySql</a> and <a href="http://www.jquery.com">jQuery </a>and was developed with the help of a few friends and my brother. It was my first major personal project where I decided to use the CodeIgniter PHP framework. Having used Zend I decided that it was time to use something leaner, and CodeIgniter seemed like a great fit as it&#8217;s very lean and fast. Although some developers consider CodeIgniter to be a basic framework, I think it&#8217;s a perfect framework for those who wish to customize and build their own design constructs. It is very basic at its core, but it&#8217;s also very easy to extend to create a very well fine tuned application.</p>
<p><strong>Product Side<br />
</strong>Coming up with the idea came straight from the <a href="http://www.ultimatehandbook.com">Ultimatehandbook </a>website that I run. After hearing from many players, primarily coaches, that they wanted to create plays, I decided it was time to give them this option. Instead of relying on Flash, which is on its way out, using  Javascript made a lot of sense given the progress that has been made with lib/frameworks like jQuery. It was clear from the first early launch that players loved it and that it was actually being used for its purpose. While it&#8217;s still in its infancy stages, we are learning a lot and will be releasing a lot of major features to make the site the Ultimate source for plays.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreliem.ca/2011/09/07/playspedia-my-latest-creation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skeleton &#8211; a simple and powerful boilerplate css framework</title>
		<link>http://www.andreliem.ca/2011/05/18/skeleton-a-simple-and-powerful-boilerplate-css-framework/</link>
		<comments>http://www.andreliem.ca/2011/05/18/skeleton-a-simple-and-powerful-boilerplate-css-framework/#comments</comments>
		<pubDate>Thu, 19 May 2011 05:15:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.andreliem.ca/?p=197</guid>
		<description><![CDATA[I&#8217;ve been looking for a CSS framework like 960.gs for the past few months and have noticed a growing amount showing up as of late. This post will not be reviewing all the frameworks/boilerplates, but to give you an idea of some of the originals: Blueprint 960 GS Less These frameworks basically provide a basic <a href="http://www.andreliem.ca/2011/05/18/skeleton-a-simple-and-powerful-boilerplate-css-framework/">[...more]</a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking for a CSS framework like 960.gs for the past few months and have noticed a growing amount showing up as of late. This post will not be reviewing all the frameworks/boilerplates, but to give you an idea of some of the originals:</p>
<ul>
<li><a title="blueprintcss" href="http://www.blueprintcss.org/" target="_blank">Blueprint</a></li>
<li><a title="960 Grid System" href="http://960.gs/" target="_blank">960 GS</a></li>
<li><a title="lessframework" href="http://lessframework.com/" target="_blank">Less</a></li>
</ul>
<p>These frameworks basically provide a basic set of tools for front end developers to focus on building and not recreating the same scaffolding code for each project. Also, they address common browser differences and are optimized for particular viewing experiences. One thing these frameworks have in common is that they create a &#8220;grid&#8221;. The entire site is defined by standardized column widths that make it easier to place content without creating messy divs and floats. They are great for code quality but you do need to make sure the design adheres to the grid. This is often a big issue for most developers/designers who don&#8217;t necessarily have control over this.</p>
<p>So to address the title of this post, what is <a title="skeleton css" href="http://www.getskeleton.com/" target="_blank">Skeleton</a>? It&#8217;s another CSS framework I just came across, but it hits the sweet spot between simplicity and power.  In addition, because it&#8217;s new, it addresses mobile displays and focuses on the forward usage of CSS3. Sometimes you don&#8217;t have to analyze frameworks with pro/cons matrices and just need to read over the CSS to know it&#8217;s right.  I found with Skeleton, that I could read the one page description, download the files and understand it within a few minutes. Other frameworks, often more mature in development, provide too much information, too many options and abstract too much. I like Skeleton because it&#8217;s not doing any heavy lifting with Javascript, it&#8217;s all good clean CSS with clean documentation.</p>
<p>The <a title="getskeleton css" href="http://www.getskeleton.com/" target="_blank">official site</a> does a great job of providing a summary of how it works, but here&#8217;s my own coles notes version:</p>
<ul>
<li>grid based design on 960px</li>
<li>mobile friendly</li>
<li>usage of css3/html5</li>
<li>clean form elements</li>
<li>jQuery ui tools (fairly basic now)</li>
</ul>
<p>If you&#8217;re looking for a CSS framework, I highly recommend giving skeleton a try.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreliem.ca/2011/05/18/skeleton-a-simple-and-powerful-boilerplate-css-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An intro to APIs &#8211; why do people keep talking about APIs?</title>
		<link>http://www.andreliem.ca/2010/07/22/an-intro-to-apis-why-do-people-keep-talking-about-apis/</link>
		<comments>http://www.andreliem.ca/2010/07/22/an-intro-to-apis-why-do-people-keep-talking-about-apis/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 04:41:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.andreliem.ca/?p=172</guid>
		<description><![CDATA[Introduction In the past years, it seems like more and more people have been talking about APIs and yet a lot of  people don&#8217;t seem to really know what an API is.  An API in short is defined as an Application Programming Interface, doesn&#8217;t sound so special does it?   Well to a developer it&#8217;s <a href="http://www.andreliem.ca/2010/07/22/an-intro-to-apis-why-do-people-keep-talking-about-apis/">[...more]</a>]]></description>
			<content:encoded><![CDATA[<p><strong>Introduction</strong></p>
<p>In the past years, it seems like more and more people have been talking about APIs and yet a lot of  people don&#8217;t seem to really know what an API is.  An API in short is defined as an Application Programming Interface, doesn&#8217;t sound so special does it?   Well to a developer it&#8217;s not that special, APIs have been around for a long time and have been a pretty standard concept.   Typically, a developer that wants to use a 3rd party tool, or any object/class will read a document that explains how to use the object and then will make a connection to this object with code.  So, in a nutshell an API just allows one piece of code to talk with another piece of code.  I&#8217;m sure at some higher level, the real definition is much more abstract than that <img src='http://www.andreliem.ca/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p><strong>Think of RSS</strong></p>
<p>API&#8217;s as a buzz word has grown in recent years because it has become standard practice to develop web applications that share data with other applications.  If you&#8217;re at all confused then think of RSS feeds and consider how you can read RSS feeds with various programs or web sites.  The concept is similar for an API, there&#8217;s a source that provides a information in a standardized format so that the consumer applications (e.g. &#8211; RSS reader) know how to read and present the data.</p>
<p><strong>So why is an API important?</strong></p>
<p>Now if you take the model of an RSS and take it further, so that the source application can provide various types of information, you have what is the makings of a RESTful web application (another buzz word).  A web application provides an &#8220;interface&#8221; for other applications wishing to use the data by exposing a public API that tells the consumer applications how to use the data.  For example, Twitter and Facebook define and refine their public API to dictate what data 3rd party applications can use.   In most cases, a web application&#8217;s API should provide ways to create, read, update, and delete (CRUD) data.  So this means that some applications can build around applications like Twitter to extend their own application.  For Twitter, their API has led to an explosion of web applications that allow users to do amazing things.  One good example is <a href="http://www.hootsuite.com" target="_blank">hootsuite</a>, a powerful social media dashboard, that combines data from <a href="http://www.twitter.com" target="_blank">Twitter</a>, <a href="http://www.facebook.com" target="_blank">Facebook</a>, <a href="http://www.linkedin.com" target="_blank">Linked In</a>, <a href="http://www.foursquare.com" target="_blank">Foursquare </a>and their list keeps growing!</p>
<p><strong>Is that it?  Pros and Cons&#8230;</strong></p>
<p>Well not really, I&#8217;ve just tried to explain why an API is such an important concept.  It basically allows web applications to work together to build even more powerful applications.  At the moment, the major players (Facebook, Twitter, Google, etc&#8230;) use APIs to grow their user base and extend their reach.  For the small players, APIs are like a VIP pass to a club with all the people you want to sell your products to.  You can see that there are dangers with this type of system.  Now all the control lies with the source provider, and generally speaking there is nothing stopping the source from changing the rule.  Speaking from experience, having developed several Facebook applications with their API, there have been more than several times where changes to their API have broken my application.  Or consider the risk you face if the source provider has down time?  There are a lot of factors to take into consideration before creating  an API driven application.  Just think of this, Facebook and Twitter do not communicate with each through an API (at least to my knowledge).  It all comes down to the business strategy and has nothing to do with technology.  An interesting side effect of an API driven web world is that each business must consider new risks about the trade-offs and benefits of using or providing an API.</p>
<p><strong>More coming</strong></p>
<p>This was just a short intro at a very high level to what APIs are and why they have become the buzz word for many business IT folk.  I took liberties in my definitions as my focus for this article was to explain at a high level and not to get bogged down in technicalities.  I will follow this post up with a more technical article explaining the options for PHP developers looking to build a RESTful API.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreliem.ca/2010/07/22/an-intro-to-apis-why-do-people-keep-talking-about-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hardcoding and Spreadsheets &#8211; the perfect analogy for business folk</title>
		<link>http://www.andreliem.ca/2010/06/28/hardcoding-and-spreadsheets-the-perfect-analogy-for-business-folk/</link>
		<comments>http://www.andreliem.ca/2010/06/28/hardcoding-and-spreadsheets-the-perfect-analogy-for-business-folk/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 05:08:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.andreliem.ca/?p=166</guid>
		<description><![CDATA[Ever since I&#8217;ve been developing software, I have found that explaining what programmers do to non technical people has been as challenging as developing itself.  You may ask why this is even important?  Well, there are many reasons actually.  Here are a few I can think of: They will understand Why the time estimate is <a href="http://www.andreliem.ca/2010/06/28/hardcoding-and-spreadsheets-the-perfect-analogy-for-business-folk/">[...more]</a>]]></description>
			<content:encoded><![CDATA[<p>Ever since I&#8217;ve been developing software, I have found that explaining what programmers do to non technical people has been as challenging as developing itself.  You may ask why this is even important?  Well, there are many reasons actually.  Here are a few I can think of:</p>
<p><em>They will understand</em></p>
<ol>
<li>Why the time estimate is so long.</li>
<li>What the repercussions will be for cutting corners.</li>
<li>What the risk is.</li>
<li>What needs to be done &#8220;later&#8221;.</li>
<li>Why this piece of code is so great</li>
<li>etc&#8230;</li>
</ol>
<p>From my experience, clients/bosses/project managers that understand more about what you do is generally better than the opposite.  You don&#8217;t want to overload with technical jargon but being able to explain with analogies for them to relate to is useful.</p>
<p>So, to explain the title of this post, &#8220;Hardcoding and Spreadsheets&#8221;, I think you may already know what I&#8217;m getting at.  Most people have used a spreadsheet and know that formula based sheets save a lot of time.  If you don&#8217;t use a formula when you can, and instead &#8220;hardcode&#8221; a constant number into a cell, any future updates you or someone else makes can &#8220;break&#8221; the spreadsheet.  Even worse, you may not even know it&#8217;s broken.  While this seems very amateur, I would not be surprised if hardcoding in spreadsheets has led to many mistakes, and potentially financially devastating results for accounting firms.  Using a formula requires identifying redundancies and factoring out any opportunities for duplicate data to be required.  For example, if tax is defined by two cells, 5% for GST and 7% PST, then the total tax is defined by the addition of these two cells.  If you decide that you&#8217;re too lazy to input GST as a separate cell and instead &#8220;hardcode&#8221; 5% in the formula for total tax, then you may have more than one place to update if GST changes.  Okay, I know this is not ground breaking material, but it&#8217;s pretty much the same issue we developers face on a daily basis.</p>
<p>Hardcoding a particular piece of code is bad because if it can be factored out so the logic is more sound, it should be done.  In most instances, this is the case, but quite often deadlines and/or laziness conflict with this goal.  Perhaps the client needs this particular piece done by tomorrow and you know that if you do it the &#8220;right way&#8221; it will take 2 days.  Or perhaps, you have a party to go to and decide to fix it &#8220;later&#8221;.  So, you think &#8220;hey, I can hardcode this and deal with it after&#8221;.</p>
<p>From a developer&#8217;s perspective, it&#8217;s not just &#8220;hardcoding&#8221; but poor programming practices that must be avoided where possible.   As developers, we must weigh the technical and business risks of our choices and decide the best route.  It&#8217;s not easy and requires experience to pick a choice.  For instance, hardcoding can be a great solution if the application will exist for a short period of time.  It would be a waste of a budget to code the most elegant piece of software that will only serve one very specific purpose for a short period of time.  On the other hand, if the client mentions &#8220;reusable&#8221; and future use, then you should consider this and explain why this would cost more.</p>
<p>The difficult situations are where the client or boss decide they don&#8217;t care and want short turnaround time, reliability and flexible software.  There is little a developer or anyone can explain to an unreasonable person.  But if they are willing to listen, attempting to relate software to common tasks like formulas in spreadsheets could help.  The last thing you want is to explain that this &#8220;bug&#8221; was their fault.  As a developer, communication is one piece of the solution to enable sound development.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andreliem.ca/2010/06/28/hardcoding-and-spreadsheets-the-perfect-analogy-for-business-folk/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

