<?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>Jtmcgee.net &#187; Projects</title>
	<atom:link href="http://jtmcgee.net/categories/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://jtmcgee.net</link>
	<description>A Technological Guru Blog</description>
	<lastBuildDate>Sun, 27 Nov 2011 04:50:48 +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>Data Structures, and why you need to actually learn them</title>
		<link>http://jtmcgee.net/archives/2011/11/data-structures-and-why-you-need-to-actually-learn-them/</link>
		<comments>http://jtmcgee.net/archives/2011/11/data-structures-and-why-you-need-to-actually-learn-them/#comments</comments>
		<pubDate>Sun, 27 Nov 2011 04:50:48 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[data structures]]></category>
		<category><![CDATA[efficiency]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[kstate]]></category>
		<category><![CDATA[memory]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=242</guid>
		<description><![CDATA[This year, I am taking CIS 300 at Kansas State University. At first, I expected this class to be boring as it was a class on &#8220;data structures.&#8221; How much more boring could it get? Oooh, studying the differences in implementations between LinkedList and ArrayLists. The first day our professor proved to us just how ]]></description>
			<content:encoded><![CDATA[<p>This year, I am taking CIS 300 at Kansas State University. At first, I expected this class to be boring as it was a class on &#8220;data structures.&#8221; How much more boring could it get? Oooh, studying the differences in implementations between LinkedList and ArrayLists. The first day our professor proved to us just how wrong we were. He showed us two snippets of code:</p>
<pre><code>String results = "";
for(char c: String.toCharArray()) {
results += (char)(c+3);
}
</code></pre>
<p>and</p>
<pre><code>StringBuilder results = new StringBuilder();
for(char c: String.toCharArray()) {
results.append((char)(c+3));
}
</code></pre>
<p>He then proceeded to convert the entire collection of works by Shakespeare. Method 1 was estimated to take over 21 days by the computer. Method 2 finished in seconds. That caught my attention.<br />
There are several cool data structures and search techniques that I have found awesome throughout this semester.</p>
<h2><span id="more-242"></span><strong>Binary Search</strong></h2>
<p>The people who write these algorithims are brilliant. To search through a sorted array, why look at every element? Why not just jump to the middle, see if what you are looking for is less than or greater than the middle, then do it again, with the new middle being the middle of the selected half.</p>
<h2><strong>ArrayList</strong></h2>
<p>ArrayList&#8217;s is essentially a circular array that handles the dirty details of dealing with arrays. When programming simple projects, I prefer to use ArrayLists as they are just more friendly than arrays. It dynamically resizes to allow you to constantly add without having to handle the actual details of expanding the underlying arrays. Finding an element at a certain element is VERY cheap as it essentially an array wrapper, the problem with ArrayList is removing or adding as it requires all of the following elements to be moved which can be pricey in a large array (I don&#8217;t mean hundreds, I mean hundreds of thousands).</p>
<h2><strong>LinkedList</strong></h2>
<p>LinkedList&#8217;s can be awesome when used correctly. A LinkedList is a group of nodes, linearly linked together. Node A contains certain data and a link to B. B contains data and a link to C, etc. This can be quite efficient if all you need to do is traverse the list in order. Finding a certain index can be much more costly than an ArrayList, but adding and removing at the end, or having a certain Node is extremely cheap. While sounding sort of lame, it can be very useful.</p>
<h2><strong>Tries</strong></h2>
<p>Now Trie&#8217;s really got my attention the first day of class. While looping through every String in a String[] can be very expensive, say an 80,000 word dictionary. While a binary search can cut that down to around 30 loops. Imagine if you could do that in 5 for a 5 letter word, or 8 for an 8 letter word. Imagine a tree, with the head having 26 children, each corresponding to a letter. From each letter are more children, and more children from there. Say following from the root, &#8216;a&#8217; to &#8216;c&#8217; to &#8216;e&#8217;, and &#8216;e&#8217; contains a &#8216;emptyString&#8217; property that holds the boolean <code>true</code>. You have found the word &#8216;ace&#8217; in 3 actions. Mind boggling.</p>
<h2><strong>Conclusions</strong></h2>
<p>Knowing these staples of data structures enables you to mix and mash creating the perfect data structure for any ocassion. Today I mixed LinkedLists with float arrays to efficiently store millions of floating point numbers so that I could both stay memory efficient (arrays of primitive types) while keeping object sizes down (breaking the large arrays up through the LinkedLists). Note: I in no way claim to be a genius on this, or even know a good amount about it, as I have only spent a few months studying it, but it&#8217;s some awesome stuff that all developers should look into if they haven&#8217;t already.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F11%2Fdata-structures-and-why-you-need-to-actually-learn-them%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F11%2Fdata-structures-and-why-you-need-to-actually-learn-them%2F&title=Data+Structures%2C+and+why+you+need+to+actually+learn+them" rel="news, programming"><span style="display:none">This year, I am taking CIS 300 at Kansas State University. At first, I expected this class to be boring as it was a class on &#8220;data structures.&#8221; How much more boring could it get? Oooh, studying the differences in implementations between LinkedList and ArrayLists. The first day our professor proved to us just how </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2011/11/data-structures-and-why-you-need-to-actually-learn-them/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Verifying an Google Apps Alias Domain</title>
		<link>http://jtmcgee.net/archives/2011/07/verifying-an-google-apps-alias-domain/</link>
		<comments>http://jtmcgee.net/archives/2011/07/verifying-an-google-apps-alias-domain/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 21:41:02 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=232</guid>
		<description><![CDATA[So I&#8217;ve been working on a project for a while with Google App Engine and it has gotten close to being finished, so I decided to buy a domain name and put the project on it. Sounds simple and a 5 minute ordeal right? Wrong. Dead wrong. So I need to verify it, the main ]]></description>
			<content:encoded><![CDATA[<p>So I&#8217;ve been working on a project for a while with Google App Engine and it has gotten close to being finished, so I decided to buy a domain name and put the project on it. Sounds simple and a 5 minute ordeal right? Wrong. Dead wrong.</p>
<p>So I need to verify it, the main and recommended way is to use TXT record supported by most domain name registrars. Well mine wasn&#8217;t supported. Shouldn&#8217;t be a problem, all I need to do is upload an HTML file to a server behind the domain name to verify. That is quite dificult it turns out.</p>
<p>Next I fire up a VM, put a web server on it, put the verification file on it, and open it to the world and put it in the DNS settings for the domain name. Cox Communications doesn&#8217;t allow port 80; FAIL.</p>
<p>Try two, I&#8217;ll do a redirect from my domain name to a file on jtmcgee.net projects. FAIL, Google Apps doesn&#8217;t allow redirects when looking for the verification file.</p>
<p>3rd times the charm, right? I&#8217;ll CNAME my App Engine and put my project there. FAIL, the App Engine just redirects me to google.com.</p>
<p>4th time I try to CNAME my own website. This has a similar result, getting redirected back to epicserve.com, the owner of the servers website.</p>
<p>5th time, I contacted my friend <a href="http://epicserve.com">Brent</a> and asked him to work some config magic so that I could CNAME my project server without redirecting. Finally I can validate!</p>
<p>Yet I am still waiting for that CNAME change to propogate to the DNS servers around the world&#8230; 1and1 is famous for their slowness. It shows up right on my computer I am just waiting for it to show up right at Google.</p>
<p>Never thought something so simple would take so long.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F07%2Fverifying-an-google-apps-alias-domain%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F07%2Fverifying-an-google-apps-alias-domain%2F&title=Verifying+an+Google+Apps+Alias+Domain" rel="news, programming"><span style="display:none">So I&#8217;ve been working on a project for a while with Google App Engine and it has gotten close to being finished, so I decided to buy a domain name and put the project on it. Sounds simple and a 5 minute ordeal right? Wrong. Dead wrong. So I need to verify it, the main </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2011/07/verifying-an-google-apps-alias-domain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Happy Birthday Facebook App</title>
		<link>http://jtmcgee.net/archives/2011/06/happy-birthday-facebook-app/</link>
		<comments>http://jtmcgee.net/archives/2011/06/happy-birthday-facebook-app/#comments</comments>
		<pubDate>Sat, 25 Jun 2011 16:02:44 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=230</guid>
		<description><![CDATA[Whenever I finish a new project I always post about it. Here I go. The Happy Birthday Facebook App was designed for lazy people, me in mind, that want to post on peoples walls at midnight for their birthday so it can be special and all, but for one reason or another they can&#8217;t. This ]]></description>
			<content:encoded><![CDATA[<p>Whenever I finish a new project I always post about it. Here I go.</p>
<p>The <a href="Happy Birthday Facebook App">Happy Birthday Facebook App</a> was designed for lazy people, me in mind, that want to post on peoples walls at midnight for their birthday so it can be special and all, but for one reason or another they can&#8217;t. This app basically lets you choose friends to wish happy birthday to at midnight, set a custom message, and adds it to the database to wait for that special night when it strikes 12. Then it will use that access token you gave it long ago and write on their birthday giving them your special message.</p>
<p>Like a large majority of my projects, it is open sourced.  You can find it at <a href="https://github.com/jdeloach/Happy-Birthday">GitHub</a> and do whatever you want with the source. If you are looking for a simple Java Facebook app example or a simple Java App Engine app example, then it&#8217;s for you.</p>
<p>Try it out on Facebook.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F06%2Fhappy-birthday-facebook-app%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F06%2Fhappy-birthday-facebook-app%2F&title=Happy+Birthday+Facebook+App" rel="news, programming"><span style="display:none">Whenever I finish a new project I always post about it. Here I go. The Happy Birthday Facebook App was designed for lazy people, me in mind, that want to post on peoples walls at midnight for their birthday so it can be special and all, but for one reason or another they can&#8217;t. This </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2011/06/happy-birthday-facebook-app/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eclipse Plugin Update Logger</title>
		<link>http://jtmcgee.net/archives/2011/05/eclipse-plugin-update-logger/</link>
		<comments>http://jtmcgee.net/archives/2011/05/eclipse-plugin-update-logger/#comments</comments>
		<pubDate>Fri, 20 May 2011 16:48:55 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=225</guid>
		<description><![CDATA[If you have read my site for a while, or know what projects I am involved in, you know that for several summers I always do a little update on an Eclipse Plugin download logger. It started two years ago, then it just literally increased an integer in a text file for every download. You ]]></description>
			<content:encoded><![CDATA[<p>If you have read my site for a while, or know what projects I am involved in, you know that for several summers I always do a little update on an Eclipse Plugin download logger. It started two years ago, then it just literally increased an integer in a text file for every download. You could only see how many times a thing had been downloaded. Last year I upgraded it to two separate versions. Initially I wrote a logger that logged to an XML file. It kept a date, IP, and what was downloaded. This was infinitely better however when used it production it had a flaw where there were multiple file handles editing the file at the same time and it wiped the file. So later that summer I changed about 1/3 of the code to instead of logging to XML, to log to a MySQL database. It included a great backend that would provide Geo-location based on the IP address,  other WHOIS stats on the IP, and various other information. It&#8217;s backend was a copy of my old CMS for this website so it even had a decent looking backend. It allowed you to download your log in a CSV format for whatever purposes you wanted. It was great, just not so polished and debugged.</p>
<p>This year I moved the project to GitHub and you can find it <a href="http://github.com/jdeloach/Eclipse-Plugin-Update-Logger">here</a>. This years version features an install script that dramatically makes it simpler to setup. Once you clone the git repository just running the install.php will setup everything from the MySQL DB, to error reporting, to your Google Maps API (for the map on the geo-location). All that&#8217;s needed to install this correctly is giving the web server the ability to write/edit files.</p>
<p>If you have a plugin for eclipse that you release check it out. Worst case scenario is it breaks, and if that happens it will turn itself off, stop logging, and allow the downloads to continue as if it was never there. <a href="http://github.com/jdeloach/Eclipse-Plugin-Update-Logger">Check it out</a>.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F05%2Feclipse-plugin-update-logger%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2011%2F05%2Feclipse-plugin-update-logger%2F&title=Eclipse+Plugin+Update+Logger" rel="news, programming"><span style="display:none">If you have read my site for a while, or know what projects I am involved in, you know that for several summers I always do a little update on an Eclipse Plugin download logger. It started two years ago, then it just literally increased an integer in a text file for every download. You </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2011/05/eclipse-plugin-update-logger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java &#8211; The Power Language (for Web or Console)</title>
		<link>http://jtmcgee.net/archives/2010/08/java-the-power-language-for-web-or-console/</link>
		<comments>http://jtmcgee.net/archives/2010/08/java-the-power-language-for-web-or-console/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 01:30:07 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[appengine]]></category>
		<category><![CDATA[computers]]></category>
		<category><![CDATA[developer]]></category>
		<category><![CDATA[django]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=205</guid>
		<description><![CDATA[Recently, I wrote my first Facebook application. It was a small project, and it&#8217;s main purpose was to replace the common note entitled something like &#8220;Xth grade Schedule!!!&#8221; and it was designed to be more efficient for the end user. After inputting your schedule, you would go through and see who is in your classes ]]></description>
			<content:encoded><![CDATA[<p>Recently, I <a href="http://jtmcgee.net/archives/2010/08/social-schedules-my-first-facebook-application/">wrote my first Facebook application</a>. It was a small project, and it&#8217;s main purpose was to replace the common note entitled something like &#8220;Xth grade Schedule!!!&#8221; and it was designed to be more efficient for the end user. After inputting your schedule, you would go through and see who is in your classes (that the system already knows). There were other cool features like using some <a href="http://developers.facebook.com/plugins">Facebook Social Plugins</a> like the &#8220;Like&#8221; button and Facebook comments.</p>
<p>Now for this application, as I wrote it in a matter of days and released it the day of schedule releases, I had to go with a language I knew very well, and I had to have a reliable, dependable source to host it at. I automatically though of the <a href="http://code.google.com/appengine/">Google App Engine</a> as it is pretty sweet to play around with and now would be a great time to test it in a live environment. My previous application I had wrote on Google&#8217;s free, scalable engine was written in Python. It utilized the amazing Django framework, but I felt like I didn&#8217;t really understand the Python language as well as some others. The only other option for selection on the App Engine was Java. This was perfect as I had just completed a summer class on Java and it was extremely fresh in my mind.</p>
<p><span id="more-205"></span></p>
<h2>Core Java Servlets</h2>
<p>Now coming from PHP for web development the idea of Servlets and JSP&#8217;s was totally a different way of thinking. With PHP I was used to putting what code I needed to on each page to achieve what needed to be done. With a bit of Python/Django experience, Java&#8217;s way was still different, but not as different as PHP to Java. Java&#8217;s JSP method reminded me a lot of Django templates, except that JSP&#8217;s are a load more powerful. As Django templates (at least from my experience) only allow a few tags, a JSP allows practically any Java code (that would normally go inside a main method) and allows imports and special features unique to JSP&#8217;s, like includes. JSP&#8217;s includes in fact reminded me some more of Django&#8217;s templates with all the splitting up possible of the HTML files.</p>
<p>Now that we briefly know what a JSP is, a servlet is just like a Java class that implements the standard Apache servlet. Within these servlets you have two methods by default <code>doGet(HttpServletRequest req, HttpServletResponse resp)</code> and <code>doPost()</code> with the same arguments. There are a few differences from a standard Java class beyond those previously noted:</p>
<pre><code>resp.getWriter().println(); // to print to the screen you must get the PrintWriter via the resp.getWriter() method
resp.setContentType("text/html"); // must do if you print out any HTML and don't want it to appear as standard text
resp.sendRedirect(String url); // a simple way to send a user to be redirected
</code></pre>
<p>There is (obviously) no console input on a web browser, so the standard way to get input via the web is through GET and POST methods. These are handled via the corresponding <code>doGet()</code> and <code>doPost()</code> methods. Now to actually get the value passed, you must know the variable name and use it accordingly.</p>
<pre><code>req.getParameter(String paramName); // where paramName is the ?name=Joe&amp;age=18 name or age
</code></pre>
<p>Sometimes you will also find yourself in need of getting an array, from say a multiple choice drop down.</p>
<pre><code>req.getParameterValues(String paramName); // just once and it will return a String[]
</code></pre>
<p>Now onto more of the theory behind servlets, and less of the syntax. Now please remember when I say theory, this is just the way I perceive it. In my application if I would have a full blown HTML page, I would always put it in a JSP as it is so simple and better looking. However when there was a simpler page that had a bit more code behind it, I would make that a servlet. An example of a simpler page with more code that I used as a servlet would be my form handlers (any adding or updating interaction with the database), and also I handled the OAuth authentication with servlets.</p>
<h2>JSP&#8217;s</h2>
<p>JSP&#8217;s, or Java Server Pages, are a mix between Java code &amp; client-side scripting. It allows you to mix the power of Java and your the models in your MVC framework with the simplicity of a HTML file. You probably see them all over the web, as they are quite effective, especially in larger businesses and universities.<br />
I have not personally gone that far into all the powers of JSP&#8217;s but enough to know that I like them. I am not going to try and write a tutorial but just point out a few things I use and a good tutorial or two.<br />
Now one of the simplest, but greatest is the server-side include of static content. This allows you to keep your web pages on the server side leaner and able to easily change base things like headers or footers.</p>
<pre><code>&lt;%@ include file="/include.html" %&gt;
</code></pre>
<p>Other useful things to know, if you need to get any parameters or need to mess with the request or response, they are simply called <code>request</code> and <code>response</code> in all JSP&#8217;s. So you could use a <code>request.getParameter("id");</code> for example.<br />
If you need to write anything to the page from within the Java code just throw a <code>out.println(String value);</code> or <code>out.print(String value)</code>.</p>
<p>For anything more than what I included check Google for some JSP tutorials or here is a good looking <a href="http://www.jsptut.com/">one</a>.</p>
<h2>Benefits</h2>
<p>I see there being several benefits of using Java as the language behind more complex applications because of it is an object oriented language. It being OO allows code to get so many more times complex. Now, in web development at least, a OO language is only as good as the database that supports it . I happened to be very lucky with Google App Engine as it was powered by a OO database allowing me to store some of my unique data types like &#8220;Student&#8221;, &#8220;Teacher&#8221;, &#8220;Course&#8221;, and &#8220;Schedule&#8221; in the database and retrieve it like it has been open since it was created. Most of the interface for this was provided in the JDO classes in <code>javax.JDO</code>.<br />
With this and a few classes for getting and selecting certain Students/Teachers/Courses, it was very easy to get exactly the results I want in a few lines of code in a JSP. And I know that in Python and PHP you can have classes and objects, but it&#8217;s just not the same as it is in Java. While Java can be pretty strict with it&#8217;s types and defining them, it in turn gives a lot of power to create awesome and dynamic applications for the end user.</p>
<h2>Finally</h2>
<p>As I have been reading in my &#8220;Clean Code&#8221; book, it is better to take longer and write software better the first time. Better being Javadoc&#8217;d and Object-Oriented. If you were to write it the other way, with say PHP or Python and have each script access the relational database, get the results, sort the results into the data you need, and output it correctly, that is so much code duplication. One script could be anywhere from 20% &#8211; 50% of the same code over and over, why not just write it great in the beginning in an OO way so the only code duplication you have is one or two lines to load the pre-written-by-you libraries that does all that work in one place, one time.</p>
<p>And sorry <a href="http://epicserve.com">Brent</a> I think I like Java Servlets &amp; JSP&#8217;s a wee bit more than Python/Django even though I think Django is a great framework and would love if it were written in Java instead, Python just isn&#8217;t as big and powerful as Java.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F08%2Fjava-the-power-language-for-web-or-console%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F08%2Fjava-the-power-language-for-web-or-console%2F&title=Java+%26%238211%3B+The+Power+Language+%28for+Web+or+Console%29" rel="news, programming"><span style="display:none">Recently, I wrote my first Facebook application. It was a small project, and it&#8217;s main purpose was to replace the common note entitled something like &#8220;Xth grade Schedule!!!&#8221; and it was designed to be more efficient for the end user. After inputting your schedule, you would go through and see who is in your classes </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2010/08/java-the-power-language-for-web-or-console/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Social Schedules: My First Facebook Application</title>
		<link>http://jtmcgee.net/archives/2010/08/social-schedules-my-first-facebook-application/</link>
		<comments>http://jtmcgee.net/archives/2010/08/social-schedules-my-first-facebook-application/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 16:31:17 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[servlets]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=201</guid>
		<description><![CDATA[I have had this idea for several years, I had always thought the way of sharing schedules on Facebook was inefficient. At my high school I would have to go through 1200 notes, just to see who was in my class. My application, only available for MHS students, allows you to add your schedule (teachers and classes), ]]></description>
			<content:encoded><![CDATA[<p>I have had this idea for several years, I had always thought the way of sharing schedules on Facebook was inefficient. At my high school I would have to go through 1200 notes, just to see who was in my class.</p>
<p>My application, only available for MHS students, allows you to add your schedule (teachers and classes), see who&#8217;s in your class, comment and Facebook Like both your teachers and your hours.</p>
<p>It was written on the Google App engine, using an OO (object oriented) database with JSP&#8217;s and Core-servlets. I  will be writing a post about this stuff later.</p>
<p>For some who want to complain about how &#8220;bad&#8221; it is, I remind you this was about 8 days of work. However here is some of my attached code for it. Note: this is only SOME, not all.</p>
<p><a href="http://jtmcgee.net/wp-content/uploads/2010/08/socialschedulesSource.zip">socialschedulesSource</a> [zip]</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F08%2Fsocial-schedules-my-first-facebook-application%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F08%2Fsocial-schedules-my-first-facebook-application%2F&title=Social+Schedules%3A+My+First+Facebook+Application" rel="news, programming"><span style="display:none">I have had this idea for several years, I had always thought the way of sharing schedules on Facebook was inefficient. At my high school I would have to go through 1200 notes, just to see who was in my class. My application, only available for MHS students, allows you to add your schedule (teachers and classes), </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2010/08/social-schedules-my-first-facebook-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux Terminal Twitter Client</title>
		<link>http://jtmcgee.net/archives/2010/01/linux-bash-twitter-client/</link>
		<comments>http://jtmcgee.net/archives/2010/01/linux-bash-twitter-client/#comments</comments>
		<pubDate>Sat, 09 Jan 2010 02:04:07 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=115</guid>
		<description><![CDATA[Today I was bored so I decided to write a Twitter client centered in Terminal. It&#8217;s not a super-client, it&#8217;s just plain and simple. It was more of a test of myself. Anyways be looking for versions in more languages, hopefully in Python or Bash in a few days, maybe in Perl someday. Download &#38; ]]></description>
			<content:encoded><![CDATA[<p>Today I was bored so I decided to write a Twitter client centered in Terminal. It&#8217;s not a super-client, it&#8217;s just plain and simple. It was more of a test of myself. Anyways be looking for versions in more languages, hopefully in Python or Bash in a few days, maybe in Perl someday.</p>
<ol>
<li>Download &amp; Unzip</li>
<li>Put it into /home/<strong><em>youruser</em></strong>/scripts ( so tweet and twitter and etc. are in that directory )</li>
<li><em>sudo bash install.sh ( </em>it will try to install php5-curl if you don&#8217;t have it, you need this )</li>
<li><em>. ~/.bashrc </em>( include the period at the beginning )</li>
<li><em>setupTwitter</em> <strong><em>twitterusername twitterpassword</em></strong></li>
<li>You may now use <em>twitter</em> to view the 5 latest tweets or <em>tweet &#8220;<strong>YOUR Text here</strong>&#8220;</em> to tweet something</li>
</ol>
<p><a href="http://project.jtmcgee.net/downloads/phpTerminalTwitterClient.tar.gz">Download</a> [tar.gz]</p>
<p><a href="http://project.jtmcgee.net/downloads/phpTerminalTwitterClient.zip">Download</a> [zip]</p>
<p><a href="http://project.jtmcgee.net/downloads/phpTerminalTwitterClient.tar">Download</a> [tar]</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F01%2Flinux-bash-twitter-client%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2010%2F01%2Flinux-bash-twitter-client%2F&title=Linux+Terminal+Twitter+Client" rel="news, programming"><span style="display:none">Today I was bored so I decided to write a Twitter client centered in Terminal. It&#8217;s not a super-client, it&#8217;s just plain and simple. It was more of a test of myself. Anyways be looking for versions in more languages, hopefully in Python or Bash in a few days, maybe in Perl someday. Download &amp; </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2010/01/linux-bash-twitter-client/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Free Flickr</title>
		<link>http://jtmcgee.net/archives/2009/10/free-flickr/</link>
		<comments>http://jtmcgee.net/archives/2009/10/free-flickr/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 14:25:12 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[ftp]]></category>
		<category><![CDATA[liondrive]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=92</guid>
		<description><![CDATA[Okay, I am way too cheap to pay $25 a year for Flickr, but Flickr is such a cool tool, and it&#8217;s compatible with so many ways to upload. So I went ahead a wrote a tool, that reads your RSS feed, and copy&#8217;s your Flickr photos. Now the even cooler thing, is I don&#8217;t ]]></description>
			<content:encoded><![CDATA[<p>Okay, I am way too cheap to pay $25 a year for <a href="http://flickr.com">Flickr</a>, but Flickr is such a cool tool, and it&#8217;s compatible with so many ways to upload. So I went ahead a wrote a tool, that reads your RSS feed, and copy&#8217;s your Flickr photos. Now the even cooler thing, is I don&#8217;t want to host the files as it takes up a bit of room, so I added a part that will copy those photos from your Flickr RSS feed to some free FTP site! I have a couple of accounts over at <a href="http://www.liondrive.com">LionDrive</a>, it&#8217;s a pretty good service, you can control a lot of things, its pretty fast, 5gb and free! I can even mount my drives on my computer. But anyway, that is what it does, and in case  your cheap like me, but like Flickr I&#8217;ll share it with you.</p>
<p><a href="http://project.jtmcgee.net/downloads/flickrdownloadr.zip">Download FlickrDownloadR</a></p>
<p>( It&#8217;s kind of slow, but it gets the job done! )</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2009%2F10%2Ffree-flickr%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2009%2F10%2Ffree-flickr%2F&title=Free+Flickr" rel="news, programming"><span style="display:none">Okay, I am way too cheap to pay $25 a year for Flickr, but Flickr is such a cool tool, and it&#8217;s compatible with so many ways to upload. So I went ahead a wrote a tool, that reads your RSS feed, and copy&#8217;s your Flickr photos. Now the even cooler thing, is I don&#8217;t </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2009/10/free-flickr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Plugin Download Logger</title>
		<link>http://jtmcgee.net/archives/2009/06/eclipse-plugin-download-logger/</link>
		<comments>http://jtmcgee.net/archives/2009/06/eclipse-plugin-download-logger/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 14:30:17 +0000</pubDate>
		<dc:creator>Jordan DeLoach</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://jtmcgee.net/?p=48</guid>
		<description><![CDATA[Doing some work for the MACR lab I wrote a simple web application for agentTool. Mainly it just set in the web update repository for the eclipse plugin and logged every download. It also grabbed a litte bit of information from the user like IP address, time of download, and version downloaded. This is a ]]></description>
			<content:encoded><![CDATA[<p>Doing some work for the <a href="http://macr.cis.ksu.edu/">MACR</a> lab I wrote a simple web application for <a href="http://agenttool.cis.ksu.edu/">agentTool</a>. Mainly it just set in the web update repository for the eclipse plugin and logged every download. It also grabbed a litte bit of information from the user like IP address, time of download, and version downloaded. This is a nice simple handy little plugin. It uses PHP for the language and just a simple text file for a database. No installation required. Simply copy and paste your site.xml file into site.php upload the other files of mine, upload your files and its logging! It also comes along with an administration page, that is extremely simple, you can view the log, clear the log and download the log. Nice and simple.</p>
<p><a href="http://project.jtmcgee.net/eclipse-download-log/">Eclipse Plugin Download Log</a> [<a href="http://project.jtmcgee.net/eclipse-download-log/download/eclipse-download-log-0.1.zip">download</a>]</p>
<p>Have a shot at it, it is very low in smarts but it is building. This project was made by jtmcgee.net projects.</p>
<div style="padding-top:5px;padding-right:0px;padding-bottom:5px;padding-left:0px;;">
										<iframe
											style="height:25px !important; border:none !important; overflow:hidden !important; width:340px !important;" frameborder="0" scrolling="no" allowTransparency="true"
											src="http://www.linksalpha.com/social?link=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2009%2F06%2Feclipse-plugin-download-logger%2F&fc=333333&fs=arial&fblname=like">
										</iframe>
										</div>		<div style="float:right;margin:10px 10px 0px 0px;">
			<a class="DiggThisButton DiggCompact" href="http://digg.com/submit?url=http%3A%2F%2Fjtmcgee.net%2Farchives%2F2009%2F06%2Feclipse-plugin-download-logger%2F&title=Eclipse+Plugin+Download+Logger" rel="news, programming"><span style="display:none">Doing some work for the MACR lab I wrote a simple web application for agentTool. Mainly it just set in the web update repository for the eclipse plugin and logged every download. It also grabbed a litte bit of information from the user like IP address, time of download, and version downloaded. This is a </span></a>		
		</div>		
		]]></content:encoded>
			<wfw:commentRss>http://jtmcgee.net/archives/2009/06/eclipse-plugin-download-logger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

