<?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; Graduate School</title>
	<atom:link href="http://blog.theopensourceu.com/category/graduate-school/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>Presenting tOSU Web Server &#8211; An open source web server</title>
		<link>http://blog.theopensourceu.com/2010/03/presenting-tosu-web-server-an-open-source-web-server/</link>
		<comments>http://blog.theopensourceu.com/2010/03/presenting-tosu-web-server-an-open-source-web-server/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 23:30:28 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Multi-Threading]]></category>
		<category><![CDATA[Technologies]]></category>
		<category><![CDATA[Understanding Software]]></category>
		<category><![CDATA[tOSU-WebServer]]></category>
		<category><![CDATA[Mercurial]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[web server]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=600</guid>
		<description><![CDATA[I&#8217;ve just finished my Winter 2010 term for my graduate degree. I took two classes this term, SE-450 and CSC-435. Both classes were great, but taking them concurrently was not a great idea. Nevertheless, I have something to share which is ultimately a derivative of the two classes. One of the project assignments in CSC-435 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just finished my Winter 2010 term for my graduate degree. I took two classes this term, <a title="CDM - SE-450" href="http://mycti.cti.depaul.edu/programs/courses_mycti.asp?deptmne=SE&amp;courseid=450">SE-450</a> and <a title="DePaul - CSC-435" href="http://mycti.cti.depaul.edu/programs/courses_mycti.asp?deptmne=CSC&amp;courseid=435">CSC-435</a>. Both classes were great, but taking them concurrently was not a great idea. Nevertheless, I have something to share which is ultimately a derivative of the two classes. One of the project assignments in CSC-435 &#8211; Distributed Systems I &#8211; was to create a web server. We were given the basics of how a web server and client works, but then left to our own devices to gather the HTTP response codes and other such information. My intention is to share a good portion of <em>the basics</em> here but then also my web server (slightly modified for this site).</p>
<h2>Background</h2>
<p>Web servers (and browsers) work on top of basic <a title="Socket at Wikipedia" href="http://en.wikipedia.org/wiki/Socket">sockets</a>. While this entry isn&#8217;t going to be a comprehensive introduction to the networking technologies involved, one area that is key to the web server is the idea of <strong>sockets</strong>. A socket is defined as a communication channel in which two programs can communicate. The communication takes place over ports.</p>
<p>Now, we need to understand how to use a <a title="Java 6 SE API - Socket" href="http://java.sun.com/javase/6/docs/api/java/net/Socket.html">Socket</a> in Java which is the implementation language for the <strong>tOSU Web Server</strong>. Java (SE 6) has two implementations for a Socket. One is the <code class="codecolorer text default"><span class="text">ServerSocket</span></code> and the other is a <code class="codecolorer text default"><span class="text">Socket</span></code>. The former, waits for incoming socket connections. Essentially, it becomes the server. The <code class="codecolorer text default"><span class="text">socket</span></code>, on the other hand, is a incoming connection; it becomes the communication channel between the client and the server.</p>
<p>The high level idea of creating a web server is to create a <code class="codecolorer text default"><span class="text">ServerSocket</span></code> instances and wait for incoming connections. Assuming it receives a properly formatted request for a HTTP server, we handle the request and return data &#8212; web pages &#8212; to the client. The question is, what constitutes a <em>valid</em> HTTP request.</p>
<h3>The HTTP Request</h3>
<p>HTTP is nothing more than a protocol. We&#8217;ve all heard this, I&#8217;m not sure we all know what this means. A protocol is <a title="Protocol on Wikipedia" href="http://en.wikipedia.org/wiki/Protocol_%28computing%29">merely a set of rules</a>. I don&#8217;t believe that a protocol is anything more or anything less.  The <a title="HTTP definition" href="http://www.w3.org/Protocols/rfc2616/rfc2616.html">HTTP protocol</a> is actually quite comprehensive but creating the tOSU-WebServer has taught me that we do not need to implement the entire protocol for a  pedagogical web server application. We simply need to provide the basics, perhaps a little more, and it&#8217;ll  work. This is what my web server represents.</p>
<div id="attachment_614" class="wp-caption alignright" style="width: 310px"><a href="http://theopensourceu.com/wp-content/uploads/2010/03/httpfox-tOSU.png"><img class="size-medium wp-image-614 " title="HttpFox results for Cat.html " src="http://theopensourceu.com/wp-content/uploads/2010/03/httpfox-tOSU-300x108.png" alt="HttpFox results for Cat.html" width="300" height="108" /></a><p class="wp-caption-text">HttpFox results for  Cat.html </p></div>
<p>I learned about the protocol in two ways, neither had to do with reading the actual published documentation. I utilized a Firefox Plug in called <a title="HttpFox :: Add-ons for Firefox" href="https://addons.mozilla.org/en-US/firefox/addon/6647">HttpFox</a> to review the server/client communication between an existing web server (the Apache server for this site) serving a simple HTML page and I created (as an assignment) a &#8220;Listener&#8221; / echo program. The listener program is built-in (as a switch) to the tOSU-WebServer. I&#8217;ll cover utilizing this in the following sections. The screen capture on the right is my results for retrieving a HTML file called &#8220;cat.html (click on the image to zoom-in).</p>
<p>The top row is a single request; if you enable Httpfox for a request on this site, you&#8217;ll notice that several requests are made. Each resource (html, css, images) become a request. The left side is the request header (for the selected request) or what Firefox sent to the web server. The right side is what the web server responded to Firefox. Our web server implementation must accept and read in the request header, process it, and along with the html page / data return the response header to the client.</p>
<p>As I write that, it sounds like a lot but it really isn&#8217;t hard to do. There are only a few required items on each side. The important line in the request header (from the client) is the &#8220;(Request-Line)&#8221; and on the client side the &#8220;(Status-Line)&#8221;.  The request-line is what the browser is requesting &#8212; the file. The status line is the response. You can view is a <a title="List of HTTP status codes on Wikipedia" href="http://en.wikipedia.org/wiki/Http_status_codes">list of common status codes</a> on Wikipedia but again, only a small subset is pertinent to the implementation of a simple web server.</p>
<h3>Headers as Implemented</h3>
<p>The headers that tOSU-WebServer must read and generate is quite straight forward.</p>
<p>The line we must process from the client browser is the request line which looks like <code class="codecolorer text default"><span class="text">GET /overview-summary.html HTTP/1.1</span></code>.  The <code class="codecolorer text default"><span class="text">GET</span></code> indicates that the browser wants to get a file, the <code class="codecolorer text default"><span class="text">/overview-summary.html</span></code> is the file we want and the <code class="codecolorer text default"><span class="text">HTTP/1.1</span></code> is the protocol the client is using &#8212; the format of the request. This single line is the only relevant line we are interested in. The client sends more but tOSU-WebServer ignores the remaining items.</p>
<p>The web server must respond with a few more lines but it still is not extensive. The first line, as previously mentioned, is the status line. This is formatted as <code class="codecolorer text default"><span class="text">HTTP/1.1 200 OK</span></code>. The <code class="codecolorer text default"><span class="text">200</span></code> and <code class="codecolorer text default"><span class="text">OK</span></code> can be various numbers and statues, but the idea holds. The <code class="codecolorer text default"><span class="text">HTTP/1.1</span></code> is the response protocol.</p>
<p>The next two lines is <code class="codecolorer text default"><span class="text">Content-Length: 500</span></code> (where &#8220;500&#8243; is <a title="Content-Length Reference in HTTP 1.1" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13">the size in bytes</a>) and <code class="codecolorer text default"><span class="text">Content-Type: text/html</span></code> where <code class="codecolorer text default"><span class="text">text/html</span></code> is the appropriate <a title="MIME type on Wikipedia" href="http://en.wikipedia.org/wiki/MIME_type">MIME type.</a></p>
<p>Each one of these must be terminated with a carriage-return and then newline. In Java, this is delimited by <code class="codecolorer text default"><span class="text">\r\n</span></code>.  Finally, to indicate that headers are complete, we send <code class="codecolorer text default"><span class="text">\r\n\r\n</span></code>. The browser would then expect the content.</p>
<h2>tOSU WebServer</h2>
<p>First, where is the code? I&#8217;ve placed the code on <a title="BitBucket's home page" href="http://bitbucket.org/">BitBucket</a>. The BitBucket project path is: <a title="BitBucket - tOSU Web Server Repo" href="http://bitbucket.org/frankv01/tosu-webserver/overview/">http://bitbucket.org/frankv01/tosu-webserver/overview</a> BitBucket provides a software project with various services, one of which is a <a title="Mercurial's site" href="http://mercurial.selenic.com/">Mercurial</a> based repository. The site also has the option to retrieve archived versions of the <em>tip</em> of the repository. This option currently exists on the page above on the far right called &#8220;<strong>get source</strong>&#8220;.</p>
<p>The command to clone the repository (full history) is:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">hg clone http://bitbucket.org/frankv01/tosu-webserver/ tOSU-WebServer</div></div>
<p>This will give you a repository clone where you issued the command, called tOSU-WebServer; this is essentially the project&#8217;s name (for lack of a better one). <em>Note</em>: This article is being written against the tag &#8220;v0.5.x&#8221;. Once  you clone the repository, run &#8220;<code class="codecolorer text default"><span class="text">hg update v0.5.1</span></code>&#8221;</p>
<p>While I&#8217;d love to review everything, including the architecture, this inaugural post can only include so much information. I figure the first aspect is understanding the overall architecture enough to looking though the code. Then we&#8217;ll take a look at the specific code segments that process incoming requests.</p>
<h3>Architecture</h3>
<p>As I stated at the start of this post, this program was developed while I attended an object-orientated architecture course <strong>and</strong> a distributed computing course. This combination made this program take on an architecture that is likely more complex than it needed to be, but is strongly OO in nature. This design led to a large number of classes but each with a finite task to accomplish. I beleive that this will make it easier to understand&#8230; once you can follow the design.  <strong>Please</strong> feel free to ask questions. I learn by teaching and I can only improve articles like this by receiving questions.</p>
<h3>Package Layout &amp; Design</h3>
<p>I&#8217;ve used packages to organize the program; understanding these should make it easier to find what you might be looking for.</p>
<ul>
<li><code class="codecolorer text default"><span class="text">com.theOpenSourceU.webserver.arguments</span></code> : A package to handle command-line argument/flag processing and parsing.</li>
<li><code class="codecolorer text default"><span class="text">com.theOpenSourceU.webserver.debugutil</span></code> : A package to handle text based debug and error messages.</li>
<li><code class="codecolorer text default"><span class="text">com.theOpenSourceU.webserver.http</span></code> : The core of the program, this contains the code that ultimately <em>is</em> the web server.</li>
<li><code class="codecolorer text default"><span class="text">com.theOpenSourceU.webserver.ui</span></code> : Contains the main executing class; the program to launch and manage the various pieces of the web server.</li>
</ul>
<h3>What <code class="codecolorer text default"><span class="text">main</span></code> does</h3>
<p>Since the goal is to understand how the program works, lets review what the program actually does. The file we are reviewing is the MyWebServer.java (in the <code class="codecolorer text default"><span class="text">ui</span></code> package), which contains a class called (surprise) <code class="codecolorer text default"><span class="text">MyWebServer</span></code>.</p>
<p>What the program basically does is:</p>
<ol>
<li>Process any given arguments, setting class level fields.</li>
<li>Get a new instances of <code class="codecolorer text default"><span class="text">ServerSocket</span></code>. When we construct the new instances, we give it the port (<code class="codecolorer text default"><span class="text">_port</span></code>) and the queue size. Both values will be covered later.</li>
<li>Next, we call <code class="codecolorer text default"><span class="text">servsock.accept()</span></code> which is a blocking call; it will block the program until a connection is received.</li>
<li>Once a connection is received (via the port) the program will receive an instance of that and stash it in <code class="codecolorer text default"><span class="text">sock</span></code>.</li>
<li>Depending on the server mode, either a new Server Worker will be created and started or a new listener. Each of these are different modes and are set via the arguments. Note that each one of these are a derivative of a <code class="codecolorer text default"><span class="text">Thread</span></code> and hence we are starting new threads upon calling <code class="codecolorer text default"><span class="text">start()</span></code></li>
<li>Go back to 3 to wait for another connection.</li>
</ol>
<p>This is the gist of the programs flow. The details of handling the request are handled in the <code class="codecolorer text default"><span class="text">http</span></code> package. We&#8217;ll review this package in the next section.</p>
<h3>Implementation</h3>
<p>The <code class="codecolorer text default"><span class="text">http</span></code> package contains various classes, only a small subset is actually public.  We&#8217;ll review a few classes in the next few paragraphs however, the best way to review all of the classes is to generate the javadoc files and review those.</p>
<p>In the earlier section, we saw the class <code class="codecolorer text default"><span class="text">WorkerFactory</span></code>. This is a class to generate appropriate instances of the two works contained in the package. A <code class="codecolorer text default"><span class="text">worker</span></code> is a class derived from <code class="codecolorer text default"><span class="text">Thread</span></code> that performs some task, in our case handle http requests. The two concrete classes that can be generated are <code class="codecolorer text default"><span class="text">HttpWorker</span></code> and <code class="codecolorer text default"><span class="text">MyListener</span></code>.</p>
<p>The <code class="codecolorer text default"><span class="text">HttpWorker</span></code> class is the class of interest here. This class becomes the worker thread that handles the request sent to the server. Another way to put this is that this is what the client-browser is actually talking to, and not the <code class="codecolorer text default"><span class="text">MyWebServer</span></code> instances. This is how the web server can handle several requests at once.</p>
<p>Since we are on it, why don&#8217;t we continue on from the <code class="codecolorer text default"><span class="text">HttpWorker</span></code> class. The class extends <code class="codecolorer text default"><span class="text">Thread</span></code> and we are implementing the run method. Let&#8217;s not go in to detail, but this is the code that processes the request and ultimately provides the content to sends back to the client browser.  Inside this method, we reference another factory &#8212; <code class="codecolorer text default"><span class="text">HttpContentFactory</span></code>. This factory can provide implementations of <code class="codecolorer text default"><span class="text">HttpContent</span></code> for a variety of files types, including css, html and a made up dynamic page. (Images weren&#8217;t working <a title="Status of issue 1" href="http://bitbucket.org/frankv01/tosu-webserver/issue/1/images-are-not-served">Status</a>)</p>
<p>The contrast to <code class="codecolorer text default"><span class="text">HttpContent</span></code> is the <code class="codecolorer text default"><span class="text">HttpClientHeaders</span></code> instance. This represents what becomes the server response headers. This web server only supports a few codes (recall, not all need to be supported). The class <code class="codecolorer text default"><span class="text">HttpClientHeadersImpl</span></code> provides support a 404 error, 500 error (internal server error) and 200 success status. The implementation details are not relevant to this initial introduction but it is important to know that the <code class="codecolorer text default"><span class="text">HttpWorker</span></code> class can&#8217;t complete it&#8217;s job without an instance of this to report status (success/error) to the client.</p>
<p>From here, <code class="codecolorer text default"><span class="text">HttpWorker</span></code> <em>renders</em> these two instances and sends the contents back to the original request.</p>
<h3>More to Come&#8230;</h3>
<p>In the details, the program does a lot more than what I&#8217;ve outlines in the last few sections. However, I suspect that wrapping your hands around these first sections can make reviewing the source code less intimidating.</p>
<p>If you have any questions or feel that the article above can be improved, please let me know via the comments. I hope to post more educational articles on tOSU-WebServer and I would greatly appropriate direction. If you are interested in a particular section, please let me know (again, via the comments). <em>Oh,</em> and don&#8217;t forget to <em>follow</em> the project on BitBucket.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/03/presenting-tosu-web-server-an-open-source-web-server/feed/</wfw:commentRss>
		<slash:comments>2</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>ORM patterns which are &#8216;Invisible to the eye&#8217;</title>
		<link>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/</link>
		<comments>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 21:44:48 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Design Patterns]]></category>
		<category><![CDATA[Design Tip]]></category>
		<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Books]]></category>
		<category><![CDATA[DVCS]]></category>
		<category><![CDATA[Grad-School]]></category>
		<category><![CDATA[ORM]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=559</guid>
		<description><![CDATA[The more I work with design patterns*, the more I come to respect them as a design tool. For grad-school, I&#8217;m writing a DVCS and I needed some information on ORM patterns. While I&#8217;m not sure if this is a real term, I Googled it and found a great article on Invisible to the eye. [...]]]></description>
			<content:encoded><![CDATA[<p>The more I work with design patterns*, the more I come to respect them as a design tool. For grad-school, I&#8217;m writing a DVCS and I needed some information on ORM patterns. While I&#8217;m not sure if this is a real term, I Googled it and found a great article on <a title="Invisible to the Eye (blogspot)" href="http://giorgiosironi.blogspot.com/">Invisible to the eye</a>.</p>
<p>The article can be found at: <a title="10 orm patterns: components of a object-relational mapper @ Invisible to the eye" href="http://giorgiosironi.blogspot.com/2009/08/10-orm-patterns-components-of-object.html">http://giorgiosironi.blogspot.com/2009/08/10-orm-patterns-components-of-object.html</a></p>
<p>For my project, I&#8217;m mainly interested in the <a title="P of EAA: DataMapper" href="http://martinfowler.com/eaaCatalog/dataMapper.html">Data Mapper</a> and the <a title="P of EAA: Table Data Gateway" href="http://martinfowler.com/eaaCatalog/tableDataGateway.html">Table Data Gateway</a>. Both are patterns from <a title="Martin Fowler's Web Site" href="http://martinfowler.com/">Martin Folwer&#8217;s</a> book <a title="Patterns of Enterprise Application Architecture" href="http://martinfowler.com/books.html#eaa">Patterns of Enterprise Application Architecture</a>.</p>
<p>While I&#8217;ve not read the book yet, I think I might&#8230; After classes&#8230;. Anyway, I mostly wanted to share on the 10 ROM patterns listed at Invisible to the eye.</p>
<p>*If  you&#8217;d like a good intro to design patterns, I love <a title="Prev. reference to Head First Design Patterns on tOSU" href="http://theopensourceu.com/2009/01/plans-for-the-open-source-u/">Head First Design Patterns</a></p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">
<h1 class="title">Invisible to the eye</h1>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/02/orm-patterns-which-are-invisible-to-the-eye/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Status &#8211; Site Still Alive</title>
		<link>http://blog.theopensourceu.com/2010/01/status-site-still-alive/</link>
		<comments>http://blog.theopensourceu.com/2010/01/status-site-still-alive/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 15:53:39 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Random]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=523</guid>
		<description><![CDATA[I wanted to post a bit of a status update. There hasn&#8217;t been any new writing on this site for a while and I want to apologize about that &#8212; especially since I stopped right in the middle of my Firefox research. I do intend to continue the pursuit; however, it has taken a backseat [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to post a bit of a status update. There hasn&#8217;t been any new writing on this site for a while and I want to apologize about that &#8212; especially since I stopped right in the middle of my <a title="Understanding Firefox" href="http://theopensourceu.com/category/understanding-software/firefox-understanding-software/">Firefox research</a>.</p>
<p>I do intend to continue the pursuit; however, it has taken a backseat to my Graduate studies for the time being. I don&#8217;t want to go in to too much detail, but this term I&#8217;ve enrolled in two classes instead of just one.</p>
<p>Hang on to the <a title="RSS Feed" href="http://feeds.feedburner.com/TheOpenSourceU">RSS feed</a>, I&#8217;ll be back to it shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2010/01/status-site-still-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back to School?</title>
		<link>http://blog.theopensourceu.com/2009/06/back-to-school/</link>
		<comments>http://blog.theopensourceu.com/2009/06/back-to-school/#comments</comments>
		<pubDate>Wed, 10 Jun 2009 20:23:57 +0000</pubDate>
		<dc:creator>Frank</dc:creator>
				<category><![CDATA[Graduate School]]></category>
		<category><![CDATA[Random]]></category>
		<category><![CDATA[Grad-School]]></category>
		<category><![CDATA[School]]></category>

		<guid isPermaLink="false">http://theopensourceu.com/?p=280</guid>
		<description><![CDATA[Since I graduated from my undergraduate program, I&#8217;ve been looking forward to enrolling in a masters program. I&#8217;ve put this desire far behind other things that have come up and I&#8217;ve decided that this year is the year. I began by looking at different masters programs in my area. Below are some of the schools [...]]]></description>
			<content:encoded><![CDATA[<p>Since I graduated from my undergraduate program, I&#8217;ve been looking forward to enrolling in a masters program. I&#8217;ve put this desire far behind other things that have come up and I&#8217;ve decided that this year is the year.</p>
<p>I began by looking at different masters programs in my area. Below are some of the schools and programs that I&#8217;ve looked at. Ultimately, I&#8217;ve selected <a title="DePaul University - Home Page" href="http://www.depaul.edu/" target="_self">DePaul</a>. I&#8217;ve know/known of a lot of people who have gone there and while they might not be the <em>best</em> they seem very good. I&#8217;m not <a title="Massachusetts Institute of Technology" href="http://web.mit.edu/" target="_self">MIT</a> material, so I think that <em>very good</em> will suite me well.</p>
<h2>DePaul [Selected]</h2>
<p>There is no one reason that I selected DePaul. I was looking around the <a title="DePaul CDM – College of Computing and Digital Media" href="http://www.cdm.depaul.edu/">CDM building</a> and it felt like a good school. I had some interaction with a professor and that interaction was positive and they fit most of my criteria that I was looking for in a graduate school. It wasn&#8217;t a perfect fit but I don&#8217;t think that any school would be&#8230;</p>
<p>I&#8217;ve selected the Software Engineering degree because I think of my self more as a software engineer than a computer scientist. I&#8217;ve posted both links for those that are interested.</p>
<p><a title="DePaul: Software Engineering Program" href="http://www.cdm.depaul.edu/academics/Pages/MSinSoftwareEngineering.aspx">http://www.cdm.depaul.edu/academics/Pages/MSinSoftwareEngineering.aspx</a></p>
<p><a title="DePaul: Computer Science Program" href="http://www.cdm.depaul.edu/academics/Pages/MSinComputerScience.aspx" target="_blank">http://www.cdm.depaul.edu/academics/Pages/MSinComputerScience.aspx</a></p>
<h2>Loyola</h2>
<p>Loyola is further from my home than DePaul is; this was the biggest reason that Loyola lost out to DePaul.  But furthermore, they didn&#8217;t have a M.S. of Software Engineering degree. They have similar degrees but the Software Engineering title became important to me.</p>
<p><a title="Loyola: Graduate School Info" href="http://www.luc.edu/cs/_academics_graduate.shtml" target="_blank">http://www.luc.edu/cs/_academics_graduate.shtml</a></p>
<h2>Illinois Institute Of Technology</h2>
<p>The campus is too far from my home. It&#8217;d be difficult to attend classes and continue working.</p>
<p><a title="IIT: Telcom Software Engineering" href="http://www.iit.edu/graduate_admission/programs/areas_of_study/telecom_software_engineering.shtml" target="_blank">http://www.iit.edu/graduate_admission/programs/areas_of_study/telecom_software_engineering.shtml</a></p>
<h2>Northwestern</h2>
<p>Northwestern isn&#8217;t a likely candidate. They were an early favorite but they don&#8217;t seem to put much effort in their science degrees&#8230; They are mostly known for their business programs&#8230; Their MBA program is one of the best, according to many&#8230;</p>
<p><strong></strong><a title="Northwestern: Computer Information Systems" href="http://www.scs.northwestern.edu/grad/mscis/">http://www.scs.northwestern.edu/grad/mscis/</a></p>
<h2>Roosevelt</h2>
<p>Roosevelt is not likely for me because they are more of a business school then a technical or general university.</p>
<p><a title="Roosevelt CompSci Graduate School Info" href="http://cs.roosevelt.edu/academics/compsci/degrees/csms.html" target="_blank">http://cs.roosevelt.edu/academics/compsci/degrees/csms.html</a></p>
<h2>Stack Overflow</h2>
<p>Yes, I know stack Overflow isn&#8217;t a university. I posted some questions to gather information from the community&#8230; I wanted to share the links&#8230;</p>
<p><a title="Stack Overflow: Grad School for CompSci and/or Software Engineering" href="http://stackoverflow.com/questions/808546/grad-school-for-compsci-and-or-software-engineering" target="_blank">http://stackoverflow.com/questions/808546/grad-school-for-compsci-and-or-software-engineering</a></p>
<p><a title="Stack Overflow: Computer science versus software engineering - which?" href="http://stackoverflow.com/questions/49054/computer-science-versus-software-engineering-which">http://stackoverflow.com/questions/49054/computer-science-versus-software-engineering-which</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.theopensourceu.com/2009/06/back-to-school/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
