<?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"
	>

<channel>
	<title>Jacob Wright - Flex, AIR, PHP, etc.</title>
	<atom:link href="http://jacwright.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://jacwright.com/blog</link>
	<description>Flex, AIR, PHP, etc.</description>
	<pubDate>Mon, 30 Jun 2008 17:06:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>360&#124;Flex, here I come!</title>
		<link>http://jacwright.com/blog/84/360flex-here-i-come/</link>
		<comments>http://jacwright.com/blog/84/360flex-here-i-come/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 17:06:57 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=84</guid>
		<description><![CDATA[I have been invited to speak at 360&#124;Flex this year and am very excited. I will be presenting a level 400 (100 is beginner, 400 advanced) topic entitled Advanced ActionScript APIs. I&#8217;ll be talking about how to make your own advanced APIs.
We&#8217;ll go in-depth on using custom metadata and we&#8217;ll go over extending the proxy [...]]]></description>
			<content:encoded><![CDATA[<p>I have been invited to speak at 360|Flex this year and am very excited. I will be presenting a level 400 (100 is beginner, 400 advanced) topic entitled Advanced ActionScript APIs. I&#8217;ll be talking about how to make your own advanced APIs.</p>
<p>We&#8217;ll go in-depth on using custom metadata and we&#8217;ll go over extending the proxy class to its fullest. My aim in this presentation is to bring about better APIs in the libraries people are putting out there. Of course, metadata and Proxy extension aren&#8217;t the answer and cure-all for this. But they are some of the cooler things you can do. And most people attending the preso will already know the other stuff you should do, such as planning out the API before you start coding, etc.</p>
<p>If we have time I might go over a couple other advanced topics that relate. Such as the IExternalizable interface. But that&#8217;s not quite as useful since many of the remoting engines don&#8217;t support it. But I can provide a patch to allow AMFPHP to use it! :)</p>
<p>Should be way fun. <a href="http://www.360conferences.com/360flex/">360|Flex</a> is going to be in San Jose this year in August. So make plans soon!</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/84/360flex-here-i-come/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Taking the big leap</title>
		<link>http://jacwright.com/blog/83/taking-the-big-leap/</link>
		<comments>http://jacwright.com/blog/83/taking-the-big-leap/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 15:09:23 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=83</guid>
		<description><![CDATA[I&#8217;m taking the big leap. Again. I&#8217;m leaving employmentship and going out on my own. Today is my last day working for mediaRAIN. Suck.
I&#8217;m planning on partnering with a friend, Jake Hilton, to provide heavy Flex development for local companies and media firms. We&#8217;re both top in the state in Flash, Flex, and Flash Media [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m taking the big leap. Again. I&#8217;m leaving employmentship and going out on my own. Today is my last day working for mediaRAIN. Suck.</p>
<p>I&#8217;m planning on partnering with a friend, Jake Hilton, to provide heavy Flex development for local companies and media firms. We&#8217;re both top in the state in Flash, Flex, and Flash Media Server, so we should be able to provide a very nice offering. And we&#8217;ll be working on our own products as we find the time. Layered Content is my first priority along those lines and I hope to have a working version out in the next month.</p>
<p>mediaRAIN has been one of the greatest companies I&#8217;ve been with. I&#8217;m totally going to miss the guys here. I know they&#8217;re going to do great things and have mixed feelings about leaving them. But I know what I need to do and will do it.</p>
<p>So now I am free to do contract work. If Jake and I create a company we&#8217;ll have to name it something like Jake and Jac. It will probably be a source of confusion for people. :)</p>
<p>If you&#8217;re looking for some Flex work go ahead and <a href="mailto:jacob@withincode.com">email me</a>. I&#8217;ll see what we can do for you.</p>
<p>I&#8217;m also thinking about moving to Portland. Wouldn&#8217;t be for a year if it happened, but I&#8217;d like to know your thoughts about Portland. Good place to work? Do they have a good user group? Cool people there?</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/83/taking-the-big-leap/feed/</wfw:commentRss>
		</item>
		<item>
		<title>mediaRAIN is Hiring</title>
		<link>http://jacwright.com/blog/81/mediarain-is-hiring/</link>
		<comments>http://jacwright.com/blog/81/mediarain-is-hiring/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 23:00:40 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=81</guid>
		<description><![CDATA[mediaRAIN Is by far the best company I have ever worked for. I absolutely love the environment and the people here. We get work done, we have fun, we play foos ball and computer games together, and we&#8217;re doing some way cool Flex/Flash projects all the time. All the people I work with are top [...]]]></description>
			<content:encoded><![CDATA[<p>mediaRAIN Is by far the best company I have ever worked for. I absolutely love the environment and the people here. We get work done, we have fun, we play foos ball and computer games together, and we&#8217;re doing some way cool Flex/Flash projects all the time. All the people I work with are top notch individuals.</p>
<p>Well, mediaRAIN is hiring. We&#8217;re located in the Utah valley about a 10 minute drive from the Rocky Mountains, and we&#8217;re looking for a senior Flex developer. We want more gurus, experts, oh, and cool people. Here is our posted job description:</p>
<p>Salary dependent on experience: $60,000 - $100,000<br />
Full paid Medical &#038; Dental Insurance. Matching 401k compensation plan.<br />
Paid time off as well as holidays time off. Great work environment.</p>
<p><strong>Responsibilities:</strong></p>
<ul>
<li>Interact with clients, exploring and advising technological possibilities, discovering solutions that fit their goals</li>
<li>Architect and develop large-scale Flash &#038; Flex applications implementing design patterns appropriately</li>
<li>Write clean, structured object-oriented code with change and reuse in mind</li>
<li>Lead and teach team members throughout a projects life cycle</li>
</ul>
<p><strong>Qualifications:</strong></p>
<ul>
<li>Self-learning and motivated perspective - seeks excellence</li>
<li>Ability to work in an agile development environment</li>
<li>OOP Skills - Classes, Interfaces, Composition, Inheritance</li>
<li>Comfortable developing in Eclipse-based environment or equivalent</li>
<li>Deep experience in ActionScript3 or at least one of the following,  Java, C#, C++, Desktop Application Development</li>
<li>Develops &#8220;fun&#8221; projects on the side</li>
<li>Midichlorian count must be &#8220;through the roof&#8221;</li>
<li>Preference will be given to applicants who have soccer skills, foosball skills and/or are familiar with the proper usage of the &#8220;W&#8221;, &#8220;A&#8221;, &#8220;S&#8221;, and &#8220;D&#8221; keys</li>
</ul>
<p>Please respond to jobs@mediarain.com</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/81/mediarain-is-hiring/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIRActiveRecord is cool</title>
		<link>http://jacwright.com/blog/80/airactiverecord-is-cool/</link>
		<comments>http://jacwright.com/blog/80/airactiverecord-is-cool/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 22:46:38 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=80</guid>
		<description><![CDATA[Do you ever go back and look at code you wrote and think, &#8220;man, that&#8217;s pretty cool. I can&#8217;t believe how nice that turned out.&#8221;
I went back and wrote up some very minimal documentation on using AIRActiveRecord on my post about it and remembered how cool it is. True, more documentation would sure be nice, [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever go back and look at code you wrote and think, &#8220;man, that&#8217;s pretty cool. I can&#8217;t believe how nice that turned out.&#8221;</p>
<p>I went back and wrote up some very minimal documentation on using <a href="http://jacwright.com/blog/79/air-activerecord-is-open-source/">AIRActiveRecord</a> on my post about it and remembered how cool it is. True, more documentation would sure be nice, and I&#8217;ll get to that, eventually.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/80/airactiverecord-is-cool/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using in-memory databases in AIR</title>
		<link>http://jacwright.com/blog/71/using-in-memory-databases-in-air/</link>
		<comments>http://jacwright.com/blog/71/using-in-memory-databases-in-air/#comments</comments>
		<pubDate>Fri, 16 May 2008 15:43:17 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=71</guid>
		<description><![CDATA[Adobe Integrated Runtime (AIR) has support for creating and using SQLite databases through the use of the SQLConnection class in the flash.data package. Using this package you can store a database on a user's hard drive and even name it with any extension you'd like (registering your app with that extension will let you double [...]]]></description>
			<content:encoded><![CDATA[<p>Adobe Integrated Runtime (AIR) has support for creating and using SQLite databases through the use of the SQLConnection class in the flash.data package. Using this package you can store a database on a user's hard drive and even name it with any extension you'd like (registering your app with that extension will let you double click on your "database" file and open the app with that as a parameter, pretty slick).</p>
<p>One feature with the database package often overlooked is its ability to create and use in-memory databases. Using in-memory databases allows for faster read and write to the database and is perfect for operations such as building a code-completion lookup (someone going to rewrite Flex Builder in AIR? :), establishing a temporary search database of all the words in a list of documents that could be used for an autocomplete field, and any other situation where a database would be great to use but doesn't need to be kept around between application launches.</p>
<p>To create an in-memory database simply leave out the file parameter of the database connection.</p>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-2">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> db:SQLConnection = <span style="color: #000000; font-weight: bold;">new</span> SQLConnection<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
db.<span style="color: #006600;">open</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// no file is passed in </span></div>
</div>
</div>
<p></div>
<p>Then you run your database setup script to create your tables and your good to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/71/using-in-memory-databases-in-air/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AIR ActiveRecord is Open Source</title>
		<link>http://jacwright.com/blog/79/air-activerecord-is-open-source/</link>
		<comments>http://jacwright.com/blog/79/air-activerecord-is-open-source/#comments</comments>
		<pubDate>Wed, 30 Apr 2008 03:22:13 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[AIR]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=79</guid>
		<description><![CDATA[I wrote about an Active Record implementation for the Adobe Integrated Runtime using it's SQLite database functionality. I put up all the code on Google Code under the name AIR Active Record. Please check it out, let me know of bugs or features, or better yet, submit fixes and add-ons. If you're interested in being [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote about an <a title="AIR Active Record" href="http://jacwright.com/blog/55/air-active-record/">Active Record</a> implementation for the Adobe Integrated Runtime using it's SQLite database functionality. I put up all the code on Google Code under the name <a href="http://code.google.com/p/air-activerecord/">AIR Active Record</a>. Please check it out, let me know of bugs or features, or better yet, submit fixes and add-ons. If you're interested in being an active developer on it let me know.</p>
<p><strong>Update:</strong></p>
<p>To use the ActiveRecord (sorry for the lack of documentation), you need to extend it with a class for each table you'll use. For example, if I wanted an employee table I would create an Employee class like this:</p>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-7">
<div class="actionscript">package<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flight.<span style="color: #006600;">db</span>.<span style="color: #006600;">activeRecord</span>.<span style="color: #006600;">ActiveRecord</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>RelatedTo<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">"tasks"</span>, className=<span style="color: #ff0000;">"Task"</span>, multiple<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">dynamic</span> <span style="color: #000000; font-weight: bold;">class</span> Employee <span style="color: #0066CC;">extends</span> ActiveRecord<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">name</span>:<span style="color: #0066CC;">String</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> <span style="color: #0066CC;">position</span>:<span style="color: #0066CC;">String</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> hireDate:<span style="color: #0066CC;">Date</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> salary:<span style="color: #0066CC;">Number</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> created:<span style="color: #0066CC;">Date</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> modified:<span style="color: #0066CC;">Date</span>;<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></div>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-8">
<div class="actionscript">package<br />
<span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">import</span> flight.<span style="color: #006600;">db</span>.<span style="color: #006600;">activeRecord</span>.<span style="color: #006600;">ActiveRecord</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#91;</span>RelatedTo<span style="color: #66cc66;">&#40;</span><span style="color: #0066CC;">name</span>=<span style="color: #ff0000;">"employee"</span>, className=<span style="color: #ff0000;">"Employee"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #0066CC;">dynamic</span> <span style="color: #000000; font-weight: bold;">class</span> Task <span style="color: #0066CC;">extends</span> ActiveRecord<br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> employeeId:uint;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> todo:<span style="color: #0066CC;">String</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> created:<span style="color: #0066CC;">Date</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">var</span> modified:<span style="color: #0066CC;">Date</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> Task<span style="color: #66cc66;">&#40;</span>todo:<span style="color: #0066CC;">String</span> = <span style="color: #000000; font-weight: bold;">null</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0066CC;">this</span>.<span style="color: #006600;">todo</span> = todo;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><br />
<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></div>
<p>In the metadata, the <strong>name</strong> is the property name which will be auto-generated and auto-populated (when you access it) for the relation. The className is the full class path (e.g. com.foo.Bar). multiple is a flag that specifies whether it's a one-to-many relationship. You can have many-to-many relationships as well.</p>
<p>If you aren't creating the database yourself there is a handy-dandy feature which will do it for you off of code introspection. Many-to-many is not supported for creation this way unless you have a class for that join table and run it on that.</p>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-9">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> employee:Employee = <span style="color: #000000; font-weight: bold;">new</span> Employee<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
TableCreator.<span style="color: #006600;">updateTable</span><span style="color: #66cc66;">&#40;</span>employee<span style="color: #66cc66;">&#41;</span>;</div>
</div>
</div>
<p></div>
<p>This will create the table if it doesn't exist, but it is also useful for updating the table if you've added new properties to the class. (right now it doesn't delete columns if you remove properties)</p>
<p>Then, you use it. You'll need to look at the code comments, or maybe generate the AS3 docs off of it to see all you can do, but this is some of what you can do (let's say you have an Employee class and a Task class):</p>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-10">
<div class="actionscript"><span style="color: #000000; font-weight: bold;">var</span> employee = <span style="color: #000000; font-weight: bold;">new</span> Employee<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
employee.<span style="color: #006600;">loadBy</span><span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"username = ?"</span>, <span style="color: #ff0000;">"bobTheBuilder"</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #808080; font-style: italic;">// accessing tasks will autoload them from the database</span><br />
<span style="color: #b1b100;">for</span> each <span style="color: #66cc66;">&#40;</span><span style="color: #000000; font-weight: bold;">var</span> task:Task <span style="color: #b1b100;">in</span> employee.<span style="color: #006600;">tasks</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>task<span style="color: #66cc66;">&#41;</span>;</p>
<p>task = <span style="color: #000000; font-weight: bold;">new</span> Task<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">"Call your mother"</span><span style="color: #66cc66;">&#41;</span>;<br />
employee.<span style="color: #006600;">task</span>.<span style="color: #0066CC;">push</span><span style="color: #66cc66;">&#40;</span>task<span style="color: #66cc66;">&#41;</span>;<br />
employee.<span style="color: #006600;">saveTasks</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p>employee.<span style="color: #006600;">firstName</span> = <span style="color: #ff0000;">"Bobby"</span>;<br />
employee.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;</p>
<p><span style="color: #000000; font-weight: bold;">var</span> employee2:Employee = <span style="color: #000000; font-weight: bold;">new</span> Employee<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
employee2.<span style="color: #006600;">firstName</span> = <span style="color: #ff0000;">"Sue"</span>;<br />
....<br />
<span style="color: #006600;">employee2</span>.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;<br />
<span style="color: #0066CC;">trace</span><span style="color: #66cc66;">&#40;</span>employee2.<span style="color: #006600;">id</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #808080; font-style: italic;">// new id </span></div>
</div>
</div>
<p></div>
<p>Pretty cool stuff. Maybe someone should document it! :D Anyone interested in figuring out and documenting super-cool code, please apply!</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/79/air-activerecord-is-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why Open Source</title>
		<link>http://jacwright.com/blog/78/why-open-source/</link>
		<comments>http://jacwright.com/blog/78/why-open-source/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 18:18:25 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/?p=78</guid>
		<description><![CDATA[I have to admit, it took me awhile to understand why anyone would want to open source their software. I understood perfectly well why I would want to use it, but as a developer who makes money from writing software I assumed you don't make money writing open source software, thus, you starve. I understand [...]]]></description>
			<content:encoded><![CDATA[<p>I have to admit, it took me awhile to understand why anyone would want to <em>open source</em> their software. I understood perfectly well why I would want to <em>use</em> it, but as a developer who makes money from writing software I assumed you don't make money writing open source software, thus, you starve. I understand now how it works and will explain simply for both developers and business why open source software makes sense.</p>
<p><span id="more-78"></span></p>
<p>First I'll start with business.</p>
<p>If you are a business owner think about this. Who has the most money to spend on the products you make? Well, medium to large businesses. They spend hundreds of thousands to millions every year. You'd like to write software to target these businesses. You will need to spend quite a bit in advertising and sales to hit that market. And of course, lots of money will need to go into the production of the software.</p>
<p>What if you make this product and all of the little guys test it for you? What if non-customers help you bug fix it? And after your initial release, what if they continue to add features, fixes, and value to your product for free? What if they market it for you and provide an initial level of support? Well, this is open source software. You share the product with the world, let them use it, contribute to it, make it their own, and then you still make money from your original target market through something they couldn't go without, support. Those with the money are still paying for it, but those without get to benefit from it and will add to it.</p>
<p>Developers look at things differently.</p>
<p>As a developer why would you want to write open source software? Think of all the code you've written that you just know has been written before. Think of all the wheel-reinventing you've done throughout your career. As an industry we aren't moving forward in technology if we spend all our time writing the same thing for our own company or clients that everyone else is writing for THEIR companies and clients. But, if we start sharing this are we going to run out of a job? No, we'll spend our time writing new code and implementing new ideas. Our clients will always want something more than what's available. We as an industry can push the technology forward as a whole and everyone benefits.</p>
<p>That's how I see it. Open source is a win-win-win for those writing it, those who use it, and those who support it. Better software comes out of it. People still make money and feed their families. And you make the world a better place.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/78/why-open-source/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Don&#8217;t use Number to iterate over for-loops</title>
		<link>http://jacwright.com/blog/77/dont-use-number-to-iterate-over-for-loops/</link>
		<comments>http://jacwright.com/blog/77/dont-use-number-to-iterate-over-for-loops/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 13:41:05 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[ActionScript 3]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/77/dont-use-number-to-iterate-over-for-loops/</guid>
		<description><![CDATA[A while back I read a couple of blog posts about the slowness of using uint and int to iterate through for-loops. I needed to do some testing for a little project today and found this is false.
When using the "i" variable in for(var i = 0; i < length; i++) as an input into [...]]]></description>
			<content:encoded><![CDATA[<p>A while back I read a couple of <a href="http://www.gskinner.com/blog/archives/2006/06/types_in_as3_in.html">blog</a> <a href="http://kuwamoto.org/2006/06/15/avoid-ints-in-actionscript/">posts</a> about the slowness of using uint and int to iterate through for-loops. I needed to do some testing for a little project today and found this is false.</p>
<p>When using the "i" variable in for(var i = 0; i < length; i++) as an input into mathematical operation, especially when doing fractions, Number is faster for obvious reasons. This was established in the posts of the previously mentioned blogs. But when simply iterating over an array which is a very common use-case for for-loops uint is faster. Here is my test setup:</p>
<div class="code">
var value:Object;<br />
var arr:Array = new Array(1000000);<br />
var length:uint = arr.length;<br />
var startTime:Number = getTimer();</p>
<p>for (var i:uint = 0; i < length; i++)<br />
	value = arr[i];</p>
<p>var endTime:Number = getTimer();<br />
trace("Total Time:", endTime - startTime);
</p></div>
<p>I was getting around 210 for uints and around 230 for Number. Not a big difference, but I feel dumb for always using Number for this sort of thing without even thinking about how it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/77/dont-use-number-to-iterate-over-for-loops/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Your Own Custom Metadata in AS3</title>
		<link>http://jacwright.com/blog/72/using-your-own-custom-metadata-in-as3/</link>
		<comments>http://jacwright.com/blog/72/using-your-own-custom-metadata-in-as3/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 20:57:54 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[ActionScript 3]]></category>

		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/72/using-your-own-custom-metadata-in-as3/</guid>
		<description><![CDATA[Flex 3 gives us a great new feature, custom metadata tags. Now, I know you could actually use custom metadata in Flex 2, but you would have to add "-keep-as3-metadata MyTag" to every single project that utilized these custom tags. In Flex 3, if you add "-keep-as3-metadata MyTag" to a library (using compc to compile [...]]]></description>
			<content:encoded><![CDATA[<p>Flex 3 gives us a great new feature, custom metadata tags. Now, I know you could actually use custom metadata in Flex 2, but you would have to add "-keep-as3-metadata MyTag" to every single project that utilized these custom tags. In Flex 3, if you add "-keep-as3-metadata MyTag" to a library (using compc to compile a SWC or a Flex Builder Library project), then EVERY project that uses that SWC will automatically keep the "MyTag" metadata tags. This allows custom libraries that utilize these tags for development.</p>
<p>Would be cool to create a library to hook up listeners so you can create listeners like this:</p>
<div class="code">
<div class="syntax_hilite">
<div id="actionscript-12">
<div class="actionscript"><span style="color: #66cc66;">&#91;</span>Listen<span style="color: #66cc66;">&#40;</span>obj=<span style="color: #ff0000;">"this.closeButton"</span>, event=<span style="color: #ff0000;">"click"</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#93;</span><br />
<span style="color: #0066CC;">public</span> <span style="color: #000000; font-weight: bold;">function</span> closeClickHandler<span style="color: #66cc66;">&#40;</span>event:MouseEvent<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>...<span style="color: #66cc66;">&#125;</span></div>
</div>
</div>
<p></div>
<p>You'd use -keep-as3-metadata Listen in the libraries compiler options. Maybe if you want I could post a tutorial on doing something like this. Drop me note and let me know if there is interest.</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/72/using-your-own-custom-metadata-in-as3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why is WordPress so easy to install, so painful to update?</title>
		<link>http://jacwright.com/blog/76/why-is-wordpress-so-easy-to-install-so-painful-to-update/</link>
		<comments>http://jacwright.com/blog/76/why-is-wordpress-so-easy-to-install-so-painful-to-update/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 19:53:46 +0000</pubDate>
		<dc:creator>Jacob Wright</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://jacwright.com/blog/76/why-is-wordpress-so-easy-to-install-so-painful-to-update/</guid>
		<description><![CDATA[I don't think there is a better open-source blog engine on the market than WordPress, but why is it so painful to update it? You have to back up the database, download the files, copy over the config file, themes, uploads, and any other stuff you need to the new installation, and then rename the [...]]]></description>
			<content:encoded><![CDATA[<p>I don't think there is a better open-source blog engine on the market than WordPress, but why is it so painful to update it? You have to back up the database, download the files, copy over the config file, themes, uploads, and any other stuff you need to the new installation, and then rename the folders quickly so the new one fills the space of the old one.</p>
<p>Why can't we just get the files that have changed downloaded and the database updated by pressing a big blue "Update" button?</p>
]]></content:encoded>
			<wfw:commentRss>http://jacwright.com/blog/76/why-is-wordpress-so-easy-to-install-so-painful-to-update/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
