<?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>Thinking in Code</title>
	<atom:link href="http://www.michelboudreau.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.michelboudreau.com</link>
	<description>Michel Boudreau&#039;s Personal Blog</description>
	<lastBuildDate>Tue, 21 Feb 2012 22:18:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Git with Apache Flex</title>
		<link>http://www.michelboudreau.com/2012/02/21/git-with-apache-flex/</link>
		<comments>http://www.michelboudreau.com/2012/02/21/git-with-apache-flex/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 22:18:36 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[apache flex]]></category>
		<category><![CDATA[clone]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[contribute]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[git-svn]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[source]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.michelboudreau.com/?p=870</guid>
		<description><![CDATA[A few days ago, Adobe migrated their subversion repository to ...]]></description>
			<content:encoded><![CDATA[<p>A few days ago, Adobe migrated their <a href="http://incubator.apache.org/flex/source.html" target="_blank">subversion repository to Apache</a>.  At the same time, the repository got <a href="https://github.com/apache/flex" target="_blank">mirrored over to GitHub</a> using git-svn.  You can now download the code for yourself and start fixing some bugs, except for the fact that doing an <code>svn checkout</code> will cost you 4gb, while doing a <code>git clone</code> will use 300mb.  Since I was a bit lost on how to fix bugs and submit them using git, I create a quick little tutorial for new contributors.</p>
<p><span id="more-870"></span></p>
<p>One thing to remember is that GitHub is <strong>not</strong> Apache&#8217;s main source control solution.  Apache still uses Subversion and as such doesn&#8217;t use the same concepts used with Git or GitHub.  For instance, if you were to fork the Flex repository, you could clone it and do all your changes and send over pull requests but the powers that be won&#8217;t accept them (as far as I heard, that might change).</p>
<p>The best thing to do would be to clone the repository directly from the Flex project so that you can easily stay up to date with the changes.  Then apply your changes locally and create a patch file by doing <code>git format-patch master --stdout &gt; your_patch_name.patch</code>.</p>
<p>After the patch file has been created, you need to attach it to a <a href="https://issues.apache.org/jira/browse/FLEX" target="_blank">Jira ticket</a> (need to register for an account). If one hasn&#8217;t been made already, create a new one and be descriptive as to what was done, why it needs to be done and maybe even your thoughts behind it; the more information the better. You should hear from one of the community in the next week or so about the status of your patch.</p>
<p>That&#8217;s all there is to it. Now go forth and contribute!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2012/02/21/git-with-apache-flex/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adobe Tour 2012 in NYC</title>
		<link>http://www.michelboudreau.com/2012/02/14/adobe-tour-2012-in-nyc/</link>
		<comments>http://www.michelboudreau.com/2012/02/14/adobe-tour-2012-in-nyc/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 22:28:32 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[alan greenblatt]]></category>
		<category><![CDATA[christophe coenraets]]></category>
		<category><![CDATA[digital primates]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[jeff tapper]]></category>
		<category><![CDATA[meetup]]></category>
		<category><![CDATA[michel boudreau]]></category>
		<category><![CDATA[new york]]></category>
		<category><![CDATA[spoon foundation]]></category>
		<category><![CDATA[tour]]></category>
		<category><![CDATA[ustream]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.michelboudreau.com/?p=847</guid>
		<description><![CDATA[Some of you may have heard Adobe&#8217;s announcement that they were ...]]></description>
			<content:encoded><![CDATA[<p>Some of you may have heard <a href="http://blogs.adobe.com/flex/2012/01/announcing-flex-user-group-2012-tour-north-america-dates.html" target="_blank">Adobe&#8217;s announcement</a> that they were doing a world-wide tour revolving around Flex.  Adobe grant me to honour to host the event at our <a href="http://www.meetup.com/new-york-flex-meetup" target="_blank">monthly meetup</a>.  <a href="http://coenraets.org/blog/" target="_blank">Christophe Coenrats</a> and <a href="http://www.adobe.com/devnet/author_bios/alan_greenblatt.html" target="_blank">Alan Greenblatt</a> (of Adobe) spoke about the latest new, and Jeff Tapper (of <a href="www.digitalprimates.net" target="_blank">Digital Primates</a>) represented the <a href="http://www.spoon.as" target="_blank">Spoon Foundation</a> and what&#8217;s going on with Apache and which role Spoon has to do with it.</p>
<p>All of this was recorded and can be viewed on <a href="http://www.ustream.tv/channel/mike-s-flex-channel" target="_blank">UStream</a>.  Video after the break.</p>
<p><span id="more-847"></span></p>
<div class="oembed oembed-video oembed-ustream-tv oembed-video-ustream-tv"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="296" id="utv397573" name="utv_n_160953"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=20432301&amp;locale=en_US" /><param name="wmode" value="opaque" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/viewer.swf" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=20432301&amp;locale=en_US" width="480" height="296" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" id="utv397573" name="utv_n_160953" src="http://www.ustream.tv/flash/viewer.swf" type="application/x-shockwave-flash" /></object></div>
<div class="oembed oembed-video oembed-ustream-tv oembed-video-ustream-tv"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="296" id="utv998688" name="utv_n_4241"><param name="flashvars" value="loc=%2F&amp;autoplay=false&amp;vid=20433329&amp;locale=en_US" /><param name="wmode" value="opaque" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.ustream.tv/flash/viewer.swf" /><embed flashvars="loc=%2F&amp;autoplay=false&amp;vid=20433329&amp;locale=en_US" width="480" height="296" wmode="opaque" allowfullscreen="true" allowscriptaccess="always" id="utv998688" name="utv_n_4241" src="http://www.ustream.tv/flash/viewer.swf" type="application/x-shockwave-flash" /></object></div>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2012/02/14/adobe-tour-2012-in-nyc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Low Cost Amazon Web Services</title>
		<link>http://www.michelboudreau.com/2012/02/07/low-cost-amazon-web-services/</link>
		<comments>http://www.michelboudreau.com/2012/02/07/low-cost-amazon-web-services/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 06:52:23 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[beanstalk]]></category>
		<category><![CDATA[bill]]></category>
		<category><![CDATA[cheap]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confluence]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[ebs]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[low cost]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[nexus]]></category>
		<category><![CDATA[pricing]]></category>
		<category><![CDATA[rds]]></category>
		<category><![CDATA[reduce]]></category>
		<category><![CDATA[route53]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[start-up]]></category>
		<category><![CDATA[startup]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[tomcat]]></category>
		<category><![CDATA[volume]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.michelboudreau.com/?p=802</guid>
		<description><![CDATA[Who wouldn&#8217;t want to pay less for their web services ...]]></description>
			<content:encoded><![CDATA[<p>Who wouldn&#8217;t want to pay less for their web services while maintaining high scalability?  For the amount of talk around cloud services, I was surprised to find a lack of information about how to lower costs and simply architect your system.  Keeping in mind not all systems are the same and that the architecture would no doubt vary, there are still some fundamental techniques that can be used to  accomplish roughly the same goal while costing the least.  This is the chronicle of the arduous journey that is to setup the IT infrastructure for a start-up.</p>
<p><span id="more-802"></span><br />
When I couldn&#8217;t find the information needed online, I figured I would give the ol&#8217; trial and error method a try.  We decided to go with Amazon cloud services because of its proven track record and amazing web management interface.  Then I went about implementing our first server which would run Apache, Git, Jira, Confluence, Nexus and Tomcat; everything we would need to run our business and development.  I also create a MySQL instance using Amazon&#8217;s RDS, then wired up up the domain to Amazon&#8217;s Route53 (DNS ) and created an Elastic IP assigned to the server for public accessibility.</p>
<p>It was beautiful. In a matter of 3 days, with no prior knowledge about Cloud Computing and some elbow grease, I had manage to setup our infrastructure needed to start coding.  I was so proud of myself.  Then the bill came;  It was several hundred dollars for a month.</p>
<p><em><strong>Fuck.</strong></em></p>
<p>Live and learn I guess.  Searching through the extensive documentation  (good job Amazon!), I couldn&#8217;t find information on how to lower the costs.  I was given so much information that I felt like I was thrown in the Wild West.  I remember that feeling, overwhelmed by the unmitigated amount of what&#8217;s possible; it&#8217;s the same feeling I had when I tried to install Linux for the first time (the distro was Debian).  Since I wouldn&#8217;t wish that feeling to any developer, I decided to write a small primer to Amazon&#8217;s cloud solution in hopes to prevent this serious affliction in other possible newbies.</p>
<h2>Foreword</h2>
<p>When I was reading up on EC2 and other Amazon services, the notion of <em>Computational Units</em>, <em>Compute Hours</em> and <em>pay what you use</em> is mentioned several times in the documentation.  However, I couldn&#8217;t find a simple, no marketing bullshit version of what it actually means; that is, until it was too late.  In my case, the point of confusion was the &#8220;pay what you use&#8221; part.  Amazon made it sound as if that you only pay when your computer isn&#8217;t idle (ie. actually doing some work), but that&#8217;s not the case.  The simple truth behind &#8220;pay what you use&#8221; is that every hour your instance is running you pay the fee per hour (which Amazon rounds up), even if it&#8217;s idling.  The way they spin it is with auto-scaling, where if your instance is using a certain amount of CPU cycles, it can create a new instance to offload the work so that you won&#8217;t pay for the second instance until it&#8217;s actually needed.  Of everything Amazon has done that I find awesome, this is the one thing that irritated me.  Why is it that they simply couldn&#8217;t say what they actually meant?  We would of gone with Amazon either way, but a better explanation and some examples of how to implement the architecture would of helped considerably.</p>
<h2>More is Better (and Cheaper)</h2>
<p>I know that this doesn&#8217;t seem to make sense at first, and I told myself the same thing.  How can having more of something costs less?  Don&#8217;t ask me how Amazon is doing things, but all I know is that in the AWS world, it&#8217;s better to have 5 micro EC2 instances than having 1 large instance.  For example, since an On-Demand Linux Micro instance costs $0.02/hr and an On-Demand Linux Large instance costs $0.34/hr, if you have 5 services which can split up between 5 different Micro instances, it is still more than two thirds reduction in costs.  The added extra to having multiple Micro instances is that it&#8217;s easier to manage.  When it comes down to scaling or doing backups, you can be <em>much </em>more granular which reduces your costs even more since you don&#8217;t have to deploy more than one service at a time.  If it&#8217;s possible, <em>always use Micro instances</em>.</p>
<h2>Reserved Instances are Your Friends</h2>
<p>Another to cut costs are to do Reserved Instances.  What are those you say?  Simply put, you&#8217;re buying an allotment of time on a specific type of server for an specific amount of time (1 year or 3 years).  For a one time initial payment, the hourly cost of your servers are greatly reduced (up to 55%).  Afterwards, everything else is exactly how you would create an On-Demand instance as long as your instance is of the same type of your reserved.</p>
<h2>Use EBS Volumes, Shared or Otherwise</h2>
<p>When you create an EC2 instance, you have a choice as to what time of instance you want in several ways.  You can get Linux or Windows, different capacities (micro, small, large, x-large, and High-CPU), and Local Store vs. EBS.  Local Store means that when your instance terminates or just reboots, the information on the &#8220;hard drive&#8221; is completely erased.  When you use EBS, your volumes can be stored (snapshots) to either create new instances with the same data and when you reboot you don&#8217;t lose your data.  This is an easy to share similar configurations that aren&#8217;t database-driven between instances.</p>
<h2>Scaling Your Instances</h2>
<p>There are two ways to scale easily, to use Beanstalk with an independent WAR file or use a custom AMI to create a new instance.  Both of these ways are good, but personally I like the id&#8217;ea of having everything completely independent in a single, easily to deploy file (WAR or EAR); especially for external services that needs to be deployed.  For internal services, using snapshots are more than fine for manually upgrading the workload, but it&#8217;s not adequate for proper scaling deployments for massive amounts of requests.</p>
<h2>Separate Security Groups</h2>
<p>Trust me when I say this, the more granular you can get <em>everything</em> in AWS, the better.  It will make changing your mind while creating the systems that much easier.  This is true for everything, but especially Security Groups.  These are a simple concept; each instance can be part of a specific group and each group can manage which ports are open or which database (or other services) they can access.  Unless you&#8217;re using Amazon&#8217;s VPN solution, after an instance is created, you cannot change the security group.</p>
<h2>Use System Variables</h2>
<p>While I was creating these server instance, I thought to myself on &#8220;how do I scale these servers?&#8221;  There are several answers to this, but what I was mostly wondering is how you code to make it scalable.  The quick answer is to use system variables.  After you create your instance, you can set some system variables, like the URL for your database which can be used by the code with <em>System.getProperty(&#8216;someProperty&#8217;)</em>.  Moral of the story is, if you want to be scalable, you have to make your code based upon system variable for malleability.</p>
<h2>Databases are Costly</h2>
<p>This is probably the most important part of this post; <em>Databases are expensive</em>.  Why?  Well<em>, good</em> databases needs a lot of CPU and memory for it to be responsive enough to the need of large scale web applications.  The good news is that RDS databases from Amazon also go through the same model of having reserved servers to save cash,  but even then, they&#8217;re still expensive.  If your application is time critical, I definitely recommend that you use Amazon&#8217;s RDS solution, however you also need to think about the latest offering from Amazon&#8217;s treasure chest; DynamoDB.  This is a NoSQL database that doesn&#8217;t charge you based on memory, CPU or capacity consumption; it works purely on how many requests that are being made.</p>
<p>NoSQL databases are a new way of thinking about web applications which I won&#8217;t get into, however I will say that <a href="http://www.youtube.com/watch?v=oz-7wJJ9HZ0" target="_blank">Amazon&#8217;s new service</a> will definitely change the game as to the scalability of your next application and the easy of maintenance of said service.  I would recommend every engineer to look at both relational databases and NoSQL database and list the pros and cons; in some instances, you need only one and in some other you need both.  It really depends on the needs of your business.  Either way, DynamoDB is a definite winner in my book for NoSQL.</p>
<h2>Conclusion</h2>
<p>With all that said,  I am thoroughly impressed with Amazon&#8217;s offering.  The only thing lacking is a better user experience around starting out.  Partially because of the fact that it isn&#8217;t my domain of expertise, but also that I jumped in without learning how the whole system works in the first place, which I think can be simplified.  Either way, this was a very humbling experience that I will never forget and at the same time, I got to learn how real cloud computing work in the real world.  Amazon is still the proper, cheap(est?) way of doing web services, but it all comes down to knowledge.  My hope is that someone in the same predicament as me gets to see this posting and avoid the issues that I had.</p>
<p>Good luck in your next cloud venture.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2012/02/07/low-cost-amazon-web-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing The New Flex Logo</title>
		<link>http://www.michelboudreau.com/2012/02/02/introducing-the-new-flex-logo/</link>
		<comments>http://www.michelboudreau.com/2012/02/02/introducing-the-new-flex-logo/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 02:15:06 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[new]]></category>
		<category><![CDATA[professional]]></category>
		<category><![CDATA[voting]]></category>

		<guid isPermaLink="false">http://www.michelboudreau.com/?p=828</guid>
		<description><![CDATA[The people have spoken!  The votes have been tallied and ...]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">The people have spoken!  The votes have been tallied and the winning entry is displayed below.  It is still in the process of being tweaked (typography, colors, etc), but it will still stay very close to the logo shown.  I personally <em>love</em> the new logo; it&#8217;s very professional yet playful which is exactly what Flex is.  I can&#8217;t wait to see this logo in all things related Flex.</p>
<p style="text-align: center;"><a href="http://www.michelboudreau.com/wp-content/uploads/2012/02/apache_flex_black_bg1.jpg"><img class="aligncenter  wp-image-836" title="apache_flex_black_bg" src="http://www.michelboudreau.com/wp-content/uploads/2012/02/apache_flex_black_bg1.jpg" alt="" width="482" height="212" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2012/02/02/introducing-the-new-flex-logo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Flex Logo Contest</title>
		<link>http://www.michelboudreau.com/2012/01/11/apache-flex-logo-contest/</link>
		<comments>http://www.michelboudreau.com/2012/01/11/apache-flex-logo-contest/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 07:00:20 +0000</pubDate>
		<dc:creator>Michel Boudreau</dc:creator>
				<category><![CDATA[Apache Flex]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[branding]]></category>
		<category><![CDATA[contest]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[logo]]></category>

		<guid isPermaLink="false">http://www.michelboudreau.com/?p=807</guid>
		<description><![CDATA[The Apache Flex project is throwing a logo contest!  Since ...]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://incubator.apache.org/flex" target="_blank">Apache Flex</a> project is throwing a <a href="http://incubator.apache.org/flex/logo-contest.html" target="_blank">logo contest</a>!  Since the old Flex logo is still trademarked under Adobe, we need all new branding.  Here&#8217;s your chance to <em>flex</em> your creative muscle and get a globally recognized design out to the world.  It only started yesterday, but there&#8217;s already been a few entries.  One of my favourite as of yet is this one:</p>
<p style="text-align: center;"><img class="aligncenter" title="Flex Logo" src="http://img.skitch.com/20120109-e58tu9kd6ixk7cgdhibya2kypi.png" alt="" width="450" height="450" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.michelboudreau.com/2012/01/11/apache-flex-logo-contest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using disk: basic
Object Caching 549/656 objects using disk: basic

Served from: www.michelboudreau.com @ 2012-02-23 01:46:49 -->
