<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5870553595040605483</id><updated>2011-11-19T01:51:07.799-08:00</updated><category term='java j2ee programming spring'/><category term='spring transactions programming j2ee'/><category term='visualization'/><category term='design patterns'/><category term='java'/><category term='game review iphone ipod touch'/><category term='spring'/><category term='programming'/><category term='javascript programming'/><category term='games moo2 linux ubuntu wine'/><category term='trista games'/><category term='j2ee'/><category term='puzzle pirates ubuntu sound'/><category term='project natal gaming'/><title type='text'>Cyclopean Encyclopedia</title><subtitle type='html'>A Danse Macabre of the Technical, Creative, and Idiotic</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6091201358285642198</id><published>2010-06-15T08:13:00.000-07:00</published><updated>2010-06-15T08:13:15.485-07:00</updated><title type='text'>Spring Criticism, part 2</title><content type='html'>Ok, I am back with a funky track.&lt;br /&gt;&lt;br /&gt;First off, this is not a rant, or a complaint. I just recently hit some functionality within the Spring OSGI container which seems poorly designed, and I wanted to share the love.&lt;br /&gt;&lt;br /&gt;So, OSGI is all the rage these days, supposedly. Or so it seems on various marketoblogs disguised as blogs. After a lot of hatin' on/at those blogs, I finally got around to checking it out. Imagine my surprise! OSGI is actually really &lt;i&gt;goddamned awesome&lt;/i&gt;. Bundles, dependencies, dynamically bringing them up and down, eeehhh, not so much, but &lt;b&gt;bundles and dependencies!&lt;/b&gt;&amp;nbsp;Yayyy. I'm happy.&lt;br /&gt;&lt;br /&gt;Enter Spring, with their "I gonna configure your world so hard, you're not gonna know how I configure your world so hard" mentality. After a tiny learning curve, I was happily writing Spring configuration XML files, lusting after the functionality that lay hidden behind various goodies such as&amp;nbsp;&lt;a href="http://static.springsource.org/osgi/docs/1.2.1/reference/html/index.html"&gt;spring-osgi-web&lt;/a&gt; and &lt;a href="http://static.springsource.org/osgi/docs/1.2.1/reference/html/bnd-app-ctx.html#extender-pattern"&gt;spring-osgi-web-extender&lt;/a&gt;. I have some experience with the Servlet spec, and it all made sense.&lt;br /&gt;&lt;br /&gt;What I wanted to do was deploy a war in an already existing OSGI container, as a bundle. Well, that sounds pretty simple, right? You throw together the webapp, required libraries follow the Servlet spec and reside in the warfile's ${home}/WEB-INF/lib. Throw it in the osgi startup and you're done!&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;java.lang.ClassNotFoundException&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O_o. No! This cannot be! I did everything riiiiiight. Wait a second... The docs say you have to add the jars required by your webapp to the MANIFEST.MF file within ${home}/META-INF. Of course, how could I be so stupid, this is OSGI. Duh!&lt;br /&gt;&lt;br /&gt;Or is it a "Duh?" This specifically allows for war files that break the Servlet spec to actually work within an OSGI container's Spring-powered web bundles. Not only can jars be outside of WEB-INF/lib, classes don't have to be within WEB-INF/classes. This is where things kinda get weird. Why would Spring folks (now VMWare, blah blah) want to do this? Why not spend a little extra effort and scan the war file as a J2EE-compliant server would, and make our lives &lt;i&gt;even&lt;/i&gt;&amp;nbsp;easier by automatically including the jar files found within to our bundle's classpath?&lt;br /&gt;&lt;br /&gt;I don't know. Perhaps they ran out of time. Perhaps no one is using their DM server tech and this has not come up. I do know that this does not quite fit in with their philosophy of "non-invasive configuration." It effectively breaks the Servlet spec.&lt;br /&gt;&lt;br /&gt;I am all for that don't get me wrong, technology has to move forward. But why this sudden break with backwards compatibility?&lt;br /&gt;&lt;br /&gt;For conspiracy theorists, the other possibility is that Spring is attempting to become the dominant Java enterprise tech puddle that we, the Spring semi-programmers (now with 110% more configuration skills) lurk in.&lt;br /&gt;&lt;br /&gt;My two cents? I like the mud here. But I'll be damned if I don't call it out for being mud.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6091201358285642198?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6091201358285642198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2010/06/spring-criticism-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6091201358285642198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6091201358285642198'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2010/06/spring-criticism-part-2.html' title='Spring Criticism, part 2'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6427971818101238301</id><published>2010-02-14T03:28:00.000-08:00</published><updated>2010-02-14T03:28:05.919-08:00</updated><title type='text'>Damn, Overgrowth</title><content type='html'>Sup y'all.&lt;br /&gt;&lt;br /&gt;I've been away for a bit due to an &lt;i&gt;interesting&lt;/i&gt;&amp;nbsp;business trip. Luckily it's now over. I'm not going to name any names, but don't ever go to Monaco expecting Monaco Telecom to provide internet faster than a 56k speeds. Sure, it is citywide wireless... but it is SO SLOW. If anyone ever wants to study the effects of monopoly on the quality of service that telecoms provide, go to Monaco and try to download anything. I got burned, badly.&lt;br /&gt;&lt;br /&gt;But the main topic of my post! It is just a &lt;a href="http://www.wolfire.com/overgrowth"&gt;link&lt;/a&gt;. If you are not yet aware of what these folks are &lt;a href="http://blog.wolfire.com/"&gt;doing&lt;/a&gt;, you really ought to check it out. It's the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6427971818101238301?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6427971818101238301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2010/02/damn-overgrowth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6427971818101238301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6427971818101238301'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2010/02/damn-overgrowth.html' title='Damn, Overgrowth'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6316456653156015602</id><published>2009-12-29T04:25:00.003-08:00</published><updated>2009-12-29T04:25:30.753-08:00</updated><title type='text'>Bwahahahahaha</title><content type='html'>This made me laugh so hard. I love this man!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.dzone.com/articles/secret-architects-cabal#comment-23121"&gt;http://java.dzone.com/articles/secret-architects-cabal#comment-23121&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6316456653156015602?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6316456653156015602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/bwahahahahaha.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6316456653156015602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6316456653156015602'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/bwahahahahaha.html' title='Bwahahahahaha'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-913831257103096919</id><published>2009-12-28T05:39:00.000-08:00</published><updated>2009-12-28T05:41:50.416-08:00</updated><title type='text'>Cygwin 1.7 Installation Problem</title><content type='html'>So, I was hangin' out at work today. And I decided I wanted to have a C/C++ environment up and running, because it looks like I have some C++ development ahead of me soon.&lt;br /&gt;&lt;br /&gt;I downloaded and installed the Netbeans 6.8 C++ environment, in the desire to try something new. It expects either Cygwin or MinGW and is pretty well integrated with Cygwin. So I created my little test project, and tried to compile my main.cpp file, which compiled but on the linking stage, &lt;span style="font-size: x-large;"&gt;OH GOD THE PAIN&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Yes, friends, pain. See, I had not installed the liblstdc++.a file yet. Well, no problem, I will just run the setup.exe and grab them right? Sort of. Since the version is now 1.7 there is a very fun, evil popup that says&lt;br /&gt;&lt;br /&gt;Download incomplete. Try again?&lt;br /&gt;&lt;br /&gt;The solution is to hit "yes." This brings you back to the mirror server select screen but the key is, your already downloaded archive files are SAFE AND SOUND. There seems to be some sort of bug with the setup.exe file, but if you keep hitting yes and choosing the same exact mirror server, and then just hitting next on the feature select screen, all is well. The setup will only download the files it has not yet grabbed. As a further note, I had to purge my system of any previous Cygwin files and registry entries in order for the install to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-913831257103096919?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/913831257103096919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/cygwin-17-installation-problem.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/913831257103096919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/913831257103096919'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/cygwin-17-installation-problem.html' title='Cygwin 1.7 Installation Problem'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-7274108919041649667</id><published>2009-12-28T05:16:00.001-08:00</published><updated>2009-12-28T05:18:24.257-08:00</updated><title type='text'>Neat Way of Looking at Patterns</title><content type='html'>Haven't really finished understanding this entry. But it seems real good! &lt;br /&gt;&lt;br /&gt;SPAMSPAMSPAMSPAMSPAM&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/java/library/j-eaed9/index.html"&gt;http://www.ibm.com/developerworks/java/library/j-eaed9/index.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aaaah, spam complete.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-7274108919041649667?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/7274108919041649667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/neat-way-of-looking-at-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7274108919041649667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7274108919041649667'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/12/neat-way-of-looking-at-patterns.html' title='Neat Way of Looking at Patterns'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-1391409036576205317</id><published>2009-10-19T13:20:00.000-07:00</published><updated>2009-10-19T13:32:53.752-07:00</updated><title type='text'>JSR 317</title><content type='html'>So, JSR 317.&lt;br /&gt;&lt;br /&gt;Very cool, very awesome JSR. What's cool about it? Well you see, it makes a Java standard of a technology I am already intimately familiar with! So it's really really great!!!&lt;br /&gt;&lt;br /&gt;Ok, I was being sarcastic. Whether or not ORM is a Good Idea™ is still not completely settled in my mind. There is a relatively large amount of overhead, within the knowledge that programmers must have AND efficiency. Also, everyone is doing it.&lt;br /&gt;&lt;br /&gt;The good news is that the overhead is partially addressed with the new stuff in JPA 2.0, specifically the Criteria API. This API goes a long way to completely replace the Database with Objects in the mind of the Java enterprise programmer, leaving a scarred wasteland of smoking JDBC bodies and tormented souls of DBAs. In intervals divisible by 2 those souls cry out with words that chill the very spine of those who hear them. Words like "normalization," "query efficiency" and "this is not a search engine."&lt;br /&gt;&lt;br /&gt;Well to be fair those last two were phrases.&lt;br /&gt;&lt;br /&gt;Oh well. Anyway, I am looking forward to Nov 16th, when the JSR is supposed to hit the streets. I mark the date with a shot of rakia, a toast to the people that told me I must take Relational Databases in college, or else risk not being ever hired as a programmer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-1391409036576205317?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/1391409036576205317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/10/jsr-317.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1391409036576205317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1391409036576205317'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/10/jsr-317.html' title='JSR 317'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-1494575959253191643</id><published>2009-10-19T13:19:00.000-07:00</published><updated>2009-10-19T13:20:23.481-07:00</updated><title type='text'>I'm back</title><content type='html'>After relocating to a certain Eastern European Country of questionable repute, I am back to pollute the internet with my worthless blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-1494575959253191643?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/1494575959253191643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/10/im-back.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1494575959253191643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1494575959253191643'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/10/im-back.html' title='I&apos;m back'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-9106957510004030219</id><published>2009-09-10T13:42:00.000-07:00</published><updated>2009-09-23T12:14:46.739-07:00</updated><title type='text'>Oh dear.</title><content type='html'>It seems that this post is a precondition of the significance of the hypothesis that there are humanly inaccessible blogs. &lt;a href="http://www.martinfowler.com/eaaDev/uiArchs.html"&gt;http://www.martinfowler.com/eaaDev/uiArchs.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-9106957510004030219?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/9106957510004030219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/oh-dear.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/9106957510004030219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/9106957510004030219'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/oh-dear.html' title='Oh dear.'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-8978425689375238542</id><published>2009-09-09T12:05:00.001-07:00</published><updated>2009-09-09T12:06:15.287-07:00</updated><title type='text'>Aw damn, son</title><content type='html'>Very cool video.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=rrkrvAUbU9Y"&gt;STFU and go away&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-8978425689375238542?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/8978425689375238542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/aw-damn-son.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8978425689375238542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8978425689375238542'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/aw-damn-son.html' title='Aw damn, son'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-5847973308874076391</id><published>2009-09-08T11:53:00.000-07:00</published><updated>2009-09-08T11:54:02.115-07:00</updated><title type='text'>Advice on how to start a new business, pt. 1</title><content type='html'>Do not tell people you can "prove aliens."&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-5847973308874076391?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/5847973308874076391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/advice-on-how-to-start-new-business-pt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5847973308874076391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5847973308874076391'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/advice-on-how-to-start-new-business-pt.html' title='Advice on how to start a new business, pt. 1'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-8102035708388582884</id><published>2009-09-08T07:56:00.001-07:00</published><updated>2009-09-08T07:56:57.809-07:00</updated><title type='text'>The Sims is Evil</title><content type='html'>Don't play it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-8102035708388582884?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/8102035708388582884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/sims-is-evil.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8102035708388582884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8102035708388582884'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/09/sims-is-evil.html' title='The Sims is Evil'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-4386116473831473303</id><published>2009-07-21T10:03:00.000-07:00</published><updated>2009-07-21T14:28:57.757-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='spring'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>DAOs ... not...  dead? &lt;shotgun blast&gt;</title><content type='html'>Recently, &lt;a href="http://www.theserverside.com/user/userthreads.tss?user_id=309479"&gt;some guy&lt;/a&gt; wrote a whole lot of &lt;a href="http://www.theserverside.com/news/thread.tss?thread_id=55191"&gt;blog entries&lt;/a&gt; about J2EE design patterns he and his team came up with.&lt;br /&gt;&lt;br /&gt;As a whole the entries are very nice, packed with info and so on. One particular blog entry struck a cord with me and I wanted to discuss it. It is the &lt;a href="http://blog.xebia.com/2009/03/09/jpa-implementation-patterns-data-access-objects/"&gt;DAO object entry&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The beginning of that post immediately addresses the actual need for DAOs in an architecture, by referring to another blog post. The conclusion is that "it depends." If your application is complex, you should use DAOs, as they provide a thin layer on top of JPA and its Entity Manager. In this post I argue that encapsulating the EntityManager functionality is not a job for the DAO layer, and that it in fact needs to be rethought, and eventually absorbed by the Service Facade layer.&lt;br /&gt;&lt;br /&gt;There are two concerns that are addressed by the DAO pattern. One is actual persistence, and the other is a logical layer within the architecture of the application. As with all design elements there is a downward concern, as well as an upward concern. The downward concern is the persistence. How will we store the data? The upward concern is the way this pattern will fit into our architecture.&lt;br /&gt;&lt;br /&gt;I am not going to use the straw man "there are too many layers" argument which dismisses this debate. The job of the layers is to make an application extensible to future business needs, and goes hand in hand with the SOA concept that businesses usually salivate over. So, let us assume either a medium size application or an application that will see rapid growth in functionality in the near future.&lt;br /&gt;&lt;br /&gt;I will discuss the downward concern first. DAOs provide an abstraction of the specifics of persistence. DAOs need to map object data to database tables and back to objects. The JPA standard provides a specification for doing exactly this. There are many JPA providers, as indicated by Vincent Partington's blog. At the end of the day, most of these competitors will use JDBC to write some data to a database. They will also need to figure out how to map the data from JDBC results sets to Java objects and back. As you can see the JPA Entity Manager takes care of the downward concern completely.&lt;br /&gt;&lt;br /&gt;The upward concern is much more interesting. DAOs offer many advantages to the client programmer. One big benefit is type safety. Another, perhaps bigger benefit is the separation of concerns, i.e. the creation of the "DAO layer." Why even have layers? Partington accurately portrays the flexibility that is gained when a layer is separate within the architecture. Not only can its functionality be changed without affecting the rest of the codebase (he cites logging as an example) but additionally, the functionality contained within can be reused to build out other components which need it, higher in the hierarchy. There are also other, minor benefits such as the conglomeration of all persistence code in one package, and so on. JPA definitely does not address the typesafety concern, and it lacks the cohesiveness to be used as a layer in our hypothetical mid-sized application.&lt;br /&gt;&lt;br /&gt;So a DAO-less architecture using JPA seems to be 1 for 2 here. Or is it? Another one of the posts discusses the &lt;a href="http://blog.xebia.com/2009/05/11/jpa-implementation-patterns-service-facades-and-data-transfers-objects/"&gt;Service Facade and DTOs&lt;/a&gt;. Yet another well thought out entry, it correctly provides the justifications for DTOs (sometimes called Light Beans) and Service Facades. However there is one concern which I want to add, regarding the Service Facade.&lt;br /&gt;&lt;br /&gt;One big time sink in real world projects is communication between developers and business analysts. Even intelligent, motivated and hardworking coworkers have a hard time getting the details knocked out when apps are developed. One of the core challenges they face is language. As human beings we cannot help but use overloaded words and phrases that mean something to us, but not quite the same thing to someone else. A UserEntity might mean something to a developer, but it might mean something completely different to a business analyst. The chief virtue of Object Oriented design is our ability to model code on real world problems and their solutions. Therefore it is my claim that &lt;b&gt;service facade objects and their methods must be identified as business objects and verbs by the business analyst first, and then created verbatim by the architect of the application in the Service Facade layer&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Business logic has no place in the persistence layer. Methods called things like "findExecutingChangePlans" should not be present there at all. Unfortuantely, the old DAO pattern, as presented by Partington, does wed those two concerns: the upward and the downward.&lt;br /&gt;&lt;br /&gt;The service facade classes implement two interfaces, the proposed IDataAccess&amp;lt;K,V&amp;gt; and also a particular IBusinessInterface. They do this by extending a AbstractBaseDataAccess&amp;lt;K,V&amp;gt; class, which implements all of the "workhorse" methods as proposed by Partington. But they also implement the various "business verbs" created within the IBusinessInterface. Essentially, the DAO pattern no longer exists, while its two functions are still put to work, separated by the advance of technology.&lt;br /&gt;&lt;br /&gt;My proposed solution does not eliminate the layers, it merely lets the appropriate components take care of the previously combined functionality: JPA handles persistence (and only persistence) while the Service Facades handle business logic on  a more pure level that old-school DAOs. The new solution still brings all of the benefits listed by Partington as part of the DAO pattern:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;No direct dependency on the JPA api from client code.&lt;/li&gt;&lt;li&gt;Type-safety through the use of generics. &lt;/li&gt;&lt;li&gt;One logical place to group all entity-specific JPA code.&lt;/li&gt;&lt;li&gt;One location to add transaction markers, debugging, profiling. &lt;i&gt;This feature is improved, due to the removal of the DAO layer.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;One class to test when testing the database access code. &lt;/li&gt;&lt;/ul&gt;&lt;div&gt;As well as the benefits listed under the Service Facade pattern:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Service Facades map DTOs to domain objects and back.&lt;/li&gt;&lt;li&gt;Service Facades function as the transaction boundary of your application.&lt;/li&gt;&lt;li&gt;The Service Facade pattern forces you to think about the interface of your application.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The DAO layer does not disappear, its functionality is divided between the Service Facade layer and the JPA provider.&lt;/div&gt;&lt;br /&gt;&lt;/k,v&gt;&lt;/k,&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-4386116473831473303?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/4386116473831473303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/daos-not-dead-blast.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4386116473831473303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4386116473831473303'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/daos-not-dead-blast.html' title='DAOs ... not...  dead? &amp;lt;shotgun blast&amp;gt;'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-8392234835365828595</id><published>2009-07-17T11:26:00.000-07:00</published><updated>2009-07-17T12:01:14.965-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game review iphone ipod touch'/><title type='text'>Game Review: Crystal Clear for the iPhone/iPod Touch</title><content type='html'>I used to be a video games journalist for a short time. I brought a unique sense of laziness and ennui to a branch of journalism uniquely identified with the word "granola."&lt;br /&gt;&lt;br /&gt;I now return, in force.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fractalsoftworks.com/cc/"&gt;Crystal Clear&lt;/a&gt; is a game available through the &lt;a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=322031797&amp;amp;mt=8"&gt;App store&lt;/a&gt; to Apple &lt;span style="text-decoration: line-through;"&gt;whores&lt;/span&gt; customers. Billed as an "action game with light puzzle elements" it is very easy to pick up and start playing. Gameplay is very fresh, and quite unique. I really have no way of describing the gameplay in terms of a previous game, which is saying a lot. The best I can do is "Bejewelled family." Basically, you swipe or use multi touch to remove as many same colored "crystals" (not jewels!) from the board. The empty spaces are then filled from the top. You need to hit a certain score before time  runs out, and then you  progress to a higher level, which makes the same task more difficult. How does it make it more difficult? By reducing the time you have to reach the score and (presumably) increasing the score you need to advance.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.fractalsoftworks.com/cc/merged2.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 280px; height: 587px;" src="http://www.fractalsoftworks.com/cc/merged2.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's all there is to it, but it leads into one of my only gripes with the game, which is there tend to be some hidden elements in the game, a big no-no for me. For example, I can see how much I've scored when I make a move. But the score bar that indicates my progress through a level has no numbers in it. Also, every time you make a move you get a "golden egg" in the upper right hand corner. These eggs actually multiply your score when you make the next move. The multiplier does go down with time, and there are also special jewels which will max out the multiplier at 5x and keep it there for a short duration. Problem is, its almost impossible to see which crystals are sparkly and which arent. Why? Well, your goddamned fat fingers are always in the way. The wonderful mechanics of the game are marred by the limitations of the platform. I obscure my own view of the playfield every time I make a move. WHY APPLE??? WHYyyyYYyyYYYYyy!?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The developer of the game cannot invent a better device, but he sure does push the technology in a direction I had not yet seen. Also, a futher note: the sound effects are excellent. I just regret that there is no music, but as most users will probably opt to play their own in the background anyway, its no big loss.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Graphics: 4/5&lt;/div&gt;&lt;div&gt;Sound: 5/5&lt;/div&gt;&lt;div&gt;Music: N/A&lt;/div&gt;&lt;div&gt;Gameplay: 4/5&lt;/div&gt;&lt;div&gt;Multiplayer: N/A&lt;/div&gt;&lt;div&gt;&lt;b&gt;Overall: 4.3/5&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-8392234835365828595?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/8392234835365828595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/game-review-crystal-clear-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8392234835365828595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8392234835365828595'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/game-review-crystal-clear-for.html' title='Game Review: Crystal Clear for the iPhone/iPod Touch'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-9160662070456624037</id><published>2009-07-14T11:04:00.000-07:00</published><updated>2009-07-14T11:05:49.685-07:00</updated><title type='text'>Cyrstal Clear coming out soon!</title><content type='html'>This is a really neat game that will be available to iPhone and iPod touch users in about two weeks. Check out the video:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=YV31lxySnRo"&gt;http://www.youtube.com/watch?v=YV31lxySnRo&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-9160662070456624037?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/9160662070456624037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/cyrstal-clear-coming-out-soon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/9160662070456624037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/9160662070456624037'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/cyrstal-clear-coming-out-soon.html' title='Cyrstal Clear coming out soon!'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-8078430421399114722</id><published>2009-07-04T09:55:00.000-07:00</published><updated>2009-07-04T10:11:37.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Singleton Pattern Icon</title><content type='html'>Singleton... or is it a coin? -_-&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mmoSoaerDYo/Sk-NOhjfl8I/AAAAAAAAAmM/uEAECJfl2ro/s1600-h/singleton.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" src="http://3.bp.blogspot.com/_mmoSoaerDYo/Sk-NOhjfl8I/AAAAAAAAAmM/uEAECJfl2ro/s320/singleton.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5354653762631735234" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-8078430421399114722?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/8078430421399114722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/singleton-pattern-icon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8078430421399114722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/8078430421399114722'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/singleton-pattern-icon.html' title='Singleton Pattern Icon'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_mmoSoaerDYo/Sk-NOhjfl8I/AAAAAAAAAmM/uEAECJfl2ro/s72-c/singleton.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6270685401619396143</id><published>2009-07-04T08:07:00.001-07:00</published><updated>2009-07-04T10:07:16.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Command Pattern Icon</title><content type='html'>This one is definitely tougher than abstract factory, which has a real world representation. For you consideration, I present Command:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_mmoSoaerDYo/Sk9wqqNgPgI/AAAAAAAAAl8/GqgyeJ2WYX8/s1600-h/command.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://4.bp.blogspot.com/_mmoSoaerDYo/Sk9wqqNgPgI/AAAAAAAAAl8/GqgyeJ2WYX8/s320/command.png" alt="" id="BLOGGER_PHOTO_ID_5354622360154553858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The callback capability and main purpose of the Command pattern should be apparent. Missing are the undo queuing qualities. Oh well :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6270685401619396143?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6270685401619396143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/command-pattern-icon.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6270685401619396143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6270685401619396143'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/command-pattern-icon.html' title='Command Pattern Icon'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_mmoSoaerDYo/Sk9wqqNgPgI/AAAAAAAAAl8/GqgyeJ2WYX8/s72-c/command.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-5610308771519427573</id><published>2009-07-03T13:16:00.001-07:00</published><updated>2009-07-03T13:23:26.420-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Visualization of Design Patterns</title><content type='html'>Check this out:&lt;br /&gt;&lt;br /&gt;So I have this idea. The idea is that some people learn visually, and if they could see &lt;a href="http://en.wikipedia.org/wiki/Design_Patterns"&gt;design patterns&lt;/a&gt;, and associate the visual image with the concept, they would understand them easier.&lt;br /&gt;&lt;br /&gt;To that end, I am going to try to iconify the &lt;a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1246652585&amp;amp;sr=8-1"&gt;GoF&lt;/a&gt; patterns. Here is the first one, Abstract Factory:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_mmoSoaerDYo/Sk5nrPili8I/AAAAAAAAAl0/6sLOZUp2CyI/s1600-h/factory.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 320px;" src="http://2.bp.blogspot.com/_mmoSoaerDYo/Sk5nrPili8I/AAAAAAAAAl0/6sLOZUp2CyI/s320/factory.png" alt="" id="BLOGGER_PHOTO_ID_5354330999593733058" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-5610308771519427573?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/5610308771519427573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/visualization-of-design-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5610308771519427573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5610308771519427573'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/07/visualization-of-design-patterns.html' title='Visualization of Design Patterns'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_mmoSoaerDYo/Sk5nrPili8I/AAAAAAAAAl0/6sLOZUp2CyI/s72-c/factory.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-7767854181354366214</id><published>2009-06-12T12:46:00.000-07:00</published><updated>2010-02-14T03:29:59.625-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='project natal gaming'/><title type='text'>Project Natal Scoop!</title><content type='html'>Due to my past experience as a games journalist, I have been made privy to the following information, exclusive to the Cyclopean Encyclopedia. For your eyes only:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Project Natal Natal&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;That is not a typo. We have all seen the vociferous press releases, RSS feeds, web videos, etc. of Microsoft's exciting, new, technology: &lt;a href="http://www.youtube.com/watch?v=g_txF7iETX0"&gt;Project Natal&lt;/a&gt;. From up on high, people such as &lt;a href="http://www.youtube.com/watch?v=dWnZOseA3Lw"&gt;P-Middlyx&lt;/a&gt;, and &lt;a href="http://www.youtube.com/watch?v=i1EGHUtJlwA"&gt;James Cameron&lt;/a&gt; have declared their support for the project! ... Or is it expressing how much thicker their matresses have been in the past three weeks? Inquiring minds do not really want to know.&lt;br /&gt;&lt;br /&gt;But forget all that!! &lt;b&gt;Project Natal Natal&lt;/b&gt; comes through and breaks all expectations of future technology. Through the Natal interface, the gamer is presented with an in-game avatar of The Gamer, which can seamlessly be controlled through over 48 joints, flabby though as they may be. The setting is a unkempt room with modest furnishings, which has the Virtual Natal Console in it.&lt;br /&gt;&lt;br /&gt;Through the Natal interface, the gamer can guide The Gamer to the Virtual Natal interface and begin play of a Virtual Natal Game, which is the greatest game of all time. The Gamer's fun level can easily be discerned through both an visual interface and audio cues such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Dude!"&lt;/li&gt;&lt;li&gt;&lt;strained&gt; "Dude..."&lt;/strained&gt;&lt;/li&gt;&lt;li&gt;"Aw, Come ooooooon!" &lt;strained&gt;&lt;/strained&gt;&lt;/li&gt;&lt;li&gt;"I said I am coming in two minutes, Mom, leave me alone!!!"&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;People enjoying the deep and fulfilling gameplay of Project Natal Natal must pay careful heed to the Bladder, Bowel and Hunger meters, making the experience akin to playing that Will Wright masterpiece, The Sims. Microsoft has said not to worry as they have already started looking into addresssing the tedium of bodily functions within Project Natal Natal with unlockable DLC achievements items such as "The Diaper" and "Delivered Hot Pockets."&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is important to note that this project is still in early pre-alpha stages of development. Rest assured, your correspondent will deliver new information and screenshots as soon as they are available.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-7767854181354366214?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/7767854181354366214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/project-natal-scoop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7767854181354366214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7767854181354366214'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/project-natal-scoop.html' title='Project Natal Scoop!'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6029163531998262425</id><published>2009-06-03T09:44:00.000-07:00</published><updated>2009-06-03T10:27:45.750-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java App Store thoughts</title><content type='html'>Sun has released a &lt;a href="http://www.java.com/en/store/index.jsp"&gt;Java app store&lt;/a&gt; and an accompanying &lt;a href="http://java.sun.com/warehouse/"&gt;developer portal&lt;/a&gt;. It is interesting to see that they are going after the consumer software market. In his blog, &lt;a href="http://blogs.sun.com/jonathan/date/20090518"&gt;The Schwartz&lt;/a&gt; points out that the JVM is installed on a  huge number of client PCs (&lt;span class="Apple-style-span" style="font-style: italic;"&gt;billions&lt;/span&gt;), and various other devices. The whole thing reeks of "we are cool like you, &lt;a href="http://www.apple.com/"&gt;Apple&lt;/a&gt;, cause we are everywhere!"&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So they want to cash in on that ubiquity. One interesting question here is, why is Java so ubiquitous on the client side? I can throw some reasons out there: web pages that require a browser plugin. Fringe apps and games. Bored downloaders that ran out of things to install. And bundling.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In short, consumers didn't really make a huge jump and say "Wow let's download Java!" How are we making the logical conclusion that they will do so now? The only possiblity is that some insane marketing juggernaut makes Java a household name, or some app makes it "cool with the kids." Sun is not a marketing juggernaut, neither is Oracle, hell, neither is Microsoft (&lt;a href="http://www.youtube.com/watch?v=t_Rj-aoGi_8"&gt;Bill Gates!?!?&lt;/a&gt;). The iPhone doesnt have a VM either :) Uh oh, spaghettios! The people that are most excited about the Java Store are nerds like yours truly. Yay, now I can make tons of cash too without having to learn Objective C on the iPhone!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Allow me to quote a popular social critic: "Sounds pretty irrelevant."&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The one thing that it will do if it takes off is the streamlining content delivery. You can choose to bundle various OpenGL bindings (JOGL and &lt;a href="http://www.lwjgl.org/"&gt;LWJGL&lt;/a&gt;) for advanced graphics as well as an OpenAL binding for sound (JOAL). Very nice. Trusted source, lots of bandwidth, classification of apps. Looks like a promising start. But without a deep hierachy of categories (the current one is shallow and weird), and a robust ratings interface, this thing is going nowhere. Also, a 50mb size limit on apps? Oh, my. Oh and please, please stop plugging JavaFX every time you say Java. Seriously, it's getting to be so annyoing. And when people get annoyed, they play with their iPhone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here's hoping for that marketing juggernaut. Come on baby, daddy needs a new pair of everything!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6029163531998262425?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6029163531998262425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/java-app-store-thoughts.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6029163531998262425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6029163531998262425'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/java-app-store-thoughts.html' title='Java App Store thoughts'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6290176686720521214</id><published>2009-06-02T06:31:00.000-07:00</published><updated>2009-06-02T06:52:37.238-07:00</updated><title type='text'>I am a Huge Nerd, again: The Glorious First of June</title><content type='html'>Please do not read this post.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The &lt;span style="font-style:italic;"&gt;Nit-Picky Barbel, &lt;/span&gt;four guns, seven souls. An eight &lt;span style=""&gt;league voyage. The open sea. Brigands and barbarians out for blood. Except it's not human blood (which doesn't exist). It is Kraken blood.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Kraken blood??!?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Oh yes, mates. See, in that world, Kraken blood is a coveted prize. It is not produced by Krakens, of course, but by ships that you have successfully attacked boarded, and subdued. So coveted, in fact, that just two mugfulls of the stuff is enough to buy a new ship.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An interesting twist on the whole setup is that you can use real money to buy in game money. And you can always tell who bought their rank - just like in real life. I am a captain by name only. In reality, my skills probably rate me somewhere above pirate and below officer. To wit: last night an impetuous officer boarded my ship at port and declared his intent to lead the boat in battle navigation. He was rated as master, and so I demurred. What followed was a perfect dance of sailing, gun use and thrown grappling hooks. As I busied myself on the gun deck, the young officer brought down larger ships with the &lt;span class="Apple-style-span" style="font-style: italic;"&gt;Barbel &lt;/span&gt;three times in a row. He had help from other able bodied pirates on board, but.... well. I certainly felt old and weak, much like Howe did before retiring and going below deck much earlier than the battle's end at the Glorious First of June. The irony? It WAS the glorious first of June.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6290176686720521214?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6290176686720521214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/i-am-huge-nerd-again-glorious-first-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6290176686720521214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6290176686720521214'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/06/i-am-huge-nerd-again-glorious-first-of.html' title='I am a Huge Nerd, again: The Glorious First of June'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-4593067920213454975</id><published>2009-05-20T08:06:00.000-07:00</published><updated>2009-05-20T10:51:56.807-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='spring transactions programming j2ee'/><title type='text'>Spring Anti-Patterns, Pt. 1</title><content type='html'>This here's real talk: &lt;a href="http://www.springsource.com/"&gt;Spring&lt;/a&gt; is a direct attack on the &lt;a href="http://java.sun.com/javaee/index.jsp"&gt;J2EE&lt;/a&gt; platform. That's a good thing as far as I am concerned. So this post is written not with hatred, but with love. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A typical stack of technologies used in small scale Java web development shops is the following: &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/J2EE/jpa/"&gt;JPA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Spring&lt;/li&gt;&lt;li&gt;Some MVC web framework like &lt;a href="http://struts.apache.org/"&gt;Struts&lt;/a&gt;, &lt;a href="http://www.springsource.org/webflow"&gt;Spring MVC&lt;/a&gt; or &lt;a href="http://wicket.apache.org/"&gt;Wicket&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;JPA allows easy ORM without XML configuration through its wide selection of annotations. Spring makes it all work by configuring the MVC framework, Data Sources and the JPA Entity Manager, among other things.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The problem though, is the way &lt;a href="http://static.springframework.org/spring/docs/2.0.x/reference/orm.html#orm-jpa-setup"&gt;Spring documentation&lt;/a&gt; is worded, it pushes the wrong approach for many web application engineers. I am looking at you LocalContainerEntityManagerFactoryBean! According to the Spring docs, this is the "most powerful" way to configure an Entity Manager. My reaction: O Rly?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The issue is that such an Entity Manager necessitates the use of&lt;span class="Apple-style-span" style="font-style: italic;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;application level&lt;/span&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; transactions&lt;/span&gt;. Most people read the Spring documentation and say: "Hmmm, do I need transactions in my code? Eh, sure why not." That's is the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;wrong&lt;/span&gt; assumption. Very few of the service layer calls in typical, small-scale web applications actually need application level transaction support, because they mostly are atomic operations (insert, update, delete, select). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is actually one of the chief reasons the J2EE platform has not been as successfull in small scale agile environments: their obsessive focus on transaction support, and specifically, distributed transaction support. This focus resulted in the notoriously slow EJB standard. Spring solves much of the complexity of J2EE. As part of their attack strategy, they market their product as a non-invasive alternative, but engineer it to be a full replacement. An engineer reading "most powerful" in the docs will use that Bean instead of the much better suited for small apps LocalEntityManagerFactoryBean. Unfortunately, that bean type cannot be configured with different data sources, prompting even more people to use the Local Container Entity Manager Bean.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The point is, you do not lose database transaction support if you go with the LocalEntityManagerFactoryBean. Why? Because they are not provided by Spring, they are provided by your database server. You can still .begin() and .commit() as well as .rollback() transactions through your JPA Entity Manager's &lt;a href="http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityTransaction.html"&gt;getTransaction()&lt;/a&gt; method. This means you can add transaction support for a small subset of your service layer database calls, and everyone's a winner!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-4593067920213454975?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/4593067920213454975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/spring-anti-patterns-pt-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4593067920213454975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4593067920213454975'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/spring-anti-patterns-pt-1.html' title='Spring Anti-Patterns, Pt. 1'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-2626429854320100689</id><published>2009-05-19T07:36:00.000-07:00</published><updated>2009-05-19T07:44:30.026-07:00</updated><title type='text'>A Small Note</title><content type='html'>Hi.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;May I have your attention, please. Thank you. PLEASE FEEL FREE TO COMMENT on these blog entries. I would like there to be more discussion rather than just me blabbing.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's not to say theres anything worthwhile to comment on :) but just wanted to throw that out there.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&amp;lt;paranoia&amp;gt;Also, keep in mind this is public so don't put too much personal info about yourself (or others (or me)) in your comments.&amp;lt;/paranoia&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You may now resume your brainless web surfing, Thank you!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Null, Author&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-2626429854320100689?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/2626429854320100689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/small-note.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/2626429854320100689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/2626429854320100689'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/small-note.html' title='A Small Note'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-7651534060919186179</id><published>2009-05-18T12:04:00.001-07:00</published><updated>2009-05-18T12:19:26.046-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trista games'/><title type='text'>Secret Project Revealed!</title><content type='html'>First, before we start, a koan:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"When a tree falls in the forest, and there is no one around to hear it, does it make a sound?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let us reword that for relevance:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"If a game software development project is secret, but no one cares, is it still a secret?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Answer: Buddhists, &lt;a href="http://en.wikipedia.org/wiki/Flying_Spaghetti_Monster"&gt;get out&lt;/a&gt;. Of course trees make a sound when they fall alone and of course an obscure project can be secret. But no longer! (the secret part, not the sound part)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For the past several weeks, I have been (secretly!) engaged in creating what I present to you now, in unfinished form. The project is tentatively called "Trista," which means "Three Hundred" in some obscure Slavic language. This game is still in early stages of development, but there is a build, and it is up and running. Some posts below feature content preview screenshots. This is stuff I am working on and will appear differently within the game, but it gives a good idea of what to expect visually.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;As far as what to expect otherwise, I will describe the ideas in the near future right here.  Next up: Game Space Concept. For now, here is a screen shot:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mmoSoaerDYo/ShG0gGw5zaI/AAAAAAAAAlU/5aoj2MsLvzI/s1600-h/Screenshot-Untitled+Window.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 249px;" src="http://1.bp.blogspot.com/_mmoSoaerDYo/ShG0gGw5zaI/AAAAAAAAAlU/5aoj2MsLvzI/s320/Screenshot-Untitled+Window.png" alt="" id="BLOGGER_PHOTO_ID_5337245497075289506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-7651534060919186179?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/7651534060919186179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/secret-project-revealed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7651534060919186179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7651534060919186179'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/secret-project-revealed.html' title='Secret Project Revealed!'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mmoSoaerDYo/ShG0gGw5zaI/AAAAAAAAAlU/5aoj2MsLvzI/s72-c/Screenshot-Untitled+Window.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-1685796563511437951</id><published>2009-05-16T10:20:00.000-07:00</published><updated>2009-05-16T10:30:51.500-07:00</updated><title type='text'>Preview Part 2</title><content type='html'>Sun Tzu Said:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Regard your soldiers as your children, and they will follow you into the deepest valleys; look on them as your own beloved sons, and they will stand by you even unto death.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_mmoSoaerDYo/Sg74JY5Dw-I/AAAAAAAAAlM/OEHxm2KV5q8/s1600-h/land.jpeg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_mmoSoaerDYo/Sg74JY5Dw-I/AAAAAAAAAlM/OEHxm2KV5q8/s320/land.jpeg" alt="" id="BLOGGER_PHOTO_ID_5336475448664900578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-1685796563511437951?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/1685796563511437951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/preview-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1685796563511437951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/1685796563511437951'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/preview-part-2.html' title='Preview Part 2'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_mmoSoaerDYo/Sg74JY5Dw-I/AAAAAAAAAlM/OEHxm2KV5q8/s72-c/land.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-2150832835132922305</id><published>2009-05-15T09:00:00.000-07:00</published><updated>2009-05-15T09:16:48.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java j2ee programming spring'/><title type='text'>Lazier DDL with Spring's HibernateJpaVendorAdapter</title><content type='html'>Ok, so let's get one thing straight. I am an extremely lazy guy. And no, I am not talking about only loading collections of my friends after someone tries to access them directly. No.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am talking about procrastination.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At my levels (software engineering) it is an art form. For example, today I had to write some SQL code - code that creates a new table in a database. Here's how I did it:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Create a new class, and annotate it with @Entity (javax.persistence.Entity)&lt;/li&gt;&lt;li&gt;Add fields. As many as you want.&lt;/li&gt;&lt;li&gt;Use IDE to generate getters and setters for those fields.&lt;/li&gt;&lt;li&gt;You're already using &lt;span class="Apple-style-span"  style="  white-space: pre; font-family:Arial;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;HibernateJpaVendorAdapter&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="  white-space: normal; font-family:Georgia;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;. You're not???! &lt;/span&gt;&lt;a href="http://www.springsource.com/"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;Beat it&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;, man. Ok now just call the method&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; &lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt;.setGenerateDdl(true)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-size:medium;"&gt; on it.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;The eeeennnnnd.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Well, that took 30 seconds!&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-2150832835132922305?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/2150832835132922305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/lazier-ddl-with-springs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/2150832835132922305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/2150832835132922305'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/lazier-ddl-with-springs.html' title='Lazier DDL with Spring&apos;s HibernateJpaVendorAdapter'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-4207806191089104963</id><published>2009-05-15T08:43:00.000-07:00</published><updated>2009-05-15T09:00:24.558-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='trista games'/><title type='text'>A Bit of a Preview</title><content type='html'>&lt;div&gt;So, check this out:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_mmoSoaerDYo/Sg2P6XLe0RI/AAAAAAAAAlE/t7vNR65im1Q/s1600-h/land.jpeg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_mmoSoaerDYo/Sg2P6XLe0RI/AAAAAAAAAlE/t7vNR65im1Q/s320/land.jpeg" border="0" alt="" id="BLOGGER_PHOTO_ID_5336079366321262866" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My own creation. Stay tuned, eheheh.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-4207806191089104963?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/4207806191089104963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/bit-of-preview.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4207806191089104963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/4207806191089104963'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/bit-of-preview.html' title='A Bit of a Preview'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_mmoSoaerDYo/Sg2P6XLe0RI/AAAAAAAAAlE/t7vNR65im1Q/s72-c/land.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-5535775130141954818</id><published>2009-05-14T09:30:00.000-07:00</published><updated>2009-05-14T09:44:40.651-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript programming'/><title type='text'>Oh woe is us Java fossils</title><content type='html'>&lt;a href="http://www.chromeexperiments.com/"&gt;This&lt;/a&gt; is a nice tour &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;de&lt;/span&gt; force of technology. It definitely extended my mental picture of what Javascript is capable of. Well, rather, Javascript and smart guys with too much [free|corporate guerrilla marketing] time. Coupled with &lt;a href="http://www.quakelive.com/"&gt;others&lt;/a&gt;, looks like the browser is really going to be an application delivery system after all. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Yay&lt;/span&gt; so happy?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;No, not really. Kids these days, with their dynamically typed, object oriented, closure supporting languages. Why back in my day, I had to.... hm. Actually, my day sucked, so I take it back.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;Yay&lt;/span&gt; so happy!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-5535775130141954818?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/5535775130141954818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/oh-woe-is-us-java-fossils.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5535775130141954818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/5535775130141954818'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/oh-woe-is-us-java-fossils.html' title='Oh woe is us Java fossils'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-6561488584845011967</id><published>2009-05-13T09:45:00.000-07:00</published><updated>2009-05-13T10:00:21.233-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='puzzle pirates ubuntu sound'/><title type='text'>Ubuntu 9.04 Jaunty OpenAL and how it almost ruined Puzzle Pirates</title><content type='html'>I'm going to be upfront about this. I play &lt;a href="http://www.puzzlepirates.com/"&gt;Puzzle Pirates&lt;/a&gt;. Now you know why this blog is anonymous.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One interesting thing about the game is that it uses &lt;a href="http://lwjgl.org/"&gt;LWJGL&lt;/a&gt; for its Linux implementation, something I consider an important fact.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A while ago I grabbed Puzzle Pirates, and it worked immediately (on Linux!). Except for sound. Sound is not a big deal in that game, but it kept eating away at me. A couple of days spent posting on the Puzzle Pirates boards netted me the location of the game's log file. Then my mind pieced it all together.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;LWJGL uses &lt;a href="http://connect.creativelabs.com/openal/default.aspx"&gt;OpenAL&lt;/a&gt; for sound! So the whole setup goes something like Puzzle Pirates -&gt; LWJGL -&gt; OpenAL -&gt; Operating system sound system (ALSA or in my case pulse audio).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My bundled OpenAL drivers were 32 bit, NOT 64 bit. I am running the 64 bit version of Jaunty. So I pulled up the Synaptic Package Manager application, and did a search for OpenAl (libopenal), installed the package, and lo and behold sound was working.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Every single application that uses LWJGL potentially won't work, I hope Canonical does a better job packaging in the future.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-6561488584845011967?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/6561488584845011967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/ubuntu-904-jaunty-openal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6561488584845011967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/6561488584845011967'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/ubuntu-904-jaunty-openal.html' title='Ubuntu 9.04 Jaunty OpenAL and how it almost ruined Puzzle Pirates'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5870553595040605483.post-7641922600591102829</id><published>2009-05-13T09:07:00.000-07:00</published><updated>2009-05-13T11:27:10.230-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games moo2 linux ubuntu wine'/><title type='text'>Moo 2 Under Ubuntu 9.04 Jaunty with Wine</title><content type='html'>There is an option in wine that enables you to run moo2 (the orion95.exe ) from linux. It is the "Emulate Desktop Environment" option. Couple of problems I ran into though - if you choose a resolution other than 800x600, wine seems to grab the entire desktop. Also a post I read claims there are issues with other programs running under wine with that option.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Silicoids!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5870553595040605483-7641922600591102829?l=cyclopeanencyclopedia.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cyclopeanencyclopedia.blogspot.com/feeds/7641922600591102829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/moo-2-under-ubntu-904-jaunty-with-wine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7641922600591102829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5870553595040605483/posts/default/7641922600591102829'/><link rel='alternate' type='text/html' href='http://cyclopeanencyclopedia.blogspot.com/2009/05/moo-2-under-ubntu-904-jaunty-with-wine.html' title='Moo 2 Under Ubuntu 9.04 Jaunty with Wine'/><author><name>null</name><uri>http://www.blogger.com/profile/03444189665088029545</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
