<?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>The Open Source U &#187; Open Source Project</title>
	<atom:link href="http://blog.theopensourceu.com/category/open-source-project/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.theopensourceu.com</link>
	<description>An Open-Source Discovery/Education Blog</description>
	<lastBuildDate>Fri, 07 May 2010 18:39:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Open Source is Magic &#8211; Google IO</title>
		<link>http://blog.theopensourceu.com/2010/05/open-source-is-magic-google-io/</link>
		<comments>http://blog.theopensourceu.com/2010/05/open-source-is-magic-google-io/#comments</comments>
		<pubDate>Fri, 07 May 2010 18:39:39 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Understanding Software]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://blog.theopensourceu.com/?p=964</guid>
		<description><![CDATA[I really, really enjoyed this lecture. This is a recorded talk from Google IO by Chris DiBona (Open Source Programs Manager for Google) While nothing ground breaking is presented &#8212; it&#8217;s more of an overview talk &#8212; the perspective of open source, where open source has come from and where it is going is all [...]]]></description>
			<content:encoded><![CDATA[<p><object width="500" height="400"><param name="movie" value="http://www.youtube.com/v/hmZyyBVbkOQ&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/hmZyyBVbkOQ&#038;fs=1" type="application/x-shockwave-flash" width="500" height="400" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I really, really enjoyed this lecture. This is a recorded talk from Google IO by <a title="Wikipedia Article" href="http://en.wikipedia.org/wiki/Chris_DiBona">Chris DiBona</a> (<a title="Chris' Blogger Profile" href="http://www.blogger.com/profile/4865114">Open Source Programs Manager</a> for <a href="http://code.google.com/">Google</a>) While nothing ground breaking is presented &#8212; it&#8217;s more of an overview talk &#8212; the perspective of open source, where open source has come from and where it is going is all interesting.</p>
<p>Chris also touches on the next generation of open source developers or the lack there of. This is why Google introduced <a title="Google Summer of Code " href="http://code.google.com/soc/">Google Summer of Code</a>. Something I wish I could have participated in but I wasn&#8217;t a student when they came up with that. Nevertheless, it&#8217;s a great program.</p>
<p>Anyway, I encourage you to watch or listen to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/05/open-source-is-magic-google-io/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mongoose &#8211; A web server in C</title>
		<link>http://blog.theopensourceu.com/2010/04/mongoose-a-web-server-in-c/</link>
		<comments>http://blog.theopensourceu.com/2010/04/mongoose-a-web-server-in-c/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 21:05:55 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Article]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[tOSU-WebServer]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://blog.theopensourceu.com/?p=834</guid>
		<description><![CDATA[A bit ago now, I introduced the tOSU-WebServer which is a web server for educational purposes. As explained in my other writings that web server is simple and is not suitable for production use, though it could be modified and improved for that purpose. I was flipping though Linux magazines and came across the Linux [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.theopensourceu.com/wp-content/uploads/2010/04/Dwarf_mongoose_Korkeasaari_zoo.jpg"><img class="alignleft size-full wp-image-894" title="Mongoose" src="http://blog.theopensourceu.com/wp-content/uploads/2010/04/Dwarf_mongoose_Korkeasaari_zoo.jpg" alt="" width="250" height="188" /></a>A bit ago now, I <a title="Presenting tOSU Web Server – An open source web server" href="http://blog.theopensourceu.com/2010/03/presenting-tosu-web-server-an-open-source-web-server/">introduced the tOSU-WebServer</a> which is a web server for educational purposes. As explained in my other writings that web server is simple and is not suitable for production use, though it could be modified and improved for that purpose.</p>
<p>I was flipping though Linux magazines and came across the <a title="Linux Journal Store - Issue #192 - Contains the Mongoose Article" href="http://www.linuxjournalstore.com/products/Linux-Journal-April-2010,-%23192-%28Digital%29.html">Linux Journal&#8217;s article on Mongoose</a>. Mongoose is an open source, self contained web server written in C and implemented in two files.</p>
<p>It is significantly more difficult to understand than <a title="tOSU-WebServer's Home Page | The Open Source U" href="http://blog.theopensourceu.com/tosu-webserver/">tOSU-WebServer</a>, but it has a lot more features. Also, the fact that it&#8217;s written in C (as is <a title="Apache's Http Server" href="http://httpd.apache.org/">Apache 2</a>) might be appealing to some.  I hope to explore it&#8217;s API a bit but I&#8217;m not sure I&#8217;ll do any formal articles on it. If you can follow the implementation details of <a title="Archive for the ‘tOSU-WebServer’ Category  at The Open Source U" href="http://blog.theopensourceu.com/category/understanding-software/tosu-webserver-understanding-software/">tOSU-WebServer</a>, you should be able to orientate yourself on Mongoose (assuming you are familiar with C).</p>
<p>The source code repository and project information are located on Google code: <a title="Mongoose - Google Code Project Page" href="http://code.google.com/p/mongoose/">http://code.google.com/p/mongoose/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/04/mongoose-a-web-server-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Processes and Threads</title>
		<link>http://blog.theopensourceu.com/2010/04/processes-and-threads/</link>
		<comments>http://blog.theopensourceu.com/2010/04/processes-and-threads/#comments</comments>
		<pubDate>Thu, 01 Apr 2010 15:53:27 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Multi-Threading]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[tOSU-WebServer]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=708</guid>
		<description><![CDATA[I was having a conversation with a friend of my mine; we were discussing how computers organize the processes and threads. Essentially, how the processors (cores, actually) handle the various tasks required of them. This led me to my usage of Threads in the tOSU-WebServer and made me feel that some might benefit from a [...]]]></description>
			<content:encoded><![CDATA[<p>I was having a conversation with a friend of my mine; we were discussing how computers organize the processes and threads. Essentially, how the processors (cores, actually) handle the various tasks required of them.</p>
<p>This led me to my usage of Threads in the tOSU-WebServer and made me feel that some might benefit from a practical, applied overview of the topic.</p>
<h2>What are Threads</h2>
<p>A computer consists of many components; the components are numerous and truly vary from computer-to-computer. A component that is key to a computer is the central processing unit. A while ago, when I started programing it was <em>almost </em>necessary to understand how a CPU works. These days, this isn&#8217;t so much the case.</p>
<p>The tOSU-WebServer utilizes threads; I&#8217;d suspect that most web servers would require this though I don&#8217;t believe this is a <em>strict</em> requirement<em>.</em></p>
<p>In order to understand tOSU, however, basic knowledge of threads will certainly be useful. To start, I think it is helpful to understand that computers can only accomplish so much at a given time. At one point, computers could only accomplish one thing at a time; this is quickly fading away as mutlicore processors are quite common these days.</p>
<p>But what does multicore actually mean? A core, in a general sense, is the component that does the actual calculations and logic. When you write: <code class="codecolorer text default"><span class="text">if( j &gt; 0 ) i = j + 2;</span></code>  A &#8216;core&#8217; actually handles both the logic and mathematics. This means that a dual core machine can do two of these concurrently, whereas a quad-core can do four of these at any given moment. More is better, but obviously there are dependencies upon previous steps.</p>
<h3>A simple example</h3>
<p>In order to help initial understanding of a program with multiple threads, I&#8217;ve put together a small Java &#8220;Hello,World&#8221; like program that utilizes multiple threads. This code is basic but should introduce the topics nicely. If you are new to threads, analyzing and running this program on your local computer will be greatly helpful.</p>
<p>The source code can be view directly at: <a title="MultiThreadedHelloWorld  / MultiThreadedHelloWorld.java " href="http://bitbucket.org/frankv01/multithreadedhelloworld/src/1b2f082eaf2b/MultiThreadedHelloWorld.java#">MultiThreadedHelloWorld.java</a></p>
<p>The output for the program ends up as:</p>
<pre>Hello World!
-&gt; Each Thread started. Waiting for all threads to complete
Hello, Becky
Hello, Frank
Hello, Heather
Hello, Jim
Hello, Evan
Hello, Charlie
Hello, Alex
Hello, Greg
Hello, Irene
Hello, Doug
-&gt; Done, exiting</pre>
<p>Note that the names were load loaded in to the <code class="codecolorer text default"><span class="text">ArrayList</span></code> in alphabetical order. This is one of the <em>things</em> of threads.</p>
<h2>tOSU-WebServer</h2>
<p>Anyway, using that as a basis, we can move on to the actual tOSU-WebServer. The server uses different threads for different tasks. Aside from the processing benefits, this separates code that responds to the client from code that handles incoming connections. The two are different tasks. The code that waits for incoming connections, will spawn (create) a thread to handle the incoming connection.</p>
<p>So, what handles what? The class &#8220;<code class="codecolorer text default"><span class="text">MyWebServer</span></code>&#8221; (<a title="view MyWebServer.java" href="http://bitbucket.org/frankv01/tosu-webserver/src/836b81b1dd86/src/com/theOpenSourceU/webserver/ui/MyWebServer.java">view</a>) (in the <code class="codecolorer text default"><span class="text">ui</span></code> package) handles the incoming connections. The &#8220;<code class="codecolorer text default"><span class="text">HttpWorker</span></code>&#8221; (<a title="view HttpWorker.java" href="http://bitbucket.org/frankv01/tosu-webserver/src/836b81b1dd86/src/com/theOpenSourceU/webserver/http/HttpWorker.java">view</a>) (in the <code class="codecolorer text default"><span class="text">http</span></code> package) handles the client request. Lets take a brief look at the code that is actively starting threads.</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>77<br />78<br />79<br />80<br />81<br />82<br />83<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">while</span><span style="color: #009900;">&#40;</span> <span style="color: #000066; font-weight: bold;">true</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Asocket+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Socket</span></a> sock <span style="color: #339933;">=</span> servsock.<span style="color: #006633;">accept</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span> _mode <span style="color: #339933;">==</span> ServerMode.<span style="color: #006633;">WebServer</span> <span style="color: #009900;">&#41;</span><br />
WorkerFactory.<span style="color: #006633;">newServerWorker</span><span style="color: #009900;">&#40;</span>sock, _pathToServeFrom, _dPrinter<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #000000; font-weight: bold;">else</span><br />
WorkerFactory.<span style="color: #006633;">newListener</span><span style="color: #009900;">&#40;</span>sock, _dPrinter<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>This snippet is lines 77 though 85 in file <a title="view MyWebServer.java" href="http://bitbucket.org/frankv01/tosu-webserver/src/836b81b1dd86/src/com/theOpenSourceU/webserver/ui/MyWebServer.java">MyWebServer.java</a> <a title="tOSU-WebServer @ BitBucket - Tagged Revision" href="http://bitbucket.org/frankv01/tosu-webserver/src/836b81b1dd86/">tagged as v0.5.2</a>. There is actually much more here than we needed but using this actual, running code should make the example easier to follow. Either method, <code class="codecolorer text default"><span class="text">newServerWorker()</span></code> or <code class="codecolorer text default"><span class="text">newListener()</span></code> return a class that is a instance of <code class="codecolorer text default"><span class="text">Thread</span></code>. (<a title="Thread - Java 6 SE API" href="http://java.sun.com/javase/6/docs/api/java/lang/Thread.html">Thread in the Java API</a>). Once we call the <code class="codecolorer text default"><span class="text">start()</span></code> method, the computer returns to line 78 to wait for a new incoming connection and <strong>concurrently </strong>the thread starts executing. If you recall, it executes the content of the instances&#8217; <code class="codecolorer text default"><span class="text">run()</span></code> method and this runs regardless if a new connection is received and additional <code class="codecolorer text default"><span class="text">start()</span></code> methods are called. Each connection is handled independently of the other even if all responses go back to the client.</p>
<p>That is pretty much all there is to it. From the start, it might have sounded complex, but in reality it is simpler. Coordinating large, multi-threaded programs, however, can become complex &#8212; particularly in regards to passing data and coordinating such handling. This topic is an entirely different blog entry. Thank you for reading. Please leave comments below.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/04/processes-and-threads/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Save money on a Mouse and Keyboard (but not monitors)</title>
		<link>http://blog.theopensourceu.com/2010/03/save-money-on-a-mouse-and-keyboard-but-not-monitors/</link>
		<comments>http://blog.theopensourceu.com/2010/03/save-money-on-a-mouse-and-keyboard-but-not-monitors/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 21:44:52 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Open Source Software]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/2010/03/save-money-on-a-mouse-and-keyboard-but-not-monitors/</guid>
		<description><![CDATA[Synergy allows you to use a single keyboard and mouse with many computers similar to a KVM but without the headache of using hot keys. While I do not have  a need for this particular package, this is a very useful software tool and it can only be put to use if it is known [...]]]></description>
			<content:encoded><![CDATA[<p>Synergy allows you to use a single keyboard and mouse with many computers similar to a KVM but without the headache of using hot keys. While I do not have  a need for this particular package, this is a very useful software tool and it can only be put to use if it is known about. So, I thought I&#8217;d share it here.</p>
<p><a title="Google Code | Synergy+" href="http://code.google.com/p/synergy-plus/">http://code.google.com/p/synergy-plus/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/03/save-money-on-a-mouse-and-keyboard-but-not-monitors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Violet UML Editor</title>
		<link>http://blog.theopensourceu.com/2010/03/violet-uml-editor/</link>
		<comments>http://blog.theopensourceu.com/2010/03/violet-uml-editor/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 22:17:52 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Grad-School]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=570</guid>
		<description><![CDATA[I use UML to do quick brain storming and when exploring software. While I&#8217;ve not posted many write ups here (grad-school!),  I generally don&#8217;t want to invest a lot of time in my UML diagrams and only sometimes do I even want to save them. Often times, especially lately, I&#8217;ve been drawing on a whiteboard [...]]]></description>
			<content:encoded><![CDATA[<p>I use UML to do quick brain storming and when exploring software. While I&#8217;ve not posted many write ups here (grad-school!),  I generally don&#8217;t want to invest a lot of time in my UML diagrams and only sometimes do I even want to save them.</p>
<p>Often times, especially lately, I&#8217;ve been drawing on a whiteboard that I keep in my office.  I find this to be efficient (even over paper because I&#8217;d end up throwing it away).</p>
<p><a href="http://www.horstmann.com/design_and_patterns.html"><img class="alignright" title="OO Design &amp; Patterns, 2nd Ed Book Cover" src="http://www.horstmann.com/oodp2/oodp2.jpg" alt="OO Design &amp; Patterns, 2nd Ed Book Cover" width="270" height="333" /></a>In one of my current grad-school classes, we are using &#8220;<a title="Object-Oriented Design &amp; Patterns" href="http://www.horstmann.com/design_and_patterns.html">Object-Oriented Design &amp; Patterns</a>&#8221; by <a href="http://www.horstmann.com/">Cay S. Horstmann</a> as the class text book. I&#8217;ve enjoyed the book and it provides some decent examples. I bring the book up because apparently the author of the book created a UML package called <a title="Violet UML Software" href="http://violet.sourceforge.net/">Violet UML</a>. I&#8217;ve found this to be the best software based UML brain-storming software I&#8217;ve ever found. Here are my reasons:</p>
<ul>
<li>It loads quickly</li>
<li>I can efficiently draw diagrams without warnings or complex menus to navigate though.</li>
<li>The lack of UML rules enforcement means that I can draw partial diagrams; diagrams that mean nothing out of context.</li>
<li>It&#8217;s open source</li>
<li>So far, its more stable / reliable to <a title="ArgoUML at Tigris.org" href="http://argouml.tigris.org/">ArgoUML</a></li>
</ul>
<p>If you are looking for a UML package, I must recommend this. I searched and searched for a UML package a while back and I never came up with this. I looked at everything, no matter what and still never found it. So, if you like it, please spread the word (via your own blog, twitter, facebook, etc). I think it is well done software and worth some attention.</p>
<p><a title="Violet UML Software" href="http://violet.sourceforge.net/">http://violet.sourceforge.net/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/03/violet-uml-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Tools of Open Source</title>
		<link>http://blog.theopensourceu.com/2009/10/the-tools-of-open-source/</link>
		<comments>http://blog.theopensourceu.com/2009/10/the-tools-of-open-source/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 20:44:19 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Understanding Software]]></category>
		<category><![CDATA[Bash]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[GCC]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Open Source Software]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=480</guid>
		<description><![CDATA[As some readers will know, I&#8217;ve been working to study the architecture of FireFox. One thing I realize is that I&#8217;m not as familiar as I should be with some of the common open source tools, or what I consider to be the common open source tools. Below is a list of tools that are [...]]]></description>
			<content:encoded><![CDATA[<p>As some readers will know, I&#8217;ve been working to study the architecture of FireFox. One thing I realize is that I&#8217;m not as familiar as I should be with some of the common open source tools, or what I consider to be the common open source tools.</p>
<p>Below is a list of tools that are worth learning (in my opinion). I&#8217;ve also included a short description of why it might be worth learning them. (The list is in no particular order)</p>
<p>If you have an interest in open source, it will not hurt to get a quick base understanding of each of these. I&#8217;m not saying you (nor am I trying to) become an expert in each of these tools. However, having a basic understanding of syntax and function should save time and headache while trying to understand a project.</p>
<ol>
<li><strong>Linux</strong>: The concepts in and around Linux are often used on other open source products. I think Open Source developers tend to stick with using open source software. So, there is a link there.</li>
<li><strong>Bash</strong>: The de-facto standard shell for Linux (as far as I can tell). Knowing the basic usage of bash can save you time and confusion.  Certain scripts can depend on feature of your terminal interface. <a title="Mac OS X and bash" href="http://macdevcenter.com/pub/a/mac/2004/02/24/bash.html">The Mac OS X ships with a version of bash</a>, which is good to know&#8230;</li>
<li><strong>GCC</strong>: This is the GNU Compiler Collection and is often a requirement to build open source packages.</li>
<li><strong>Make</strong>: This is a part of the GCC but I want to make special mention of this because knowing how to read the script files and error messages can help diagnose an error.</li>
<li><strong>C / C++</strong>: Low Level libraries are often written in C or C++, even for an otherwise Java or Python based program.</li>
<li><strong>Python: </strong>Python is sometimes used in conjunction with Make to check for build dependencies, verify (build) requirements, or many other possible things.</li>
<li><strong>Perl:</strong> Often used like Python, from what I understand but I&#8217;ve yet to learn much about it.</li>
<li><strong>Subversion</strong>: This is the most common open source <a title="Version Control System at Wikipedia" href="http://en.wikipedia.org/wiki/Version_control_system">VCS</a> software in use (based on my own observations)</li>
<li><strong>Mercurial:</strong> One of the two popular <a title="Distributed Revision Control System at Wikipedia" href="http://www.wikipedia.org/wiki/Distributed_Version_Control_System">DVCS </a>systems. I&#8217;ve noticed more and more open source projects switching to DVCSs, so a basic working knowledge of Mercurial and Git is helpful.</li>
<li><strong>git</strong>: The second of the two popular DVCS systems.</li>
</ol>
<p>If you&#8217;d like to contribute to the list, please leave a comment below but please ensure you include a fair reason.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/10/the-tools-of-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox &#8211; Found time to Try again!</title>
		<link>http://blog.theopensourceu.com/2009/08/firefox-found-time-to-try-again/</link>
		<comments>http://blog.theopensourceu.com/2009/08/firefox-found-time-to-try-again/#comments</comments>
		<pubDate>Sat, 29 Aug 2009 23:32:01 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[FireFox]]></category>
		<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Understanding Software]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=440</guid>
		<description><![CDATA[My attempts to build Firefox on windows continue today. If you recall , previously, I&#8217;ve had great success with Mac OS X which I tried by chance but I&#8217;ve had problems while attempting the same thing on Windows. This experience has made me decided that my troubles with building open source program in the past [...]]]></description>
			<content:encoded><![CDATA[<p>My attempts to build Firefox on windows continue today. If you recall , previously, I&#8217;ve had great success with Mac OS X which I tried by chance but I&#8217;ve had problems while attempting the same thing on Windows.</p>
<p>This experience has made me decided that my troubles with building open source program in the past has stemmed from my usage of non-unix based operating systems &#8212; Windows &#8212; and my lack of understand about <a title="GNU make at Wikipedia" href="http://en.wikipedia.org/wiki/Make_%28software%29">make</a>, <a title="Autoconf - Wikipedia" href="http://en.wikipedia.org/wiki/Autoconf">autoconf</a>, <a title="Python - Wikipedia" href="http://en.wikipedia.org/wiki/Python_%28programming_language%29">python </a>and <a title="Perl - Wikipedia" href="http://en.wikipedia.org/wiki/Perl">perl</a>.</p>
<h2>Ok, lets go&#8230;.</h2>
<p>I&#8217;ve updated to the latest tip of Mozilla Central and at this very moment, I&#8217;m at revision 80f4cdc242b9. I expect to be working with this revision throughout the remainder of this post. Though, in general the exact revision shouldn&#8217;t matter if you are attempting the same thing.</p>
<p>I&#8217;ve just tried to build with the command make -f client.mk</p>
<p>I&#8217;ve received an error and while writing this I just thought of why. It&#8217;s stupid reason but one is bound to make mistakes like this. Simply put, I forgot the <a title="Build Instructions at MDC" href="https://developer.mozilla.org/En/Developer_Guide/Build_Instructions">very required mozconfig file</a>. I cloned my &#8220;clean&#8221; repository to a new directory to <em>start over</em> and I forgot this file. For records (and search engines) the exact error I received was &#8220;configure: error: &#8211;enable-application=APP was not specified and is required.&#8221;</p>
<p>So, now lets actually follow<a title="Simple Firefox Build at Mozilla" href="https://developer.mozilla.org/En/Simple_Firefox_build"> the directions</a> since we are not experts.</p>
<p>I&#8217;ve reread the MDC about building Firefox and I&#8217;ve created a .mozconfig files. I&#8217;ll put it below for my and your reference. Don&#8217;t assume you should use this &#8212; check out the Mozilla docs. They are very straight forward.</p>
<pre># My first mozilla config - https://developer.mozilla.org/en/Configuring_Build_Options

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@

ac_add_options --enable-application=browser
mk_add_options MOZ_CO_PROJECT=browser

# Use the follow two for debugging (if desired)
# ac_add_options --enable-debug    
# ac_add_options --enable-tests</pre>
<p>The # is the comment indicator and as you can see, I&#8217;ve setup but not enabled my options for debugging. I hope to use these later but for now I&#8217;ve decided to disable them.</p>
<p>Given the above .mozconfig file, I&#8217;ve attempted to rebuild and run in to an apparent <a title="oleacc.idl - MDC" href="https://developer.mozilla.org/en/oleacc.idl">known issue</a> with building on Vista. Mozilla has done a beautiful job document the reason and how to fix it.The exact error is: &#8220;configure: error: System header oleacc.idl is not available&#8221; but right afterward the <a title="oleacc.idl - MDC" href="https://developer.mozilla.org/en/oleacc.idl">URL</a> is given.</p>
<p>To correct this problem, Mozilla has listed three options. I&#8217;ve elected to attempt the &#8220;Use Windows 2008 SDK&#8221; option. I wasn&#8217;t sure which to pick but I decided that the 2008 SDK seems to be supported as the site states &#8220;<span>Unfortunately, the Vista or Windows 2008 SDKs are required to build Mozilla&#8221;. I wish the page made a recommendation or gave pros and cons but perhaps it doesn&#8217;t matter&#8230;</span></p>
<h2><span>The next error</span></h2>
<p><span>After getting the Windows 2008 SDK installed and up to date, I received another error. This time the error read &#8220;</span>nsinstall: Bad file number&#8221;. I&#8217;m not sure where to go from here, so <a title=" &quot;nsinstall: Bad file number&quot; error while Building Mozilla Firefox on Windows Vista (32-bit) " href="http://groups.google.com/group/mozilla.dev.builds/browse_thread/thread/d43e2390f14fad42#">I posted at the usenet</a>.</p>
<p>The prevalent solution was to run as administrator, according to these two articles:</p>
<ul>
<li><a title="Penelope Developer Page" href="https://wiki.mozilla.org/Penelope_Developer_Page#Windows_Vista">Penelope Developer Page</a></li>
<li><a title="ken brosnan dot net" href="http://www.kevinbrosnan.net/mozilla-build-error-nsinstall-bad-file-number">kevin brosnan dot net</a></li>
</ul>
<p><strong>This hasn&#8217;t worked for me</strong>; I&#8217;m still trying to figure this out. Apparently, my success is not going to come today so I&#8217;m setting this aside for the time being.</p>
<p>In the hopes of continuing soon, I&#8217;ve posted two questions:</p>
<ul>
<li><a title="&quot;nsinstall: Bad file number&quot; error while Building Mozilla Firefox on Windows Vista (32-bit) at mozilla.dev.builds" href="http://groups.google.com/group/mozilla.dev.builds/browse_frm/thread/d43e2390f14fad42#">Usenet</a></li>
<li><a title="nsinstall: Bad file number error on Vista at Stack Overflow" href="http://stackoverflow.com/questions/1352371/nsinstall-bad-file-number-error-on-vista">Stack Overflow</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/08/firefox-found-time-to-try-again/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programmer Challenges</title>
		<link>http://blog.theopensourceu.com/2009/06/programmer-challenges/</link>
		<comments>http://blog.theopensourceu.com/2009/06/programmer-challenges/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 02:19:41 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Programmer Challenges]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=344</guid>
		<description><![CDATA[Lets ignore this post from &#8220;The first challenge&#8221; on&#8230; I don&#8217;t know what I was thinking. Have you heard of competition-style programming? There is a website/company called TopCoder that organizes this. When I first found it, I thought it was a wonderful idea and I signed up for the site.  Somewhat unfortunately, they some how [...]]]></description>
			<content:encoded><![CDATA[<p><em>Lets ignore this post from &#8220;The first challenge&#8221; on&#8230; I don&#8217;t know what I was thinking</em>.</p>
<p><span style="text-decoration: line-through;">Have you heard of competition-style programming? There is a website/company called <a title="TopCoder: Programming Contests, Software Development, and Employment Services at TopCoder" href="http://www.topcoder.com/" target="_blank">TopCoder</a> that organizes this. When I first found it, I thought it was a wonderful idea and I signed up for the site.  Somewhat unfortunately, they some how sell services to end companies on the backs of these programmers. I don&#8217;t understand the details and I don&#8217;t know if the programmers get paid but this <em>idea</em> turned me away from using the site.</span></p>
<p><span style="text-decoration: line-through;">During my time of interest, I&#8217;ve never had time to run though a practice match, let alone a real match. I do know a little bit about the site and I still like the idea, so I&#8217;ve decided to derive a similar thing but only without the &#8220;competition&#8221; part of it.</span></p>
<p><span style="text-decoration: line-through;">My idea is simple: <strong>Post a programming challenge and let developers come up with different solutions.</strong> My idea is to include no limitation on platform, programming language, SDK, etc. Just implement a solution and then optionally share your solution. I&#8217;d also encourage an explanation on why one chose the route they did.</span></p>
<p><span style="text-decoration: line-through;">The important difference between <a title="TopCoder: Programming Contests, Software Development, and Employment Services at TopCoder" href="http://www.topcoder.com">TopCoder</a> and my idea is that there is no winner. <em>Ever</em>. The idea is to have different solutions and to allow other people to go though the different solutions and learn from them. In my opinion, every solution is a good solution. Now, I do realize that there truly are better solutions than others but in a business environment, only a single solution is produced and normally that solution is considered acceptable.</span></p>
<p><span style="text-decoration: line-through;">Again, the idea here is to learn. One who wants to learn is likely discouraged from participating in something like this, thinking that there is someone who <em>will</em> produce a better solution than they&#8230; so why bother?  I am in that boat, when it comes to <a title="TopCoder: Programming Contests, Software Development, and Employment Services at TopCoder" href="http://www.topcoder.com">TopCoder</a>.</span></p>
<h1><span style="text-decoration: line-through;">The First Challenge</span></h1>
<p><span style="text-decoration: line-through;">Given my outline above, I prose this quick challenge: <strong>Write a program to calculate one&#8217;s age down to the second</strong>. You can go as far as to allow the user watch the time increase as they watch the program. Of course, variations of this are welcomed and I encourage you to add further features. If you&#8217;d like your solution posted, please feel free to email [Frank[at]TheOpenSourceU.com] it or you can post it to your own blog and I&#8217;ll link to your blog post. Simply e-mail me the URL (or post the link in the <a title="Comments for this post" href="http://theopensourceu.com/2009/06/programmer-challenges/#comments">comments below</a>).</span></p>
<p><span style="text-decoration: line-through;">If you share your solution, I&#8217;d suggest that you select one of the <a title="OpenSource.org - Open Source Licenses by Category" href="http://www.opensource.org/licenses/category">open source licenses</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/06/programmer-challenges/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interested in Joining an Open Source Project? Check Out WordUp!</title>
		<link>http://blog.theopensourceu.com/2009/01/interested-in-joining-an-open-source-project-check-out-wordup/</link>
		<comments>http://blog.theopensourceu.com/2009/01/interested-in-joining-an-open-source-project-check-out-wordup/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 21:59:29 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Open Source Project]]></category>
		<category><![CDATA[Microsoft Word]]></category>
		<category><![CDATA[SourceForge]]></category>
		<category><![CDATA[WordUp]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=116</guid>
		<description><![CDATA[I've been looking a little bit at SourceForge to join a newer open source project being done on the .NET platform. I came upon WordUp which is suppose to be a Microsoft Word Replacement. It is still early in the development but I think it has huge potential.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking a little bit at SourceForge to join a newer open source project being done on the .NET platform. I came upon WordUp which is suppose to be a Microsoft Word Replacement. It is still early in the development but I think it has huge potential.</p>
<p>If you are interested in joining a .NET open source project, you might want to consider <a title="WordUp - Open Source Project. Replacement to MS Word" href="http://wordup.sourceforge.net/?p=55" target="_blank">joining </a>the project.</p>
<p>Check out URL to join: <a title="WordUp - Open Source Project. Replacement to MS Word" href="http://wordup.sourceforge.net/?p=55" target="_blank">http://wordup.sourceforge.net/?p=55</a></p>
<p>General Information: <a title="WordUp - Open Source Project. Replacement to MS Word" href="http://wordup.sourceforge.net/ " target="_self">http://wordup.sourceforge.net/ </a>&amp; <a title="WordUp - Open Source Project. Replacement to MS Word" href="https://sourceforge.net/projects/wordup/">https://sourceforge.net/projects/wordup/</a></p>
<p>For myself, I&#8217;ve sent in a request to get information on joining the project. If I join the project, I hope to get permission to post about it&#8217;s inner workings from an insiders-perspective here.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/01/interested-in-joining-an-open-source-project-check-out-wordup/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
