<?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-5563106149149911149</id><updated>2011-10-04T16:40:16.728-04:00</updated><title type='text'>Happy Coding of a Happy Code Monkey</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>58</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6120197193748988027</id><published>2011-02-22T21:42:00.003-05:00</published><updated>2011-02-22T22:13:21.913-05:00</updated><title type='text'>Brussel Sprouts!</title><content type='html'>This will be my first, and hopefully not only, blog post on food, because I love food and recently (thanks to my CSA box) my love of cooking has blossomed almost out of control. &lt;br /&gt;&lt;br /&gt;Tonight I undertook the heretofore impossible task of cooking edible brussel sprouts. Mostly because they came in the CSA box and I hate wasting perfectly good CSA veggies. Oh, and I had eaten on raw recently, and yeah. They're awesome. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-9unvD6g2ROg/TWR6Kk6LLRI/AAAAAAAAAtk/u1y66qf8Gsg/s1600/1298427547790.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/-9unvD6g2ROg/TWR6Kk6LLRI/AAAAAAAAAtk/u1y66qf8Gsg/s320/1298427547790.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5576716560716475666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;yeah, that just happened.&lt;br /&gt;&lt;br /&gt;However, if this is indeed the case, why is it that so many people consider them decidedly NOT AWESOME? My totally awesome theory is that, besides the obvious "YUCK VEGGIES YAY MCDDONALD'S" conditioning we all go through as American children, the very simple fact of the matter is that most people just really don't know how to cook veggies. This is not meant to be disparaging, as I'm sure all your mothers were a Saint, but how many of you as children ate canned veggies prepared in exactly the same way as a side dish to the meat? Sure, steams green beans are good, but you had the same green beans every time you had pork chops. &lt;br /&gt;&lt;br /&gt;Part of this has to do with the desire for consistent food, the primary reason why people will eat at McDonald's when they're traveling. This also, in my mind, contributes to the reason why meat is so popular in the first place (beyond the fact that it's technically a cheap luxury item)...you can cook meat 100 different ways and still be able to tell what kind of meat it is, for the most part. &lt;a href="http://www.salon.com/food/francis_lam/2011/02/17/creative_vegetable_cooking/index.html"&gt;(Good article that touches on this subject).&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Besides that, learning how to cook vegetables well is very much a matter of knowing not only a wide variety of cooking styles, but to be able to juggle a variety of spices. Both of these require experience, which requires both time and money, both of which many people are in short supply of. &lt;br /&gt;&lt;br /&gt;The solution? No idea. Though the WSJ prediction in &lt;a href="http://online.wsj.com/article/SB10001424052748703293204576106072340020728.html"&gt;this article&lt;/a&gt; of meat becoming an expensive luxury item in the future will likely help.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6120197193748988027?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6120197193748988027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6120197193748988027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6120197193748988027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6120197193748988027'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/02/brussel-sprouts.html' title='Brussel Sprouts!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-9unvD6g2ROg/TWR6Kk6LLRI/AAAAAAAAAtk/u1y66qf8Gsg/s72-c/1298427547790.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6347549654773328423</id><published>2011-02-08T12:40:00.003-05:00</published><updated>2011-02-08T13:19:14.742-05:00</updated><title type='text'>More OS Tutorials and Motivation</title><content type='html'>&lt;a href="http://www.osdever.net/tutorials/index"&gt;http://www.osdever.net/tutorials/index&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One word: awesome. I'm going to try and spend some time working through these articles in my free time. I've always been interested in OS development but never felt like the topic was that approachable, but things like this and the MikeOS tutorial I talked about before have completely changed my mind about this. &lt;br /&gt;&lt;br /&gt;Related to this train of thought...I've been powering through &lt;i&gt;Outliers&lt;/i&gt; by Malcolm Gladwell. This book is incredible. If you haven't read it, read it. It does a great job of destroying the misconception that successful people just have their knowledge and skills beamed into their head, which is something I still have to tell myself regularly to this day. &lt;br /&gt;&lt;br /&gt;Another great link: &lt;a href="http://www.ted.com/talks/christopher_mcdougall_are_we_born_to_run.html"&gt;http://www.ted.com/talks/christopher_mcdougall_are_we_born_to_run.html&lt;/a&gt;. This is one of the best TED Talks I've seen in a while, mainly because it very neatly distills the appeal of participating in AustinH3. It also makes me a bit sad at how far we've come from what our bodies are built for, despite all the amazing science and technology we've achieved. But that's a train of thought for a deeper mood.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6347549654773328423?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6347549654773328423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6347549654773328423' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6347549654773328423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6347549654773328423'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/02/more-os-tutorials-and-motivation.html' title='More OS Tutorials and Motivation'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-2926571871378909427</id><published>2011-01-26T18:15:00.002-05:00</published><updated>2011-01-26T18:43:59.748-05:00</updated><title type='text'>Sneaky, Ninja C++</title><content type='html'>Last night I did a few more problems out of &lt;i&gt;How Not To Program in C++&lt;/i&gt; and really liked the last one I did before I went to bed. Apparently in C++, when you have a base class and a derived class, defining a function in the derived class sets *ALL* the functions of the same name to hidden in the base class, no matter what datatypes said function takes as an argument. I loved this problem, it was such a sneaky specification! Every time I do a problem out of this book I'm delighted by all the obscure little compiler rules and datatype issues the deceptively simple programs illustrate. Just out of curiosity, I whipped up a similar program in Java, and it seems to have a similar problem; in fact, the compiler gave me an identical error, which was amusing. &lt;br /&gt;&lt;br /&gt;Anyway, besides amusing myself with trivial C++ exercises, I've started reading &lt;i&gt;In the Miso Soup&lt;/i&gt; by Ryu Murakami for the second (or maybe third?) time. I was interested in reading it in college, but a friend of mine had divuldged what I felt to be the entire plot, so I was frustrated enough to avoid it until recently, when I decided it was ridiculous to not read a 200-page, well regarded book just because I knew part of the plot. I mean, if that were the case, why bother reading any of the classics I enjoyed so deeply? Who doesn't know the plot of &lt;i&gt;The Odyssey&lt;/i&gt; already? So I picked it up from the library, and so far I really enjoy it, though I feel at times the translation may not be amazing...some of the writing just feels forced or stilted. Maybe it was intentional though, I'll have to read more on the author. &lt;br /&gt;&lt;br /&gt;Signing off for now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-2926571871378909427?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/2926571871378909427/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=2926571871378909427' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2926571871378909427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2926571871378909427'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/sneaky-ninja-c.html' title='Sneaky, Ninja C++'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4382332723790179191</id><published>2011-01-24T04:19:00.000-05:00</published><updated>2011-01-24T17:19:58.269-05:00</updated><title type='text'>Update on the Resolution Thing</title><content type='html'>Unfortunately, as I expected, I haven't been able to keep up with my resolutions. I'm still working on my third (formally second) book (about 84% of the way through, almost there...), and I haven't been keeping up with Project Euler at all. C'est la vie. I'm hoping to make some headway on both this week. &lt;br /&gt;&lt;br /&gt;In the meantime, I've started working with the Android platform, which is exciting and engaging. It will be a good base for a personal project I've been thinking about for a while, as well as allowing me to work with Java again, which is always a treat. Not that I'm a huge fan of Java, but being out of school certainly changes your perspective on how "hardcore" you need to be! I will forever tell anyone who will listen that spending your time learning all the low-level magic is absolutely worth it, but it's nice to let your hair down and have a little fun with a slightly higher-level programming language once in a while, especially one you haven't dabbled in for a while. &lt;br /&gt;&lt;br /&gt;Anyway, back to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4382332723790179191?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4382332723790179191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4382332723790179191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4382332723790179191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4382332723790179191'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/update-on-resolution-thing.html' title='Update on the Resolution Thing'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6079596015997199708</id><published>2011-01-21T16:12:00.002-05:00</published><updated>2011-01-21T16:16:35.393-05:00</updated><title type='text'>Book #2, In far more than a week</title><content type='html'>I finally finished my second book for my 52 book challenge, but only because it was a "GRAPHIC NOVEL" that was only about 80 pages. Ah well, at least I'm making up a little time. Still working on &lt;i&gt;Stories&lt;/i&gt;, about 75% of the way through, but the going has been slow because it's very hard to find time to just sit and read, even though I'm finally starting to enjoy it as much as I did when I was a child. &lt;br /&gt;&lt;br /&gt;The second book was &lt;i&gt;Signal to Noise&lt;/i&gt;, written by Neil Gaiman and some other guy who isn't Neil Gaiman for some reason. It was a descent story framed by beautiful illustrations; the story involved a film writer who was dying. Very nice, not necessarily easily digestible, but very quiet. Recommended.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6079596015997199708?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6079596015997199708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6079596015997199708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6079596015997199708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6079596015997199708'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/book-2-in-far-more-than-week.html' title='Book #2, In far more than a week'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-643029395099765105</id><published>2011-01-19T15:48:00.003-05:00</published><updated>2011-01-20T18:37:03.334-05:00</updated><title type='text'>Android Developing!</title><content type='html'>Short post today, but I've started an Android project at work and I'm really enjoying working with the platform. I never bothered to approach it before, since I didn't have a smart phone at the time and I was never interested in general, but I wish I had started looking at it soon. It's very fun and rather intuitive, especially when using the Eclipse plug-in (me enjoying Eclipse? Apparently it can happen). After figuring out the basics, I'm excited to try and start working on a few personal projects for Android. Away!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-643029395099765105?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/643029395099765105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=643029395099765105' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/643029395099765105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/643029395099765105'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/android-developing.html' title='Android Developing!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5544180207467750802</id><published>2011-01-13T17:21:00.004-05:00</published><updated>2011-01-14T11:40:54.193-05:00</updated><title type='text'>Low-Level, Shmoe-Level</title><content type='html'>&lt;a href="http://mikeos.berlios.de/write-your-own-os.html"&gt;http://mikeos.berlios.de/write-your-own-os.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yeah. That's what I'm doing tonight. Because seriously. &lt;br /&gt;&lt;br /&gt;Low-level is one of my many weaknesses, so things like this really appeal to me. Along with this, I've been working on getting through &lt;i&gt;How Not To Program in C++&lt;/i&gt; and &lt;i&gt;Write Great Code&lt;/i&gt;, in parallel, and it has been a wonderful surprise how well the two books compliment each other. I was reading chunks of &lt;i&gt;Write Great Code&lt;/i&gt; on an airplane, and when I finally got back around to following the code samples in &lt;i&gt;How Not To Program in C++&lt;/i&gt;, I realized I had JUST read a section that almost directly related to the bug in the sample program. Lovely! I can't express how beneficial it is to be reading a book outlining abstract low-level concepts, and go to another book that shows a real-world example of how these concepts play out in an actual programming sample. Sure, the samples are rather small and arguably trivial, but it's a base that I have been woefully ignorant in. Operating systems in particular is another area I need some edumacation in, so I'm hoping that once I work through this example, I'll be able to approach the O'Reilly Linux Kernel book I have sitting in my room right now. &lt;br /&gt;&lt;br /&gt;Here's to further education!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPDATE:&lt;/b&gt; I completed this tutorial last night in a highly distracted hour, and it was excellent. Clear, concise, with a great sample, and delivered exactly what it promised...a bare-bones, functioning OS. If this catches your interest AT ALL, work through it and download the MikeOS source code. Very satisfying learning experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5544180207467750802?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5544180207467750802/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5544180207467750802' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5544180207467750802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5544180207467750802'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/httpmikeos.html' title='Low-Level, Shmoe-Level'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5612933901777008936</id><published>2011-01-06T11:36:00.002-05:00</published><updated>2011-01-06T11:46:04.826-05:00</updated><title type='text'>When is it OK to "cheat"?</title><content type='html'>As I mentioned, one of my New Year's resolutions is to try and get 1 Project Euler problem done per week. I should openly admit at this point that I have been painfully slow in solving even the easiest of the problems, and recently I've been stuck on Problem #3, which requires you to find the largest prime factor of a big number. I've been struggling to figure out the best way to approach it, and right now I have a program that literally loops through a list of prime numbers and prints them. Pathetic. &lt;br /&gt;&lt;br /&gt;So, in the interest of getting a different perspective, I Googled the problem. I felt uncomfortable doing this. I feel like I should be able to complete these problems with no help, if I just sit and think about it long enough, but obviously this was getting me nowhere. I found a solution that I'm going to implement that makes far more sense, is cleaner, and isn't pathetically brute-force like my current code. &lt;br /&gt;&lt;br /&gt;So, the question that lingers in my mind is, how important was it that I worked it out myself vs. looked up a blogged solution vs. just looked up sample code? At what point am I really just cheating myself in the interest of not having to think too much? Is it even that important in this case? &lt;br /&gt;&lt;br /&gt;I'm working on Project Euler to improve my shoddy math skills, as well as attempting to keep up with fairly basic programming (usually to learn how to use new languages as well, such as Lisp), so I suppose as long as I still accomplish those goals, it's all good.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5612933901777008936?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5612933901777008936/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5612933901777008936' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5612933901777008936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5612933901777008936'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/when-is-it-ok-to-cheat.html' title='When is it OK to &quot;cheat&quot;?'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5460778323575575088</id><published>2011-01-05T16:00:00.000-05:00</published><updated>2011-01-05T17:24:39.134-05:00</updated><title type='text'>On Distractions</title><content type='html'>I have a lot of trouble staying focused, largely due to the fact that I work on a nice computer with full Internet access in a very laid-back work environment. However, my lack of productivity is a constant source of frustration and stress, so I've been working on turning myself into a more focused, productive worker.&lt;br /&gt;&lt;br /&gt;I made three major changes in my work life that have made a massive difference. First of all, I cut my coffee habit cold turkey. Like, completely. It was less rough than I expected, especially since I'm still allowing myself to have a cup in the morning (before work, none during), and every once in a while I'll sneak a coke during lunch (I also drink tea all day). I noticed immediately, however, that I was far less irritable and distract-able. Besides that, I've freed myself from the caffeine roller-coaster that often resulted in frustration and many hours wasted.&lt;br /&gt;&lt;br /&gt;Next, I started keeping a Google Docs TODO list, that I keep open on my browser at all times. It doesn't necessarily keep me focused exactly, but it does allow me to get back on track when I do get distracted. The other benefit of the TODO list is that if I think of something I need to do that's not directly related to work, I add it to the list, rather than breaking my concentration and starting a massive Internet-tangent on a whim.&lt;br /&gt;&lt;br /&gt;The last step was to start running during lunch, which gives me the perfect chance to clear my head and come back to work refreshed and focused. Not much else to say about this other than that it works.&lt;br /&gt;&lt;br /&gt;Also, I'm only about 1/4 of the way through book 2, but I'm making great progress on it. Hope to have another "COMPLETED" update sooner rather than later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5460778323575575088?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5460778323575575088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5460778323575575088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5460778323575575088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5460778323575575088'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/12/on-distractions.html' title='On Distractions'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5103547497970201787</id><published>2011-01-04T17:07:00.002-05:00</published><updated>2011-01-04T17:11:08.490-05:00</updated><title type='text'>Book a Week #1 Complete!</title><content type='html'>Ok, so I cheated slightly and started with a book I was over half-way finished with. Sue me. Next up is Neil Gaiman's anthology, "Stories". It weighs in at a little over 400 pages, but I'm confident I'll breeze through it. So far the stories are pretty light reading (nice book to start the year out with). After that I'm planning to dig into Huxley's "Brave New World", which I bought recently.&lt;br /&gt;&lt;br /&gt;I wanted to post something about motivations and such but I'm not motivated enough right now to do so (oh-ho!). More to come sooner rather than later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5103547497970201787?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5103547497970201787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5103547497970201787' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5103547497970201787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5103547497970201787'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/book-week-1-complete.html' title='Book a Week #1 Complete!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8646649411583725345</id><published>2011-01-03T13:52:00.003-05:00</published><updated>2011-01-03T14:04:38.914-05:00</updated><title type='text'>Book a Week, #1</title><content type='html'>I missed posting this weekend due to being extremely busy, but I'm back and have started my book-a-week resolution by (almost) finishing &lt;a href="http://boingboing.net/2010/09/20/how-becoming-a-stoic.html"&gt;A Guide to the Good Life: The Ancient Art of Stoic Joy by William B. Irvine&lt;/a&gt;. I intentionally linked to the BoingBoing article where I first heard about this book; the author made a few guest posts on the site later that convinced me to buy it. I assume a quick search will pull up his posts on the site, they're excellent. &lt;br /&gt;&lt;br /&gt;The intention of the book is to not only introduce Stoicism, but provide a guide to becoming a practicing Stoic in modern times. Although I disagreed with the author on a few different points, I enjoyed the overall message of the book, and appreciated his effort to illustrate how living without a coherent philosophy of life is detrimental to our pursuit of happiness. &lt;br /&gt;&lt;br /&gt;The philosophy focuses on changing yourself and how you handle your own emotions and desires, rather than attempting to find satisfaction in things external to yourself. I've been working to decrease the negativity and anxiety I've spent my life dealing with, and I found a lot of his advice very helpful (and was pleasantly surprised to realize I was already doing most of what he suggested). &lt;br /&gt;&lt;br /&gt;After I complete this book, next up will be "Stories", a short fantasy story collection put together by Neil Gaiman and someone else whose name escapes me (links and so on when I start it).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8646649411583725345?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8646649411583725345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8646649411583725345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8646649411583725345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8646649411583725345'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2011/01/book-week-1.html' title='Book a Week, #1'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-2466613577656876961</id><published>2010-12-31T19:14:00.003-05:00</published><updated>2010-12-31T19:20:49.448-05:00</updated><title type='text'>Resolutions 2011</title><content type='html'>I'm embarking on a project with &lt;a href="http://soupcan58.wordpress.com/"&gt;a friend from Indiana&lt;/a&gt; in which we decide on a maximum of 4 New Years resolutions and attempt to follow through with them by updating blogs every day and posting progress. One of the shared resolutions, besides attempting to blog more in an effort to become better writers, is to complete 54 books this year, essentially attempting to read a book a week. For myself, I'm going to attempt to complete at least one Project Euler problem a week, and I may even try to start playing some instruments again. It will be a challenge, but we're both hoping the blog and each other will hold ourselves accountable. &lt;br /&gt;&lt;br /&gt;Happy 2011!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-2466613577656876961?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/2466613577656876961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=2466613577656876961' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2466613577656876961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2466613577656876961'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/12/resolutions-2011.html' title='Resolutions 2011'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-7260747679134150724</id><published>2010-11-02T21:52:00.002-04:00</published><updated>2010-11-02T22:04:57.437-04:00</updated><title type='text'>All-Consuming Web</title><content type='html'>I've taken on some new challenges, including rebuilding my personal web page, and, in the process, learning to become a better designer. At this point, unfortunately, this consists of learning how CSS works rather than graduating to a more philosophical discussion of what a "good" web design is. I know what kinds of web pages I like, but I have none of the required skills to make my own look the way I want yet. &lt;br /&gt;&lt;br /&gt;In the meantime, I'm going to have to do SOME project in C++...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-7260747679134150724?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/7260747679134150724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=7260747679134150724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7260747679134150724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7260747679134150724'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/11/all-consuming-web.html' title='All-Consuming Web'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1547054667058632518</id><published>2010-10-27T22:09:00.002-04:00</published><updated>2010-10-27T22:21:07.869-04:00</updated><title type='text'>The Political Programmer</title><content type='html'>"You know, most programmers are libertarian", my workmate stated.&lt;br /&gt;&lt;br /&gt;"I know", I replied, attempting to imply in my tone of voice that I had met many of these abstract libertarian programmers my workmate spoke of. &lt;br /&gt;&lt;br /&gt;"It's because they think, 'Hey, I can solve this problem myself, I don't need any help!'". &lt;br /&gt;&lt;br /&gt;"Yeah, they're also massive assholes". &lt;br /&gt;&lt;br /&gt;I'm not a libertarian. I believe in giving as much help as possible, with the hopes that I'll receive some help in return. Maybe this makes me a bad programmer. &lt;br /&gt;&lt;br /&gt;I finally began to come to terms with the idea that, not only am I a *bad* programmer, it was very likely I would never become a decent, or even remotely competent programmer. I'll certainly never be the hackers I romanticize. But, really, this no longer bothers me. Now that I've thrown off the shackles of insecurity, I'm free to learn at my own pace, and I'm starting to REALLY enjoy it. I read whatever strikes my fancy, work on whatever personal projects excite me in my off time, and this has been an amazing turn-around. I'm not trying to get through that C++ book to become a C++ super-guru anymore, I'm just reading it because I'm enjoying it. I'm no longer allowing myself to be embarrassed by a lack of knowledge in any topic anymore, and as a result I'm free to learn more. &lt;br /&gt;&lt;br /&gt;If you find yourself becoming a slave to an ideal image of yourself, it may be time to re-asses that image and figure out if you really want to be that abstract that ideal, or if the ideal is what is really holding you back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-1547054667058632518?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1547054667058632518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1547054667058632518' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1547054667058632518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1547054667058632518'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/10/political-programmer.html' title='The Political Programmer'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4038845774767740251</id><published>2010-09-25T12:02:00.002-04:00</published><updated>2010-09-25T12:24:46.040-04:00</updated><title type='text'>Redesigns to Blow Your Mind</title><content type='html'>Since I last posted, I have become gainfully employed by a web development company and have been so for the past 8 months or so. Both the Master's degree and the move down here seems to have paid off even more so than I had any right to hope or expect. Always a good story.&lt;br /&gt;&lt;br /&gt;In the meantime, I've become motivated to start working on a few personal projects again, primarily so I can keep the rust off my not-spectacular Java skills. Syntax is trivial, but it surprises me how easy it is to lose code design skills. In particular, I started a project with (apparently) the intention of using some sort of mediator pattern and, after not working on it for a few months, looking over the code again has made me cringe. The objects are working as both data containers AND UI controllers, which, due to the recent emphasis of MVC, and my own personal preference, seems like a Really Bad Idea(tm). So already, with not much code, I'm doing an overhaul. &lt;br /&gt;&lt;br /&gt;None of this is particularly enthralling, but it again illustrates how important a design phase before code writing can be, even if you're the only person working on the project. I'm ditching 7 source files due to a complete lack of planning when I started...if there was any planning, I certainly can't find it now.&lt;br /&gt;&lt;br /&gt;So, back to coding, and I hope to have a few functioning projects to write about soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4038845774767740251?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4038845774767740251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4038845774767740251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4038845774767740251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4038845774767740251'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/09/redesigns-to-blow-your-mind.html' title='Redesigns to Blow Your Mind'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-99812048660284935</id><published>2010-01-11T09:40:00.002-05:00</published><updated>2010-01-11T09:48:59.247-05:00</updated><title type='text'>Time to Start Over...Sort of!</title><content type='html'>So it's Monday morning and I'm starting my 3rd full day in Austin, Texas, after a harrowing 3-day truck-based move. So far I'm loving it here, oh so so much, and I've started my job hunt anew. I wasn't having any luck applying from Indiana, so I'm hoping that my Austin address will help a little. So far I've applied for 3 different IBM positions, and a few others. I'm excited and scared, but the risk should turn out to be worth it :) &lt;br /&gt;&lt;br /&gt;An exciting fact about Austin is that it has a lot of LUGs, which will be great for meeting new people and being able to keep up on all things Linux. Hoorey! &lt;br /&gt;&lt;br /&gt;Off to the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-99812048660284935?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/99812048660284935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=99812048660284935' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/99812048660284935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/99812048660284935'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2010/01/time-to-start-oversort-of.html' title='Time to Start Over...Sort of!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5050111528791280694</id><published>2009-12-14T23:04:00.002-05:00</published><updated>2009-12-14T23:23:15.620-05:00</updated><title type='text'>A Good Programmer?</title><content type='html'>I came across &lt;a href="http://www.inter-sections.net/2007/11/13/how-to-recognise-a-good-programmer/"&gt;this blog post&lt;/a&gt; via Hacker News tonight, and it gave me a little food for thought. &lt;br /&gt;&lt;br /&gt;I should know better, of course, than to just take stuff like this as gospel truth, but I hear it a lot from people like Jeff Atwood, who make their living talking about programming. To be a "good" programmer you need to be the kind of person who just loves it, and does it all the time. &lt;br /&gt;&lt;br /&gt;The second one I don't know that I agreed with too much, mostly because I know plenty of people who talk up "bleeding-edge" technologies who are only talking them up because they're bleeding-edge, and couldn't even begin to actually program in it if they wanted to because they lack even the most basic skills. This is primarily what I run into with kids singing the praises of the latest Microsoft technology (not to piss on Microsoft technology necessarily, but there's a reason for that). However, taken with the rest of the list, it's a little more understandable. I'll still hold on to my dreams of kernel hacking, though. ;)&lt;br /&gt;&lt;br /&gt;The one that really hit me in a tender area was the last one..."If your potential programmer didn’t do any programming before university, and all his experience starts when she got her first job, she’s probably not a good programmer." Ouch. That describes me almost to a T. Granted, I started programming in my undergrad career while pursing another degree, and the Master's was technically an extension of a "hobby", but before that I had never done any programming. In CS 120 I had to go to my professor's office for help because I didn't know what FTP was. Yes, it was that bad. &lt;br /&gt;&lt;br /&gt;I had no access to any resources to even begin to understand how to do it, and didn't know what to look for anyway. It has been the primary source of my low self-confidence in my programming ability the entire time I have been attempting to make the computer bend to my feeble will. Even now, when I know I've improved so much, I still never feel like I've worked hard enough or dedicated myself enough to improving my skill. I've tinkered with a wide variety of languages but am still very much a C++/Java person. &lt;br /&gt;&lt;br /&gt;Anyway, expressing my insecurity is not particularly helpful...I'm off to start reading more books and working on more projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5050111528791280694?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5050111528791280694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5050111528791280694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5050111528791280694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5050111528791280694'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/12/good-programmer.html' title='A Good Programmer?'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8801636601305009126</id><published>2009-12-12T11:18:00.003-05:00</published><updated>2009-12-12T11:24:07.575-05:00</updated><title type='text'>Two Changes!</title><content type='html'>I've moved my portfolio page to &lt;a href="http://sites.google.com/site/codemonkeyinc/"&gt;CodeMonkeyInc on Google Sites&lt;/a&gt; because, frankly, I am fully capable of writing a website backend, but I couldn't design my way out of an empty pool. Not to say I haven't tried really hard, but I lack the requisite skills in terms of creating backgrounds and other important images that look clean and professional, rather than like I made them up in Gimp after dicking around for a half hour. Also, I have yet to actually BUY hosting, so my iweb account will be going down after I graduate anyway.&lt;br /&gt;&lt;br /&gt;The other thing I did this weekend was post a few of my person projects to &lt;a href="https://launchpad.net/~happycodemonkey"&gt;Launchpad&lt;/a&gt; so I could show them off on the portfolio page. Right now my projects on there aren't extremely impressive, but &lt;a href="https://launchpad.net/scribblemidi"&gt;ScribbleMidi&lt;/a&gt; is coming along really well, and I'm anticipating having a semi-working system soon. Launchpad is a wonderful, free way to publicly post your open source projects.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8801636601305009126?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8801636601305009126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8801636601305009126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8801636601305009126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8801636601305009126'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/12/two-changes.html' title='Two Changes!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1171463176592701147</id><published>2009-12-06T16:34:00.006-05:00</published><updated>2009-12-06T20:09:22.630-05:00</updated><title type='text'>Battle With the PHP Script From Hell</title><content type='html'>In seminar class we have to write a script that takes in a gigantic (3.2MB) text file data dump, parse the data out, and insert it into a MySQL database for an application we're working on. The first pass was done by a classmate, and although it got the job done quickly (averaged around 13 seconds), the other requirement was that the script be easy to modify by non-programmers, and this was not even remotely easy to modify (it took me a half an hour to add one line). So I took it upon myself to rewrite the whole thing, and so far the result has been an interesting exercise. &lt;br /&gt;&lt;br /&gt;Problem 1: The data is delineated by XML-style tags, but is not in an XML structure. &lt;br /&gt;Problem 2: Some of the records (collections of data that represent one art piece) are invalid, as they just describe different image file names for a single art piece.&lt;br /&gt;Problem 3: Some of the data is unique (such as the style, technique, etc), and the values are often in a list separated by semicolons.&lt;br /&gt;Problem 4: The current version of my rewrite takes well over 400 seconds to run.&lt;br /&gt;Problem 5: I had pretty much a weekend to write this. &lt;br /&gt;&lt;br /&gt;The data dump and the way the records are structured is unavoidable. I approached the problem by reading in one record at a time and passing it through a series of functions to pull out the appropriate values, then inserting them into the MySQL database. It does this one query at a time, however, which I suspect is part of the problem. &lt;br /&gt;&lt;br /&gt;The first step in improving is exploring the REPLACE function. I'm currently running a query that checks a table if the current values exists, otherwise it needs to be added in. Making these required entries unique should remove the need for these extra queries.&lt;br /&gt;&lt;br /&gt;The result? Down to around 330 seconds, not as bad. The primary keys are a little screwed up, as expected, but since it's an auto-incremented number, it isn't a huge deal.&lt;br /&gt;&lt;br /&gt;At this point the primary bottleneck is in the bridge tables. Here's how this works: all the bridge tables simply connect an art piece with its corresponding style, technique, etc. So there's a style table, which is only a list of styles, but we need to take the artID (one select query), then select the corresponding styleID, and put them in one table. This wouldn't be so bad except it's 2 queries in a row for each of the tables; that's a lot of individual queries. &lt;br /&gt;&lt;br /&gt;**Note: at this point I realized I made an extremely stupid error and kept adding onto the records array rather than clearing it after each record was processed *facepalm!*&lt;br /&gt;Fixing that major leak got the script down to 131 seconds.&lt;br /&gt;&lt;br /&gt;After making a huge difference with the array I managed to cut it down even more by fixing the art table creation. This function was using two different queries to build the table, which was unnecessary. It's now running at around 16 seconds!&lt;br /&gt;&lt;br /&gt;Right now I'm pretty happy with where the script is at, so I'll save the optimization of the bridge tables for later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-1171463176592701147?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1171463176592701147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1171463176592701147' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1171463176592701147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1171463176592701147'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/12/battle-with-php-script-from-hell.html' title='Battle With the PHP Script From Hell'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6685542327432461065</id><published>2009-11-18T00:46:00.003-05:00</published><updated>2009-11-18T00:48:09.651-05:00</updated><title type='text'>Linux in Media</title><content type='html'>I know for a fact that a lot of Sci Fi original movies use Linux in their computer scenes (one of them was really, really, obviously Gnome desktop, which made me extremely happy). it's free, doesn't violate any copyrights, and allows the movie makers to customise the look of it so it can look suprar scientific. I wonder how much media actually uses Linux for their "fancy tech computer" scenes...or if most of them just use a flash movie or what...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6685542327432461065?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6685542327432461065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6685542327432461065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6685542327432461065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6685542327432461065'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/11/linux-in-media.html' title='Linux in Media'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6288481382030098749</id><published>2009-11-12T18:31:00.003-05:00</published><updated>2009-11-17T19:41:58.909-05:00</updated><title type='text'>World Usability Day</title><content type='html'>I went to World Usability Day down at IU and was really impressed, that was a fantastic conference. Very, very, very small, but gave me a lot to think about and didn't put me in a grouchy mood. No one there expect myself, Dr. Gestwicki, and Austin were programmers, which made us feel like outsiders in a sense, but we all still gained a lot by going and enjoyed ourselves quite a bit. &lt;br /&gt;&lt;br /&gt;The highlight of the conference was definitely Rod Collier, the guy who designed the Letterman Building here at Ball State. His presentation was both informative and interesting, his PowerPoint was amazing, and he gave some fantastic examples of innovative design in his own home (which he designed himself!).  &lt;br /&gt;&lt;br /&gt;Unfortunately I didn't get a good sense of what everyone was thinking of when they were talking about design and usability...I guess it was just physical objects...but most everyone there avoided the topic of computers like the plague (even the guy who worked for Tuitive, which designs web-based apps and webpages for clients). This was unfortunate, since CS could use more good usability people. &lt;br /&gt;&lt;br /&gt;Another refreshing aspect was the attitude; everyone there obviously knew what they were talking about, but didn't seem to be wallowing in their own sense of self-importance, which was extremely refreshing...I felt like this was due to the fact that these people are professionals, working for real clients, rather than a group of artists, which really makes an enormous difference. &lt;br /&gt;&lt;br /&gt;It also encouraged me to get a better design sense...I still have a lot of work to do in that regard. Especially since one of my interests is web design, this will be an essential skill. Unfortunately I'll always be a struggling outsider, because I don't fool myself into believing for a minute that design is something people can just "pick up". The amount of studies done on usability, the ridiculous amount of unusable systems, and the amount of money companies will spend on design are all obvious proof that design is another "this isn't as easy at it looks" area, but on the plus side, I'm far more aware of it now than I ever was before. &lt;br /&gt;&lt;br /&gt;Now, if you'll excuse me, I'm off to redesign my website again :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6288481382030098749?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6288481382030098749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6288481382030098749' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6288481382030098749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6288481382030098749'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/11/world-usability-day.html' title='World Usability Day'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6075255113337367882</id><published>2009-11-12T18:11:00.002-05:00</published><updated>2009-11-12T18:31:18.338-05:00</updated><title type='text'>Surface Project Success!!!</title><content type='html'>I meant to post this WAY earlier, but I've been unbelievably busy. The Surface project was a great success! It didn't crash, people seemed reasonably interested in it, and we made some very interesting observations. &lt;br /&gt;&lt;br /&gt;Primary observations of interest:&lt;br /&gt;1) People didn't seem aware of what the navagation bar was. They would mess around with the cards already on the table rather than interacting with the navigation bar. &lt;br /&gt;2) They kept trying to resize the cards (totally understandable)...we'll need to build in a flexible resize function for all the UI elements if there is any continued work on this project.&lt;br /&gt;3) They "accidentally" discovered the flip function. Again, there needed to be an obvious visual cue for this.&lt;br /&gt;4) They kept trying to interact with their own names, which was, in retrospect, a completely obvious interaction we neglected to take advantage of due to time constraints. &lt;br /&gt;&lt;br /&gt;We're going to start going through the data soon, which will also be extremely interesting. More to come!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6075255113337367882?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6075255113337367882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6075255113337367882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6075255113337367882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6075255113337367882'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/11/surface-project-success.html' title='Surface Project Success!!!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5157888531094016148</id><published>2009-11-05T12:58:00.007-05:00</published><updated>2009-11-05T13:08:53.691-05:00</updated><title type='text'>Brief UI Post</title><content type='html'>I installed TweetDeck today just to check it out:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qDFje_d9QI0/SvMThgfZ03I/AAAAAAAAAEU/sMO6cKXStdM/s1600-h/TweetDeck.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_qDFje_d9QI0/SvMThgfZ03I/AAAAAAAAAEU/sMO6cKXStdM/s320/TweetDeck.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5400681844525618034" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Oh. My. God. Why. This is easily the worst UI design I've seen in a while. What do all those little icons do? I have no idea until I hover over them with the mouse. Why so much noise? I can't even tell what I'm freaking looking at.&lt;br /&gt;&lt;br /&gt;And don't get me started on the Growl integration:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_qDFje_d9QI0/SvMT0e9eEnI/AAAAAAAAAEc/76kk9gwswQQ/s1600-h/TDGrowl.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://1.bp.blogspot.com/_qDFje_d9QI0/SvMT0e9eEnI/AAAAAAAAAEc/76kk9gwswQQ/s320/TDGrowl.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5400682170532369010" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Yeah, that's attractive...takes up a ton of screen real estate, makes an annoying sound, and doesn't conform to my Growl theme (quick toaster pop-up along the bottom). &lt;br /&gt;&lt;br /&gt;I hate, hate, hate cluttered UI designs that take up more space than they deserve. If you can fit all your content into a thin column, you make the application the size of said column. If you need more of these content windows, there's this concept call tabs. Nothing that only takes 140 characters to display should EVER take up my entire desktop real estate. &lt;br /&gt;&lt;br /&gt;To be fair, I'm a stickler for clean desktops. As should be obvious:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qDFje_d9QI0/SvMUjL49ztI/AAAAAAAAAEk/2UrqMKR94cA/s1600-h/Desktop.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 200px;" src="http://3.bp.blogspot.com/_qDFje_d9QI0/SvMUjL49ztI/AAAAAAAAAEk/2UrqMKR94cA/s320/Desktop.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5400682972867055314" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I'm definitely biased. But I have trouble viewing something like that as usable. Need to do more research on this topic :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5157888531094016148?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5157888531094016148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5157888531094016148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5157888531094016148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5157888531094016148'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/11/brief-ui-post.html' title='Brief UI Post'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_qDFje_d9QI0/SvMThgfZ03I/AAAAAAAAAEU/sMO6cKXStdM/s72-c/TweetDeck.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-7121686875258912355</id><published>2009-10-29T12:16:00.003-04:00</published><updated>2009-10-29T12:18:02.673-04:00</updated><title type='text'>Screenshot of the Latest Build</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_qDFje_d9QI0/Sum_-gz192I/AAAAAAAAAEM/GS5lTS6pbbs/s1600-h/screenWithNewDataOriginal.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 266px;" src="http://3.bp.blogspot.com/_qDFje_d9QI0/Sum_-gz192I/AAAAAAAAAEM/GS5lTS6pbbs/s320/screenWithNewDataOriginal.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5398056709060425570" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I've been running into a lot of challenges with the layout, but it's starting to look really nice.&lt;br /&gt;&lt;br /&gt;One weird thing about the controls is that they will always overlap each other...not the best behavior, so I need to either look into Grid layouts or see if there's just a "Overlap = false" or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-7121686875258912355?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/7121686875258912355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=7121686875258912355' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7121686875258912355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7121686875258912355'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/screenshot-of-latest-build.html' title='Screenshot of the Latest Build'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_qDFje_d9QI0/Sum_-gz192I/AAAAAAAAAEM/GS5lTS6pbbs/s72-c/screenWithNewDataOriginal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4814414817917142022</id><published>2009-10-28T23:01:00.002-04:00</published><updated>2009-10-28T23:04:32.160-04:00</updated><title type='text'>Brainf*ck!</title><content type='html'>Another project I dug up today while I was doing a Qt tutorial for my Open Source class, a &lt;a href="http://cmarnold2.iweb.bsu.edu/Qt/bfsource.tar"&gt;small Brainfuck interpreter&lt;/a&gt; with a slick GUI. Qt is a fantastic graphics toolkit, and although I love Gnome, I'll probably end up doing other GUI projects in Qt...haven't bothered to take the time to learn GTK+ yet afterall. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4814414817917142022?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4814414817917142022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4814414817917142022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4814414817917142022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4814414817917142022'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/brainfck.html' title='Brainf*ck!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-2846924412510002067</id><published>2009-10-28T15:43:00.003-04:00</published><updated>2009-10-28T16:48:23.958-04:00</updated><title type='text'>Clever Qrulrs Code</title><content type='html'>I'm proud of this, so I thought I'd share it...it's very simple, just calls out to two different web services to create a QR Code from a URL:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;       public Qrurls()&lt;br /&gt;        {&lt;br /&gt;            createBitlyURL("http://cmarnold2.iweb.bsu.edu");&lt;br /&gt;            createQRCode();&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void createBitlyURL(String longURL)&lt;br /&gt;        {&lt;br /&gt;            String URL = "http://api.bit.ly/shorten?version=2.0.1&amp;longUrl=" + longURL + "&amp;login=" + bitlyAPIUsername + "&amp;apiKey=" + bitlyAPIKey;&lt;br /&gt;            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);&lt;br /&gt;            HttpWebResponse response = (HttpWebResponse)request.GetResponse();&lt;br /&gt;            Stream resStreamLocal = response.GetResponseStream();&lt;br /&gt;            string tempString = null;&lt;br /&gt;&lt;br /&gt;            if (null != response)&lt;br /&gt;            {&lt;br /&gt;                resStreamLocal = response.GetResponseStream();&lt;br /&gt;                StreamReader sr = new StreamReader(resStreamLocal);&lt;br /&gt;                string str;&lt;br /&gt;                while ((str = sr.ReadLine()) != null)&lt;br /&gt;                {&lt;br /&gt;                    if (str.Contains("shortUrl"))&lt;br /&gt;                        tempString = str;&lt;br /&gt;                    else&lt;br /&gt;                        continue;&lt;br /&gt;                }&lt;br /&gt;                response.Close();&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                throw new Exception("Something is wrong!");&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (tempString != null)&lt;br /&gt;                bitlyURL = tempString.Substring(tempString.IndexOf("http://bit.ly"), 20);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void createQRCode()&lt;br /&gt;        {&lt;br /&gt;            String URL = "http://chart.apis.google.com/chart?cht=qr&amp;chs=100x100&amp;chl=" + bitlyURL;&lt;br /&gt;&lt;br /&gt;            WebClient wc = new WebClient();&lt;br /&gt;            byte[] data =&lt;br /&gt;               wc.DownloadData(URL);&lt;br /&gt;&lt;br /&gt;            PngBitmapDecoder decoder = new PngBitmapDecoder(new MemoryStream(data), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);&lt;br /&gt;            BitmapSource bitmapSource = decoder.Frames[0];&lt;br /&gt;&lt;br /&gt;            // Draw the Image&lt;br /&gt;            myImage = new System.Windows.Controls.Image();&lt;br /&gt;            myImage.Source = bitmapSource;&lt;br /&gt;            myImage.Stretch = Stretch.None;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;It's being used in our Surface application for the &lt;a href="http://www.idmaa.org/idmaa2009/"&gt;iDMAa 2009 Conference&lt;/a&gt;. Obviously not the most complex code I've written by a long shot, but it didn't take much time and was extremely useful, since QR Codes are getting more common.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-2846924412510002067?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/2846924412510002067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=2846924412510002067' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2846924412510002067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2846924412510002067'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/clever-qrulrs-code.html' title='Clever Qrulrs Code'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-7692685747952201272</id><published>2009-10-26T12:38:00.006-04:00</published><updated>2009-10-26T13:03:51.617-04:00</updated><title type='text'>Just so you can all feel my pain...</title><content type='html'>My Surface project is becoming littered with code that looks like this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;presContent.Background = System.Windows.Media.Brushes.Transparent;&lt;br /&gt;presContent.Foreground = System.Windows.Media.Brushes.White;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;and this:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;System.Windows.Controls.Image authorImage = new System.Windows.Controls.Image();&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I spent around 10+ minutes just now making these "ambiguous references" unambiguous in this manner. There are a few major issues with this, besides the waste of time. &lt;br /&gt;&lt;br /&gt;1) The "Intellisense" that everyone jizzes themselves over with Visual Studio is not very intelligent. &lt;br /&gt;&lt;br /&gt;2) Why can't it tell that, when the variable is a System.whatever.fuckmicrosoft, that the constructor should also be of this type. What's the point of even having static typing if it can't tell that. &lt;br /&gt;&lt;br /&gt;It's obvious these tools were very poorly designed with very little forethought...I shudder to think this was done with full knowledge and not on accident, but it's almost too prolific to not be otherwise. I only complain because it's making my life very very hard. This project has gotten rather large and the last thing I need to worry about is the jackass compiler complaining it can't tell which 10 word namespace this data type is actually in, and could I please write out all 10 words, which makes the "using" keyword ESPECIALLY useful. &lt;br /&gt;&lt;br /&gt;In other news, we're at over 300 commits on the project, with 2 weeks left before shipping! :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-7692685747952201272?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/7692685747952201272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=7692685747952201272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7692685747952201272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7692685747952201272'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/just-so-you-can-all-feel-my-pain.html' title='Just so you can all feel my pain...'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4388948271454626201</id><published>2009-10-20T21:32:00.003-04:00</published><updated>2009-10-20T22:05:19.128-04:00</updated><title type='text'>Struggles in Seminar</title><content type='html'>I'm taking a 600-level Art seminar class, mainly because I have experience with the Surface, and my boss is in charge of it, and the professor I'm doing my other Surface project with is teaching it. We're in week 9 and we haven't really started coding yet...this makes me extremely nervous, since I'm taking 2 other classes on top of doing a 699. The crux of our problems have been this stupid GUI design...how do you design a cool, interactive GUI for a piece of hardware that is relatively new, and all the other applications for it are photo viewers, for an art museum that doesn't just want a photo viewer, because the photos would just be showing the stuff they have hanging on their walls? Answer: very carefully (ba-boom-ching!)&lt;br /&gt;&lt;br /&gt;But seriously, this Surface may be intended for "collaboration", but the reality is far from that. The problem of designing a deep, interesting interface for what essentially amounts to a huge table that sees your fingers is no trivial task...and it hasn't been studied for years like a traditional GUI. It's really difficult to communicate the nuances, but here goes:&lt;br /&gt;&lt;br /&gt;1) The Surface is both smaller than you'd expect, has less RAM than you'd like, and is rectangle, which, not matter how collaborative your app is, will force certain people into a driving position and others into a watching position. The Surface can only comfortably be surrounded by, maybe, 6 people total, but that's not nearly enough room for everyone to have their own "interaction space". Plus, it gets really cluttered REALLY REALLY fast.&lt;br /&gt;&lt;br /&gt;2) You have two options: design the GUI in a way that allows for each person to have their own, isolated interactions, or somehow try to design it in a way that everyone can interact together. Each approach has it's own problem; the isolated interactions can be much deeper, but it's not collaborative, while the collaborative design can only be so deep, otherwise one person can ruin it for everyone.&lt;br /&gt;&lt;br /&gt;Honestly, I would just love to see a design that can have the cake and eat it too...be both deeply immersive for everyone involved while still being collaborative. I don't know if this is just due to my own brain being used to a specific way of doing things, but I feel like this is an impossible task for computers...they are necessarily a single-person experience. The fantastic thing about online games is that they can simulate a deep, collaborative experience, but you're still interacting with it through a single-user machine. &lt;br /&gt;&lt;br /&gt;This brings up an interesting point though...in many multi-player games, collaboration is necessary to complete a task. Sure, two people aren't controlling the same character, but their collaboration facilitates the common goal...that collaboration is always extremely deep and nuanced. Unfortunately, I can't figure out a great way to apply this to the Surface without involving multiple terminals attached to it, or by making a ridiculously complex game. This thought has really intrigued me, though, so I may follow up later.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4388948271454626201?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4388948271454626201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4388948271454626201' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4388948271454626201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4388948271454626201'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/struggles-in-seminar.html' title='Struggles in Seminar'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5238098090137298880</id><published>2009-10-14T22:56:00.002-04:00</published><updated>2009-10-15T00:48:56.393-04:00</updated><title type='text'>CCSC:MidWIC and Thoughts on Women in Computing</title><content type='html'>This past weekend I presented a poster at MidWIC, the Midwestern Women in Computing Conference. This was both an extremely frustrating and fairly interesting experience, and got me pondering the whole "women in computing" issue. I felt like the conference not only missed the point of why women are such a minority in CS, but actually brilliantly illustrated the problem: we were placed in a small, cramped building away from the main building with all the food and keynotes (where CCSC was taking place), presented posters more or less only to each other, were given lipstick in the swag bags, and had a social dance at the end of the first day...the organizers were obviously under the impression we were all 9 years old.&lt;br /&gt;&lt;br /&gt;However, that brings up an interesting issue. Women are most certainly a minority in Computer Science, but how do you not only encourage more women to join, but also promote them in a way that doesn't come off as condescending? So much of this is a major cultural problem that isn't going to be solved overnight. And by intentionally trying to promote one group you're doing the very thing that no one really wants: singling out a group of people based on their gender rather than their common interest in computer science, and thereby creating a very delicate dilemma. I want women to be promoted, in a sense, but only in the sense that, if I were to go to a general computer science conference, where everyone is attending due to nothing more than a deep interest in computer science, I will be taken as seriously as everyone else and I'll find as many women being taken seriously as men. So at that point I'm not even being promoted as a woman anymore, just as someone who loves computer science and has some knowledge about it, and therein is the catch-22. &lt;br /&gt;&lt;br /&gt;However, that leads to another question...should we even bother promoting women in CS to each other? We're already women in CS, it's too late to make us be any more "into" CS. The challenge is to get teenaged girls interested in Computer Science, and plant the idea in their heads to check it out when they get to college. That requires mentoring programs (as well as a massive cultural overhaul, but again, that will take years at best) where women not only show their younger counterparts that they can do CS, but that they can be as good at it as anyone else. This is a challenge, especially for less well-funded schools, but it's a massive step in the right direction. &lt;br /&gt;&lt;br /&gt;None of this is original, I'm sure, but if nothing else it helped illustrate in my own mind the problems being faced right now.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5238098090137298880?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5238098090137298880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5238098090137298880' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5238098090137298880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5238098090137298880'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/10/ccscmidwic-and-thoughts-on-women-in.html' title='CCSC:MidWIC and Thoughts on Women in Computing'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4476545299188013752</id><published>2009-07-25T12:22:00.003-04:00</published><updated>2009-07-25T12:45:50.616-04:00</updated><title type='text'>Slackware Day 2: Configuration and New Packages</title><content type='html'>So now I had a fresh Slackware install on my Eee...what next? The first task I accomplished was fixing a problem with the tutorial I followed: it only had you install packages from the first install CD, but I wanted packages from ALL the install CDs. Fortunately, this is easy sauce.&lt;br /&gt;&lt;br /&gt;Go to any of the FTP Slackware mirrors and navigate to the slackware folder, which has all the software packages. Since the ones I had installed from the ISOs needed to be updated anyway, I just copied all of them into my local slackware folder. I then mounted the hard drive on my Slack system, and navigated to the package collection I wanted to install, and ran:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#installpkg *&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;This will install everything in the folder. &lt;br /&gt;&lt;br /&gt;**&lt;br /&gt;Important note: You'll notice MOST of the packages have the extension .txz. If you have an older version of pkgtools, Slackware won't know what to do with these. A good way to handle this is to download the .tgz packages of tar, gzip, pkgtool, and xz, install those using installpkg, and then install everything else. &lt;br /&gt;**&lt;br /&gt;&lt;br /&gt;Finally, not only do we have a great base system, but X is installed! I chose to not install the KDE or KDEI packages, my window manger of choice is &lt;a href="http://xmonad.org/"&gt;xmonad&lt;/a&gt;, so I'll go through the steps to install that. :) However, if you installed the XAP packages, you should have at least fluxbox, blackbox, xfce4, and a few others, so you're more or less in business! &lt;br /&gt;&lt;br /&gt;Before configuring X, make sure to add a user. All the previous actions needed to be done as root, but X has lots of user-specific configuration, so if you haven't done that already, get it out of the way.&lt;br /&gt;&lt;br /&gt;Finally, to configure X:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#xorgsetup&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That should be it! To choose your initial window manager, run:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$xwmconfig&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Running startx should drop you into whatever you chose! Further, more fine-tuned X configuration is usually done in the /etc/X11/xorg.conf; configuration for your personal X session (as a user) is done in .xinitrc. &lt;br /&gt;&lt;br /&gt;Bonus task: Installing Xmonad&lt;br /&gt;Xmonad is my favorite wm, especially on my netbook. It's fast, clean, minimal, and relies very heavily on the keyboard. Another good one is ratpoison, but I use xmonad for my day-to-day :)&lt;br /&gt;&lt;br /&gt;To install, go to the Xmonad site, downloads, and slackware. All the packages you need to install xmonad on your system are right there (there's not many of them!). Download them all into a folder (I called mine xmonad), navigate into the folder, and run &lt;br /&gt;&lt;code&gt;&lt;br /&gt;#installpkg *&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;After that has finished, open up .xinitrc (it should have been created after you ran xwmsetup).&lt;br /&gt;Where it says:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;exec /usr/bin/startflux&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;or something similar, replace it with:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;exec xmonad&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Done! Exit out, start X again, and enjoy Xmonad :)&lt;br /&gt;&lt;br /&gt;That's pretty much the extent of my Slackware-installation posts, I've managed to get the full system running quite a bit faster than my first time. Any subsequent posts will more than likely deal with getting wireless up and running, though compared to the first time I tried, it should be significantly easier...the 2.6 kernel has the best wireless drivers built-in already! I hope people find this helpful, or even a little interesting...thanks for reading!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4476545299188013752?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4476545299188013752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4476545299188013752' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4476545299188013752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4476545299188013752'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/07/slackware-day-2-configuration-and-new.html' title='Slackware Day 2: Configuration and New Packages'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8693989494472337006</id><published>2009-07-24T14:26:00.005-04:00</published><updated>2009-07-25T12:30:01.350-04:00</updated><title type='text'>Slackware Day 1: Installation</title><content type='html'>Of course, the first step before doing ANYTHING is to back up my laptop...don't want to lose anything important!&lt;br /&gt;&lt;br /&gt;While waiting for the files to back up, I needed to create a boot disk on my USB (Eee's don't have a disk drive :P). According to the &lt;a href="http://wiki.eeeuser.com/slackware"&gt;step-by-step&lt;/a&gt; I referenced in the last post, I needed to perform a dd to get the usbboot.img I downloaded from the Slackware site onto my flash drive. &lt;br /&gt;&lt;br /&gt;I got the device ID for the flash drive by running the command:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;sudo fdisk -l&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This is crucial...the last time I assumed I knew what the device ID was, I borked my entire system (side note: if you find yourself thinking "this is taking a really long time", you borked your system). Fdisk says that my USB is /dev/sdb1, so my dd command would be:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dd if=usbboot.img of=/dev/sdb1 bs=512&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That resulted in:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;54504+0 records in&lt;br /&gt;54504+0 records out&lt;br /&gt;27906048 bytes (28 MB) copied, 1.26218 s, 22.1 MB/s&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Perfect!&lt;br /&gt;&lt;br /&gt;**&lt;br /&gt;Important edit: this will only install the very basic packages. My next post discusses how to get *all* the packages later, including updates, but at this step it would be easier to not bother with the ISOs at all, and go to any of the ftp sites offering slack packages. There should be a slackware folder in slackware-current with all the package groups; download them into your slackware folder. This way, you get everything, and it's all up-to-date.&lt;br /&gt;**&lt;br /&gt;Next step: getting an ISO of the install disk 1, mounting, and copying the slackware/ directory to another USB drive. I installed gmountiso (recommended by &lt;a href="http://www.ubuntugeek.com/easy-way-of-mountunmount-iso-images-in-ubuntu.html"&gt;The Ubuntu Geek&lt;/a&gt;, a fantastic Ubuntu help-page), mounted the ISO, and copied the /slackware folder (with all the packages) onto an external hard drive. &lt;br /&gt;&lt;br /&gt;Finally, booting and installing! Following the instructions on the website, I managed to get the system and packages installed without a hitch. I didn't manage to get LILO installed immediately, but I was able to boot successfully into my new system using the following commands in the GRUB prompt:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;grub&gt; root (hd0,0)&lt;br /&gt;grub&gt; kernel (hd0,0)/boot/vmlinuz root=/dev/hda1&lt;br /&gt;grub&gt; boot&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And now for the real work, next time: configuration and installing new packages!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8693989494472337006?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8693989494472337006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8693989494472337006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8693989494472337006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8693989494472337006'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/07/slackware-day-1-installation.html' title='Slackware Day 1: Installation'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-662235835720420587</id><published>2009-07-22T08:11:00.004-04:00</published><updated>2009-07-22T09:10:33.692-04:00</updated><title type='text'>And Moving Back to Slackware...</title><content type='html'>I change Linux distros more often than I change underware. It's always for different reasons, but the result is always the same...I get to spend time setting up a brand new system, working out all the little hiccups, until it's running smooth as silk. Today is Part 1 of my decent into madness: The Migration Back To Slackware.&lt;br /&gt;&lt;br /&gt;Slackware was my very first Linux distro. Before I even really understood was Linux even was. I ruined about 10 CDs trying to get the iso images to burn correctly because I was using Windows, and that shit is hard! Finally...Slackware was mine. I spent the next few years or so just learning how to manipulate the most basic functionality, culminating in my finest achievement, learning how to successfully compile my own kernel. But really, the furthest I got was building a usable desktop environment. Sure, this is a success in and of itself, but it left huge gaps in my knowledge that other, gentler Linux distros slowly filled. When my friend recommended Arch to me, I was very excited, since it's basically Slackware with package management. Package management eventually became my friend after I worked with Debian (which probably directly influenced my move to Ubuntu as my primary desktop). &lt;br /&gt;&lt;br /&gt;Recently, though, I've been dreaming of Slackware again. I think it's finally time to come back to my first toy distro, and see how much I've REALLY learned after all these years. &lt;br /&gt;&lt;br /&gt;Resources to start:&lt;br /&gt;&lt;a href="http://wiki.eeeuser.com/slackware"&gt;How To Install Slackware On The Eee &lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.slackware.com/"&gt;The Main Slackware Page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-662235835720420587?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/662235835720420587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=662235835720420587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/662235835720420587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/662235835720420587'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/07/and-moving-back-to-slackware.html' title='And Moving Back to Slackware...'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8521110841413149476</id><published>2009-06-13T10:48:00.002-04:00</published><updated>2009-06-13T12:56:36.220-04:00</updated><title type='text'>Migration to Arch</title><content type='html'>The other day I did a dd to my hard drive, and my Crunchbang install got completely wiped out. To the point where the computer refused to boot. The positive side to this story is that I had been thinking about migrating my netbook back over to &lt;a href="http://www.archlinux.org/"&gt;Arch Linux&lt;/a&gt;, and the massive trashing gave me the perfect excuse to do this...&lt;br /&gt;&lt;br /&gt;I had used Arch in the past as both a desktop OS and a server OS, after I had moved away from Slackware and before I really understood how nice package managers are. It's lean, mean, lightning fast, and a LOT of work, but I felt like it was more rewarding than working with Slackware (really only because Slackware was my first distro, so I didn't have a very solid understanding of what the hell I was doing). Crunchbang is a beautiful, solid OS to be sure, but I decided it was high time I moved to something even more lightweight for my netbook.&lt;br /&gt;&lt;br /&gt;So, I'm currently running Arch Linux with the slick tiling window manager &lt;a href="http://www.xmonad.org/"&gt;Xmonad&lt;/a&gt; (the WM I heard about through my new favorite webcomic, &lt;a href="http://www.geekherocomic.com/2009/01/30/boris/"&gt;GeekHero&lt;/a&gt; :)). It took about 2 days total to get it set up 100% how I want it, and now I have a netbook that boots up and is ready to use in under a minute. Firefox, Evolution, and Audacious are basically the only non-CLI programs I use (I really can't use CLI web-anything), which isn't a fun thing for Linux newbies, but I enjoy quite a bit...it makes the mouse completely optional outside of these programs, which in turn makes use much more efficient and significantly less frustrating (relying on the mouse is definitely an exercise in frustration).&lt;br /&gt;&lt;br /&gt;The best part about the Eee is the extremely generic chipset for everything, which means that all drivers needed are already built into the 2.6 kernel, no extra configuration needed. My main recommendation is, of course, regarding the wireless management: installing the &lt;a href="http://projects.gnome.org/NetworkManager/"&gt;NetworkManager&lt;/a&gt; (the same one used in Crunchbang!) is absolutely worth it. Other small, but extremely useful additions were Xmobar, a wonderful little status bar application designed for integration with Xmonad; trayer, exclusively to display the little nm-applet in the corner; and feh, for desktop wallpapers. &lt;a href="http://www.haskell.org/haskellwiki/Xmonad/Config_archive/John_Goerzen%27s_Configuration"&gt;This article&lt;/a&gt; was extremely helpful in getting this all set up.&lt;br /&gt;&lt;br /&gt;Now, if only I could find a good replacement Twitter/Identi.ca/Facebook status client...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8521110841413149476?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8521110841413149476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8521110841413149476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8521110841413149476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8521110841413149476'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/06/migration-to-arch.html' title='Migration to Arch'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4141479628298826918</id><published>2009-05-29T18:47:00.002-04:00</published><updated>2009-06-07T14:24:05.291-04:00</updated><title type='text'>Tales of C# Programming for Win32 Beta APIs, Part 1</title><content type='html'>Many, many people ask me what, exactly, my job is. I work for the Centre for Media Design basically doing whatever my supervisor wants me to do, and my current project is to develop an interactive data visualisation graph utilising information from a database of attendees of the IDMAA conference, being held here in August. This project has had a massive learning curve for me due to the fact that it is in a language I'm unfamiliar with (C#), using an API I'm unfamiliar with (Microsoft WPF/Surface) and with little to no documentation (the Microsoft surface is a brand-new piece of hardware and there isn't even a book written about it yet). Fortunately someone who is a significantly better programmer than me is assisting, and so far we've managed to hack out a pretty impressive looking demo. &lt;br /&gt;&lt;br /&gt;One of the major issues with the Microsoft API is, predictably, how non-transparent it is. It appears that everything is designed to be tied directly into the XAML (the MS XML junk that describes the objects you're working with), making the C# clunky and difficult to follow at points (where do these freaking event handlers come from? why do you add them the way you do? no one knows). Threading was another delightful adventure into "wtf..." land; apparently, you cannot access an object inside of a thread unless it was created within that thread. Sure, this helps prevent synchronisation problems, but it's like cutting off your arm so you won't be tempted to reach for that last doughnut. Another major annoyance: drag and drop functionality isn't really "built in"...if you want to implement drag and drop, there's a &lt;a href="http://www.codeproject.com/KB/WPF/SurfaceAppTutorialPart2.aspx"&gt;rather long, detailed tutorial on the topic&lt;/a&gt;. Which is extremely useful considering the hardware is a touch surface. &lt;br /&gt;&lt;br /&gt;Regardless, the project is going extremely well and I'm enjoying the challenge quite a bit. Once the project is finished it should be fairly impressive, if it's done right. Beyond that, the challenge will simply be to make it engaging enough for users, so we don't run into a trend of people getting bored with it almost immediately. That opens up the possibility of designing in some rudimentary game elements, maybe allowing users to "collect" interesting data, or garner points for connections, things of that nature. More on that as the project expands!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4141479628298826918?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4141479628298826918/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4141479628298826918' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4141479628298826918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4141479628298826918'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/05/tales-of-c-programming-for-win32-beta.html' title='Tales of C# Programming for Win32 Beta APIs, Part 1'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8188446913218547135</id><published>2009-05-27T20:11:00.004-04:00</published><updated>2009-05-27T20:18:02.607-04:00</updated><title type='text'>Things Visual Studio Does That Piss Me Off: Part 1</title><content type='html'>If you don't declare a variable, it will try to autocomplete everything. For example, while trying to write for(i=0; i!=thing; i++), it will ALWAYS autocomplete with for(if=0; if!=thing; if++), and even if I change the first if back to i, it will continue to insist that I was, in fact, trying to use if for each proceeding i. It recognizes the for loop structure but is not smart enough to realize an if is not appropriate in this situation.&lt;br /&gt;&lt;br /&gt;Also, it fucking copies blank space.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8188446913218547135?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8188446913218547135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8188446913218547135' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8188446913218547135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8188446913218547135'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/05/things-visual-studio-does-that-piss-me.html' title='Things Visual Studio Does That Piss Me Off: Part 1'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6747297245046955966</id><published>2009-04-13T01:02:00.003-04:00</published><updated>2009-04-13T01:14:25.748-04:00</updated><title type='text'>Things I learned this weekend (or: the list with no point)</title><content type='html'>1)  "Accessing" an element in C++ lists (and related structures) means "make an exact copy of this for me to use temporarily".&lt;br /&gt;&lt;br /&gt;2) Don't hardboot a server randomly (especially out of laziness), even if said server is giving you all sorts of sass. You may knock it to the curb for a second, but it will trip you into oncoming traffic.&lt;br /&gt;&lt;br /&gt;3) Port forwarding for fun and profit. Also, default router passwords are for win. Too bad this resulted in the death of a server...&lt;br /&gt;&lt;br /&gt;4) Crunchbang skimps on language packs. This would be more acceptable if one of the language packs I had to install wasn't for the most widely spoken language on earth. Ethno-centric much...&lt;br /&gt;&lt;br /&gt;Reinstalling Ubuntu server this weekend...Все идет по плану&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6747297245046955966?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6747297245046955966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6747297245046955966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6747297245046955966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6747297245046955966'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/04/things-i-learned-this-weekend-or-list.html' title='Things I learned this weekend (or: the list with no point)'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-3493349365358147347</id><published>2009-01-29T21:20:00.002-05:00</published><updated>2009-01-31T01:36:27.683-05:00</updated><title type='text'>Project 2: String Length Counter in C</title><content type='html'>This weekend I spent some time exploring C strings, and comparing/contrasting them with strings in C++ after doing a project in which we were required to write a word length counter without using the built-in stringlen functions (oh noes!).&lt;br /&gt;&lt;br /&gt;Strings in C++ are nothing like strings in C. I had a vague idea of this when I was doing the project, as I have used C++ strings in the past, and they don't require as much work as C strings. There is a very good reason for this: while C++ strings are very nice containers with nice built-in functions, C strings are, quite literally, nothing but a group of chars. This can be expressed either as an array or a pointer. The difference between the two being one is a pre-sized block of memory containing a line of chars, while the other is an address to a block of memory (not necessarily pre-sized) containing a line of chars. Array do decay into pointers when being passed as parameters and such, but the two are still fundamentally different.&lt;br /&gt;&lt;br /&gt;A very interesting thing about pointers and arrays is that, despite the fact they are represented completely different in memory, they can still be treated the same within this context. If you declare two variables:&lt;br /&gt;&lt;br /&gt;    char array[] = "Kitty";&lt;br /&gt;    char *pointer = "Cat";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;you can use the same notation to access the individual characters in both, ie:&lt;br /&gt;&lt;br /&gt;    array[1] to get i&lt;br /&gt;    pointer[1] to get a&lt;br /&gt;&lt;br /&gt;In the first case, the compiler will start at the first character of array and move one in order to get the value. In the second case, the compiler will fetch the pointer value, add 1 to this value, and then finally go to this location to load the character.&lt;br /&gt;&lt;br /&gt;This is what, for me, makes C so interesting. It is far more low-level than C++, and as such, the fact that you're accessing values in memory is far more transparent. The malloc command I used in my homework literally sets aside a block in memory of the size indicated (returning a pointer), and keeps that memory allocated until it is either deallocted by free or until the program ends.&lt;br /&gt;&lt;br /&gt;C++ string containers are just special templates that allow you to do far less damage accidentally (though it is said you can pretty epically destroy the world if you do mess up). They do a lot more to automatically manage your memory for you. You can convert them into a c_str (which is actually a const *char, and is necessary for a few file input functions such as fstream), but for all intents and purposes they are their very own, very easy to use data structure.&lt;br /&gt;&lt;br /&gt;Anyway, I hope to do more C programming this year as a way to improve my knowledge of pointers, and hopefully allow me to start writing some more heavy-duty projects such as small compilers and what-have-you. Let the C adventures begin!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-3493349365358147347?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/3493349365358147347/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=3493349365358147347' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/3493349365358147347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/3493349365358147347'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/01/project-2-string-length-counter-in-c.html' title='Project 2: String Length Counter in C'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-6502060277630936374</id><published>2009-01-22T19:58:00.002-05:00</published><updated>2009-01-22T20:14:21.529-05:00</updated><title type='text'>Project of the Week</title><content type='html'>I decided that since I've stopped posting regularly (unfortunately!) I'm going to start post about a Project of the Week. Essentially, this will be some project that I accomplish, either over the entire week or just on a weekend. Posting my experiences will both help me remember it, and provide a reference for myself. And maybe someone else will enjoy reading about it as well :)&lt;br /&gt;&lt;br /&gt;This week's was easy: set up my Ubuntu server with SSH and an IP address manager daemon that would allow me to admin the server remotely, and elimiate the need (for the most part) for the splitter box I have between my Mint desktop and the server itself. This is mainly for convenience, of course, and the fact that the splitter box often cuts off access to the mouse/keyboard and makes the monitor look yucky.&lt;br /&gt;&lt;br /&gt;Of course, installing Ubuntu Server edition (CLI only!!) was a breeze; the installer is far more stripped down (it made me nastolgic for Slackware), but still very straight forward. It may scare the Linux n00b, but anyone who has installed a few Linux distros in their time would be comfortable with it.&lt;br /&gt;&lt;br /&gt;So next up, I wanted to be able to SSH into my box from anywhere. This is both for convenience, and as I mentioned, removes the need to directly interact with the computer, which is a pain when it's sharing a monitor with my main Linux desktop (which, just to mention, is Mint :3). In order to accomplish this hardly daring feat, I created an account with &lt;a href="http://www.dyndns.com/"&gt;DynDNS.com&lt;/a&gt;, which is a free service and allows you to add your computer as a "host". I can't remember if there is a limit to the number of hosts you can add, but I'm inclined to say there is, since they have account upgrades that you need to pay for.&lt;br /&gt;&lt;br /&gt;After doing this I installed &lt;a href="http://ddclient.wiki.sourceforge.net/"&gt;ddclient&lt;/a&gt; (sudo apt-get install ddclient), which is essentially a daemon that keeps track of when your dynamic IP address changes, and notifies DynDNS of the change. DynDNS then updates you host so, voila, your hostname always resolves to the right computer! During the installation Ubuntu automatically configures ddclient for you, more or less. There is a small amount of hand-configuration, but you need only to change a few lines, and you're off and running!&lt;br /&gt;&lt;br /&gt;After doing all this (extremely hard (; ) work, you should be able to directly SSH into your server box and admin from any computer you wish. &lt;br /&gt;&lt;br /&gt;The next project I'm considering will be a bit more complicated, and more programming-oriented than server-oriented, so hopefully slightly more interesting :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-6502060277630936374?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/6502060277630936374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=6502060277630936374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6502060277630936374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/6502060277630936374'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2009/01/project-of-week.html' title='Project of the Week'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4216712204148197518</id><published>2008-07-31T01:52:00.001-04:00</published><updated>2008-07-31T01:52:24.023-04:00</updated><title type='text'>Ur Doin It Wrng</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I'll be forthright: I only skimmed a bit of &lt;a href='http://itmanagement.earthweb.com/entdev/article.php/11070_3761921_1'&gt;The 'Anti-Java' Professor and the Jobless Programmers&lt;/a&gt; the first time. After going back and giving it the attention it deserves, I agree with the message it's trying to send, though I must admit it's really an echo of similar arguments I see in other respected programming blogs (see: Joel on Software's &lt;a href='http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html'&gt;The Perils of JavaSchools&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So, really, I'm not trying to say or point out anything particularly new. No, the parts of The 'Anti-Java' Professor I wanted to point out were the following quotes:  &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Dewar stresses that he’s not against Java itself. But the fact that Java is taught as the core language in so many colleges is resulting in a weak field of computer science grads, he says.&lt;br /&gt;&lt;br /&gt;The reason: students’ reliance on Java’s libraries of pre-written code means they aren’t developing the deep programming skills necessary to make them invaluable. Colleges, alarmed by falling CS enrollment, have dumbed down the course requirements. Consequently, CS majors sail through a curriculum of Math Lite, earning a smiley-face on their papers for “developing” projects using pre-built libraries.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Followed by:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;But wait a second, Professor Dewar...I wanted to ask him, since this list of popular programming languges puts Java at No. 1 – ahead of biggies like C, C++ and Visual Basic – doesn’t that negate his theory?&lt;br /&gt;&lt;br /&gt;I mean, if Java is this popular, maybe universities should teach it first. It called “being in touch with the real world,” isn’t it? &lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Before continuing any further I'd like to point out I don't specifically have anything against Java. I feel like it is a perfectly adequate language that the right people can do great things with, like all languages. This is not about Java (it could just as easily have been about Python, and so many other languages). It's about the ATTITUDE that is being flaunted; Java just happens to draw this kind of attitude. Take or leave that as you wish.&lt;br /&gt; &lt;br /&gt;When I first read this, taking it seriously, it &lt;i&gt;infuriated&lt;/i&gt; me, mostly because this is the attitude I see at my own school. So many times I have see my fellow students (in my eyes) just give up because a language "is so much easier" than C, C++, Lisp...whatever. When I mention that I am leaning towards doing a video game project in Lisp for my masters work I always get the exact same question: "Why are you using Lisp?", usually followed by, "Why not just use Java?" &lt;br /&gt;&lt;br /&gt;It boggles my mind. It's like asking me "Why are you doing computer science?". I'm doing it because I love computer science and want to learn as much as possible, not just sit around and churn out easy code. If I wanted to do THAT I would just do HTML all day and try to convince people I was a programmer. I mean, it's easy, right? Why spend time learning something more complex like Java? &lt;br /&gt;&lt;br /&gt;Why is it so weird when you're devoting at least four solid years and thousands of dollars to something that you would want to learn as much as humanly possible? Is this not the point of college? While I do agree there is a place and time for very good tools (such as the ones Java provides), there is also a place and time to learn how exactly these tools work by building them yourself. &lt;br /&gt;&lt;br /&gt;Just as a random anecdote, a friend of mine decided to rewrite a built-in Java search and came up with his own search (in Java as well) that was magnitudes faster. He learned something important from that experience, as we all should.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4216712204148197518?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4216712204148197518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4216712204148197518' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4216712204148197518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4216712204148197518'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/07/ur-doin-it-wrng.html' title='Ur Doin It Wrng'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-2658499299322693454</id><published>2008-07-09T10:40:00.002-04:00</published><updated>2008-07-10T09:18:51.041-04:00</updated><title type='text'>Linux Wants to be Your Friend (Part II)</title><content type='html'>Wow. Linux Mint...I was really, really impressed. Of all the "user-friendly" Linux systems I've messed with, this one is hands down one of the most solid and truly user-friendly.&lt;br /&gt;&lt;br /&gt;Installation was, as expected, a breeze. It took maybe 10 minutes total, and like most modern, desktop-based Linux distros allowed you to explore the LiveCD at your leisure while the partitioning and file-copying and whatnot was being done.&lt;br /&gt;&lt;br /&gt;The full installation naturally has the essentials: the excellent Synaptic package management system, Firefox, Pidgin, and a nifty little update program that allows you to update the entire system with a few mouse clicks. The aspect I enjoy most about the update program is it resides in the toolbar along the bottom, very unobtrusively indicating, with nothing more than a slight change in the button, that there are new updates available.&lt;br /&gt;&lt;br /&gt;The best part: all internet plug-ins are installed right away, as promised. I was still having issues with applets (they weren't aknowledging keyboard input, very odd...), but there was no need for me to do any manual installs of...well...anything. Probably the easiest Linux install I've ever had to be quite honest.&lt;br /&gt;&lt;br /&gt;The only minor issue I had with this distro is it doesn't do root like I normally expect it to do root. You have the *option* of setting a root password, although it's recommended you don't. The first time I did set the root password, just out of habit, and after multiple failed attempts to start up a device manager, I realized that the desktop was, like Mac OS X, asking only for the user's password. sudo asks for the user's password, and, to my horror, the user can even modify important root-level files (for example, the grub boot menu file) just by sudo-ing. Depending on the environment in which this distro is installed, this could be unforgiveable or just cringe-worth.&lt;br /&gt;&lt;br /&gt;Outside of this I would highly recommend this system to any Linux n00b who just wants a working system set up quickly and painlessly. This distro will be remaining on this desktop until the techs find out and become engraged at the lack of Vista.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-2658499299322693454?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/2658499299322693454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=2658499299322693454' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2658499299322693454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2658499299322693454'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/07/linux-wants-to-be-your-friend-part-ii.html' title='Linux Wants to be Your Friend (Part II)'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4326383384497270091</id><published>2008-07-08T14:40:00.001-04:00</published><updated>2008-07-08T14:40:33.294-04:00</updated><title type='text'>Linux Wants to be Your Friend (Part I)</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;What do you do when the Vista computer at work, which already runs painfully slow due to the underpowered computer it was forced on, becomes so choked with viruses it is virtually unusable? Well, you install Linux on it, of course. The problem? You (in this case me, but meh, pronouns...) are pretty good with Linux, and the people sharing this computer haven't even heard of Linux. What distro do you use? &lt;br/&gt;&lt;br/&gt;The fun thing about this is it gives me a chance to field test a few Linux distros for usability, and see how each one stacks up again the other. My first choice was &amp;lt;a href="http://www.debian.org/"&amp;gt;Debian&amp;lt;/a&amp;gt;, which, in hindsight, was an awful idea.&lt;br/&gt;&lt;br/&gt;Pros of Debian as a "common user" system:&lt;br/&gt;&lt;br/&gt;1) It is incredibly easy to set up. The net install takes maybe a half hour, just due to all the file downloads. If you have a fast connection it takes even less time.&lt;br/&gt;&lt;br/&gt;2) Just installing the "core" components gives you a fantastic Gnome desktop right away (this may seem like an obvious point, but I've installed more than one distro that requires you to install xorg on your own, or do xorg configuration, and so on). &lt;br/&gt;&lt;br/&gt;3) It has a shnazzy update system, as well as the always-excellent package management system.&lt;br/&gt;&lt;br/&gt;Cons:&lt;br/&gt;&lt;br/&gt;1) Debian's staunch adherence to F/OSS, while admirable, is the main source of many headaches. Flash was easy enough to get working, but I never got the JRE to work right (many applets just displayed a frustratingly cryptic "Error Loading" message), and I don't think there's any chance I'll ever get Firefox 3 installed on there. Yes, Iceweasel is technically Firefox, but it is still the old version and this is still unendingly frustrating.&lt;br/&gt;&lt;br/&gt;2) Their dedication to having a solid platform is fantastic for servers, but especially when it comes to web browsers, being even a few months behind is too much. New Flash plugins are released all the time, and sometimes software, such as Firefox 3 as I mentioned above, is important enough that I want it installed and running right away. However, an outdated system makes everything that much harder to get running (GTK libraries aren't up to date, and didn't want to get up to date, so I was left Firefox-less), and leads to a lot of extra work I don't feel like I should have to do, especially when it's a computer I hardly use more than a few hours out of an entire month.&lt;br/&gt;&lt;br/&gt;The next distro on my list to try will be &amp;lt;a href="http://www.linuxmint.com/index.php"&amp;gt;Linux Mint&amp;lt;/a&amp;gt;. I'm burning the boot disk tonight; the excitement is palpable. Linux Mint is based on Ubuntu, but it's supposed to have all media plugins installed already...I'm anxious to give it a try and see how easily it is to install and use. Stay tuned for Part II tomorrow!&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/5563106149149911149-4326383384497270091?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4326383384497270091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4326383384497270091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4326383384497270091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4326383384497270091'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/07/linux-wants-to-be-your-friend-part-i.html' title='Linux Wants to be Your Friend (Part I)'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-538670714918349874</id><published>2008-07-07T23:42:00.002-04:00</published><updated>2008-07-08T00:08:29.882-04:00</updated><title type='text'>Problem in Interpretation</title><content type='html'>Just as a programming exercise, I've been trying to write an interpreter for the esoteric Brainfuck language in C++, and it is hands down my most unsuccessful and frustrating project ever. Taking my first far less competent attempt into consideration, I've probably been working on this for a half a year (though I should mention that the "work" was extremely sparse at best).&lt;br /&gt;&lt;br /&gt;My first attempt, before I understood the goodness that is the STL string class, was to utilize arrays. To be fair this was (pre-Theory of Computation) how my mind felt the interpreter was MEANT to be implemented. I mean, it uses &gt; and &lt; to increment and decrement the pointer. And really, stripping it down to its core, all the language does is move a pointer up and down an "array" and increments and decrements the contents until it gets a command to "print". At that point it is assumed you're outputting an ASCII character; all that work just to create a string of ASCII characters from their number codes.&lt;br /&gt;&lt;br /&gt;My next crack at it (meaning my current attempt) is involving an array, but only an int array in the main increment and decrement function. The actual input, as well as the final output, are both strings (so, if you want to get really technical, they're char arrays, but we're not going to worry about that because you don't have to treat them as such when you're actually using the string class. Because the string class is so wonderful).&lt;br /&gt;&lt;br /&gt;The issue I'm running into again is the same issue I ran into with my last attempt: the while loop encased within the "[" and "]". The problem here is twofold: 1) figuring out how to recursively call the increment/decrement function so that I won't be re-writing the main chunk of code in my program and 2) dealing with the situation where the current index (ie the index the pointer is on at the point of the "[") will either be the number to be incremented/decremented, or the counter.&lt;br /&gt;&lt;br /&gt;So during the while loop there are four essential pieces of information: the index to be incremented/decremented, the counter index, and the actual value at both these indexes. I have to keep track of this, while being able to throw everything back to the "main" program in which everything is just a straight line of incrementing/decrementing.&lt;br /&gt;&lt;br /&gt;My friend suggested using a stack at this point, and my initial sketches involved pushing and popping the "+" with each run of the loop; after considering, I don't think this is at all effective. The first move will be to push each + found in the first run through (for the sake of simplicity I'm assuming the modified index will only be incremented); after the first run it will be obvious what the counter is and what the index being modified is. Keep pushing + until the counter runs down, then pop each + until there aren't anymore. Voila!&lt;br /&gt;&lt;br /&gt;Hopefully I'll have a working interpreter by the end of the week; I'll post code once it's completed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-538670714918349874?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/538670714918349874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=538670714918349874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/538670714918349874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/538670714918349874'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/07/problem-in-interpretation.html' title='Problem in Interpretation'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1871635058639840388</id><published>2008-06-26T20:13:00.001-04:00</published><updated>2008-06-26T20:13:33.299-04:00</updated><title type='text'>Back to Arch, and Lisp</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;The past couple of days I've been slowly migrating back to my Arch Linux box, especially after I realized most of my lack-of-hdd-space problems were stemming from the fact that I hadn't emptied my trash in a while. Nice one. Anyway, I'm moving back to that box as my primary dev environment just due to the fact I love more hands-on Linux distros like that, and feel like they're much easier to code on because it's expected you know your system inside and out...that leaves no place for libraries to hide, and removes the voodoo that seems to normally go along with prepping a dev environment from within a more hands-off system (I'm looking at you OS X). &lt;br/&gt;&lt;br/&gt;I still haven't decided whether or not I'm going to nuke my OpenSolaris partition; I really enjoy having a full Linux distro running within my Mac, especially when I need to go home and there's no way in hell I'm lugging back two desktop computers. This just will not happen. I'm certainly leaning towards keeping it after being reminded how easy the install and initial set-up was. No fuss, no muss. &lt;br/&gt;&lt;br/&gt;I'm finally starting to get back into Lisp as well. Recently I've come down with "do the same thing every day" syndrome, or in a rut as it were. So to rectify this I'm taking a break officially from TF2 (shock!) in order to start working on some projects, including a Lisp syntax checker and the multiple games that have been piling up. (Maybe I'll make some time for musical endevours as well? My saxophone is so painfully neglected...) So much for getting lots of work done over the summer. &lt;br/&gt;&lt;br/&gt;So I currently have two primary goals: learn Lisp and complete at least one simple video game project. Hopefully the next time I post I'll have some progress to report!&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/5563106149149911149-1871635058639840388?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1871635058639840388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1871635058639840388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1871635058639840388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1871635058639840388'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/back-to-arch-and-lisp.html' title='Back to Arch, and Lisp'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-7984138335677632160</id><published>2008-06-22T09:57:00.000-04:00</published><updated>2008-06-22T10:24:12.116-04:00</updated><title type='text'>Java Just Is Not My Bag...</title><content type='html'>I've been slowly trying to work out a Java game based on &lt;a href="http://lostgarden.com/2008/02/play-with-your-peas-game-prototyping.html"&gt;this design&lt;/a&gt; since the end of last semester, and progress has been slow to nil. Java is not my main language, and despite the fact I learned quite a bit in my GUI class (where Java was a requirement), I'm still struggling with the very basics. Whereas C++ just *feels* right, when I'm attempting to do any programming in Java I feel like a awkward teenager trying to unsuccessfully grope a transvestite hooker, desperately hoping something  good will come out of it if I just keep feeling around long enough and ignore that everything seems wrong about it...&lt;br /&gt;&lt;br /&gt;There's not a particular reason for me to feel this way, I've just never been convinced that Java is near as elegant or worthwhile as C++. And I just never really got the hang of it. The main issue is the enormous API; everything in Java is about memorizing syntax. Yes, there is a lot of this in C++ (there's more to the string class than I want to imagine), but somehow it's just not the same. I'm sure this is due to my lack of knowledge, but I don't feel as if I have any control over the built-in functions and objects. As I described to a fellow programmer friend, it feels like trying to use Legos to build an engine.&lt;br /&gt;&lt;br /&gt;Anyway, back to my game...I got a fairly good start, with graphics and all that, though I got "stuck" (read: stopped working) when I realized I would have to think about how to deal with the click-place mechanic with the blocks. Yes, this isn't hard, but my mind was whining loudly, "Whyyyyyyyyyyyy do I have to help you figure out how to keep track of all those x and y positions? Can't we just start playing [TF2/ Resident Evil/Metal Gear Solid/Final Fantasy] again??", and I would always give in. Finally, I came back to it after months, and in between that time had started up my zombie RTS project (in C++), and I realized I had no clue what my code was doing, so I overracted and deleted all versions I had made up to that time and fired up Netbeans with a fresh new blank project. And realized it had been so long since I had programmed in Java that I couldn't even remember where to start...&lt;br /&gt;&lt;br /&gt;Ironically the main reason I chose this language in the first place is its expansive built-in support for basic graphics stuff. I COULD use a Java game library (like lwjgl) but that would mean reams and reams more of API to trudge through. So once again, I have restarted the same game project, and am faced with my failing as a Java programmer. I have tentatively started the classes, named a few variables, outlined what is inhereted from what, all while struggling to remember exactly how all this works. Someday I will beat this language. Someday.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-7984138335677632160?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/7984138335677632160/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=7984138335677632160' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7984138335677632160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7984138335677632160'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/java-just-is-not-my-bag.html' title='Java Just Is Not My Bag...'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-3295656063281108097</id><published>2008-06-14T21:13:00.000-04:00</published><updated>2008-06-22T11:14:23.448-04:00</updated><title type='text'>Terrible Game Analysis</title><content type='html'>I fired up Resident Evil: Code Veronica X again for the first time in a while in the hopes I would be able to make some progress and got so lost and frustrated I ended up starting the game over again and pulling up a full walkthrough. Honestly, I don't think I got very far overall, and during my second play through attempt once again shut down the game in total frustration.&lt;br /&gt;&lt;br /&gt;&lt;strike&gt;This game is largely toted as the worst in the popular game franchise, and was the last of the "classic survival horror" style entries (which RE defined) before Capcom went for a more modern, action style with Resident Evil 4.  It is not at all unlikely that the complete revamp was due to the failure of this game.&lt;/strike&gt; I completely forgot about Resident Evil 0, THIS was a terrible game that marked the end of the traditional survival horror gameplay for the series.Without falling into the pit of ranting too much, I wanted to pinpoint what exactly it was about this game that made it so unbearably frustrating.&lt;br /&gt;&lt;br /&gt;This really isn't obvious at first glance; CV sticks very closely to the traditional gameplay style pioneered by the older entries, including the tank controls, fetch quests, and file reading. The level design is dominated by large mansions, labs, and a few outdoor areas, once again in keeping with earlier titles, though it was far more expansive than the previous three. Here's an initial issue: the level design is almost too expansive for it's own good. Like the original RE, you get an overhead floor plan of the areas you're in, but unlike the original RE, you're not limited to an extremely compact area, and quite frankly, none of the rooms are shaped oddly enough to provide landmarks of sorts. Every room is a different sized square. This does not translate into a useful map.&lt;br /&gt;&lt;br /&gt;Along these same lines, each one of the rooms was just non-descript enough that I could never seem to remember what was in each one or where it led. To make matters worse, the sheer amount of them made them just blend together; there was never a point where I felt like I had a real idea of where I was going. The original RE technically "looked" all the same, but once again the fact that the area was so severely limited allowed the player to absorb where all the doors led. RE4 deals with its impressively expansive areas by making each one look different and providing an extremely helpful map (besides being exceedingly linear). &lt;br /&gt;&lt;br /&gt;Naturally fetch quests were a cornerstone of the series, but CV took this to such a ridiculous extreme that the entire game felt like nothing but one gigantic fetch quest party with a few zombies tossed in to provide some kind of challenge (as if the level design didn't make it hard enough). The fetch quests and puzzles in the original RE were silly, yes, but they at the very least made a small amount of sense within the context; you had to find a book to place with other books to open stairs up, or use the clues on the wall to mix the exact right chemicals to kill the evil plant zombie. You were never at any point needlessly loaded down with too many fetch quests at once either. Code Veronica has you picking up emblems, plates, useless guns, insects made out of jewels, and various other pieces of junk at every turn. At the point I quit the game the first time I had a painting, two "proofs", a plate, and various other pieces of ridiculous brika-brack in my magic chest. To be honest, this was, in fact, the main reason I quit; I was faced with a pile of various junk that needed to be placed in their various respective holes in the game, and the thought of not only having to retraverse the areas to get it all there, make return trips because my carrying capacity was so low, all while painfully low on health with very little ammo to keep zombies at bay and no hope of finding any more health items...this was too much for me.&lt;br /&gt;&lt;br /&gt;Just to be fair there are a few good elements; the main character is actually pretty cool (I don't care what anyone else says I like Claire), the combat knife is the most useful anyone ever gets in the entire franchise, and that chick can take an ungodly amount of damage. I mean, she's a fucking TANK. The plot, although it was pretty weak even for a Resident Evil game, still provided some extremely amusing elements (cross-dressing insane main villain) and some important plot points for later games (Wesker being all un-dead and self-elected main villain for the series from this point on). So I suppose in some ways it's not a total loss. It's just unfortunate that, if the level design and fetch quests had been more fine-tuned, the game really wouldn't be half bad.&lt;br /&gt;&lt;br /&gt;To sum up, the terrible plot elements, characters, and voice-acting can all easily be forgiven if only the game itself is FUN. Code Veronica manages to make you feel like you're working, not playing an enjoyable video game. And this is its ultimate downfall. When your players quit the game in frustration then you've failed them in a huge way. Fortunately, after RE0 ended up being even worse than CV, Capcom got the message and now RE is (argueably) getting better with each new installment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-3295656063281108097?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/3295656063281108097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=3295656063281108097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/3295656063281108097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/3295656063281108097'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/terrible-game-analysis.html' title='Terrible Game Analysis'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4789724896286002929</id><published>2008-06-14T16:57:00.000-04:00</published><updated>2008-06-14T17:26:26.288-04:00</updated><title type='text'>The Return of Wheel Bird and Dog (?)</title><content type='html'>Even though I know it's a HORRIBLE idea to start thinking about new game concepts while working on another game (only because I have the worst track record of finishing projects and I really want to finish BioWar), I realized as I was trying to figure out the assets problem that I had a large library of potential assets for another game...The Official Wheel Bird and Dog game.&lt;br /&gt;&lt;br /&gt;People who were not friends with me my first years of college will not be aware of this odd artistic expression that was a fairly substantial part of my life for a few years. It consisted of a crudely drawn dog and purple ibis bird (who did, indeed, ride a wheel contraption around) who were always on the hunt for barley to make mead (despite the fact I discovered later that mead was not made out of barley). Other reoccurring characters included The Mighty Ferret of Girth (an ultra-sized ferret that only made "dook dook" noises), and various other random creatures that did various other things (other favorites of mine were Crack Horse and Bong Monkey, a large tegu whose name I can't remember, and an anoexic cat).&lt;br /&gt;&lt;br /&gt;The "comic" ran long enough that I (reportedly) released two trade paperbacks including 10 (or 20?) comics apiece. I wish I could be more accurate with all this but I'm far too lazy to dig it all up. All the comics were scanned onto my computer and posted to a hand-coded website on my Ball State webserver for all my friends viewing pleasure when I was just starting to really get into the internets.&lt;br /&gt;&lt;br /&gt;Anyway, enough remenicing. Summery of this story is I still have all this on that server, and I could very easily cut out the characters and produce .pngs and what have you for the sprites. I'd need to think of an original concept for the game, since I wouldn't want it to just be a cookie-cutter platformer, but I'm thinking this would be an excellent basis for a casual game like I was talking about in my earlier post (&lt;a href="http://happycodemonkey.blogspot.com/2008/06/ruminations-on-casual-games.html"&gt;Ruminations on Casual Games&lt;/a&gt;). This is going into the idea bin, there could be more later.&lt;br /&gt;&lt;br /&gt;**EDIT: I just remembered the tegu's name was Pom-Pom. He was Dog's pet and liked to eat dirty goth kids at Nine Inch Nails concerts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-4789724896286002929?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4789724896286002929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4789724896286002929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4789724896286002929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4789724896286002929'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/return-of-wheel-bird-and-dog.html' title='The Return of Wheel Bird and Dog (?)'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8243990743243687113</id><published>2008-06-12T10:48:00.000-04:00</published><updated>2008-06-12T11:06:42.742-04:00</updated><title type='text'>Here's a crazy change of pace....</title><content type='html'>The first (and only) project for my CS 570 class (Theory of Computation) was to write a parser for a context-free LL(1) language made up by our instructor. I won't get into the specifics, but this was the basic structure of my entry: use a function for each non-terminal, and only check for the first of the "right hand side" of each grammar rule. I made the very easy and glaringly bad decision to declare a global token variable, which was modified directly by every function. So, essentially, there was just the one variable and each function got to check it out when it was its turn. This was especially cringe-worthy in the do-while loops; if the token was equal to a specific character at a specific point in time, it would jump into the "do" part. The functions in the "do" would modify the token, and then it would be checked at the end in the "while" section. Then it would act accordingly. This makes me cringe...&lt;br /&gt;&lt;br /&gt;Because I'm a ridiculous nerd, I rewrote the program to utilize local char variables passed between the functions (easy as cake). This was certainly something I should have done in the first place, but I'm not too overly concerned about it, since I still managed to get an A on the project.&lt;br /&gt;&lt;br /&gt;Here are &lt;a href="http://cmarnold2.iweb.bsu.edu/parserProject.cpp"&gt;the original project&lt;/a&gt; and &lt;a href="http://cmarnold2.iweb.bsu.edu/parserProject2.cpp"&gt;the updated version&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I started working on a third version that optionally takes a file name as an argument when you invoke the program, reads the file, and then parses the sentences accordingly, but this modification will require more insight. &lt;br /&gt;&lt;br /&gt;What's the moral of the story? The first project took me about 2 hours to do, I half assed it, and even though it worked, I still feel like I could have done better if I had taken the time to work on it a little longer and put a little more work into it. I also like consistently trying to improve on my older work even when the projects are, at best, trivial (or, in this came, seemingly trivial with applications to far less trivial projects, ie compilers). Practicing the basics never ever hurts, as long as you are able to move on and work on something more substantial and don't spin your wheels over return types, etc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8243990743243687113?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8243990743243687113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8243990743243687113' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8243990743243687113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8243990743243687113'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/heres-crazy-change-of-pace.html' title='Here&apos;s a crazy change of pace....'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8032265309977884981</id><published>2008-06-12T08:53:00.001-04:00</published><updated>2008-06-12T08:53:26.926-04:00</updated><title type='text'>Lengthy To-Do List</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Due to my horrible work schedule and the general feeling of exhaustion resulting from it, I haven't had the time or even really the desire to work on BioWar lately (that's the really lame working title) so in an attempt to motivate myself, here is a list of basic gameplay elements I need to implement:&lt;br/&gt;&lt;br/&gt;1) Resources: I currently have get and set functions for this, but I need to design the system in which these are obtained.&lt;br/&gt;&lt;br/&gt;2) Unit stats: I haven't yet set some basic specs for the units; after doing that I'll need to do some basic play-testing to ensure there will be some sort of balance. The main reason I haven't even started doing this yet is I still have to define what certain stats mean, ie what exactly does speed mean in terms of game-play? &lt;br/&gt;&lt;br/&gt;3) GUI: I still haven't decided how the game will even look (which can most certainly come later). I don't currently have any assets I could use to create a GUI, so I may have to rope in someone else to do basic graphics for me. It's either that or ASCII art.&lt;br/&gt;&lt;br/&gt;4) Battle: The battle system must be designed and implemented; this will come in parallel to the stats tweaking, even though essentially the two will be independent.&lt;br/&gt;&lt;br/&gt;Getting through this one chunk at a time won't be too much of a challenge, though getting motivated to actually DO it will be. Too much Team Fortress 2 doesn't make for a very productive code monkey. &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/5563106149149911149-8032265309977884981?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8032265309977884981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8032265309977884981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8032265309977884981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8032265309977884981'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/lengthy-to-do-list.html' title='Lengthy To-Do List'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1130009829638564761</id><published>2008-06-08T18:14:00.000-04:00</published><updated>2008-06-08T19:21:10.630-04:00</updated><title type='text'>Ruminations on Casual Games</title><content type='html'>There has been quite a bit of talk the past couple of years about the growing casual games industry. Although previously most casual games were purely free Flash or Java based internet games, Nintendo has started an annoying trend of trying to cater directly to this so-called "casual" crowd with their newest consoles (most specifically the Nintendo DS and the Wii). To the absolute chegrin of "real" gamers (ie people who actually CARE about video games), both consoles, especially the Wii, are drowning in what is commonly referred to as shovelware: pet and baby care sims (insulting games for the little girl tween market that requires its own angry post), movie tie-in games, and so on, each one with a lower production value than the last.&lt;br /&gt;&lt;br /&gt;So here's the biggest question for any developers: what, exactly, constitues "casual" gaming, and what can we do to accomidate this elusive market with extremely fun, high quality games? And are people ignoring the fact that many so-called "hardcore" games could, in theory, be fantastic casual games?&lt;br /&gt;&lt;br /&gt;Well okay...a casual gamer...a few things come to mind:&lt;br /&gt;1) not interested in getting into a game too deeply (ie want to play quickly and be done with it)&lt;br /&gt;2) not interested in spending lots of money on equipment or games&lt;br /&gt;3) not interested in getting involved with the culture around a game (outside of maybe a casual MMO such as RuneScape); if there IS a culture it needs to be completely casual as well&lt;br /&gt;4) zero learning curve, but there is room to allow for increased difficulty or it could get boring, even in a short amount of time&lt;br /&gt;&lt;br /&gt;There are a few examples of more "hardcore" games that could easily be considered more casual, or have elements of casual games, except for a few key issues. Team Fortress 2 has excellent class balance, and is extremely condusive to pick-up-and-play. Play the Pyro and you're guaranteed to at least enjoy yourself, even if you're terrible at the game. The problem? Same as all online multiplayer FPSes...the culture that has built up around it can be extremely harsh and unforgiving, which is not something casual gamers are prepared to deal with, nor should they have to. Portal is another excellent example; they story and atmosphere are very fun, and the puzzles are challenging. The fact that it is very rare for the character to die is also very appealing. The problem with this game is that, although you learn new skills in each level, it's very hands-off in term of instructions, and even after blowing through the main game I had huge problems getting through the very intense and challenging boss battle. Katamari Damacy, Ratchet and Clank....the list goes on.&lt;br /&gt;&lt;br /&gt;So say we have a game similar to TF2 or Portal...an online mutiplayer game with a strong focus on fun, maybe some puzzles, doesn't have to be a first person shooter. The first move would be to make the controls absolutely transparent, possibly with a pull down menu in the corner and can easily be dismissed and turned off (this is another issue with TF2, the keyboard commands can get confusing for any but the most hardcore FPS player). Since it's an online multiplayer game, the environment should be more condusive to teamwork (a la TF2) with less emphasis on destroying the other person (even to the point where the "adversary" is a computer like in Portal). Along these same lines set up very strict etiquitte rules for servers, or make it very easy for someone to turn off communication and to play on a private server or alone, and allow players to easily message admins about players breaking these rules.&lt;br /&gt;&lt;br /&gt;Anyway, this post is quickly turning rambling; I may run with this and try to post a real design later. The casual gamer market is quickly becoming very important, mostly due to the fact that it is obviously becoming very profitable. With more care and planning, all casual games could easily be elevated to the level of "gateway drug"...games as high-quality, but low-cost as Katamari Damacy that make people realize how fun video games really can be (as an interesting side-note I think Katamari would have sold much better if it had been marketed more as a casual game, but unfortunately it was released on PS2, and before the Wii or DS). Check back for a possible design later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-1130009829638564761?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1130009829638564761/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1130009829638564761' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1130009829638564761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1130009829638564761'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/06/ruminations-on-casual-games.html' title='Ruminations on Casual Games'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-4374560995993993267</id><published>2008-05-25T13:18:00.001-04:00</published><updated>2008-05-25T13:18:27.375-04:00</updated><title type='text'>Design Challenge: MMORPG for Children</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;An adult, 18 years or older, must be the one to set up the account. This registrant would be in charge of all account administration, including assigning "levels of trust" to other players.  This would probably be most easily accomplished by setting up a control panel within an internet homepage for the game.&lt;br/&gt;&lt;br/&gt;The "levels of trust" would break down as follows:&lt;br/&gt;Level 1 is a stranger, the child and the other player would have no way whatsoever to communicate. &lt;br/&gt;&lt;br/&gt;Level 2 are players the child is in a group with. Their communication is extremely limited; the child will have access to an easy to navigate, very limited menu of pre-determined&lt;br /&gt;sentences, expressions, and emoticons. Any communication within the group will be displayed to all group members. Groups must be set up by an adult, and a child cannot join the group unless the player who started it is at least a Level 3. Blocking will not carry over; the adult should be warned if the group contains blocked players.&lt;br/&gt;&lt;br/&gt;Level 3 is a friend the adult added. The child can choose to communicate directly to them by clicking on them, but only through menus. The menus will include a larger variety of more detailed sentences and emoticons for the child to choose from than the group menus.&lt;br/&gt;&lt;br/&gt;Level 4 is a completely trusted friend. The child can initiate individual messaging (IM will have an extremely powerful language filter) with this player. &lt;br/&gt; &lt;br/&gt;All these levels can be granted and removed at will by the adult controlling the account. The adult can also choose to block certain characters and/or all Level 1 players. A blocked character will not even be visible to the child, and the child will not be visible to the other player. Being in a group together instantly raises up a Level 1 player to Level 2. If there is an issue with other group members an adult can choose to petition the group leader to remove a player, petition the admins to ban the player, and/or simply remove the child from the group. Children should be free to join and leave approved groups at will at any point in the game. &lt;br/&gt;&lt;br/&gt;All conversations between the child and other players (including groups) will be logged and sent to the adult's account. The adult does not explicitly have to approve all conversations, but if they find something offensive, there should be a "report" link included, where an adult can contact an admin and outline their complaint. Any reported players will be blocked for the child, and their comments will be reviewed by admins to see if a banning is warrented.&lt;br/&gt;&lt;br/&gt;As a step to prevent adults from simply starting an account for their child and neglecting to monitor their actions, the account will be declared inactive and suspended if the adult does not log into their account's website at least once a week and/or if their unread communication logs reach over a certain point (say 100). &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/5563106149149911149-4374560995993993267?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/4374560995993993267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=4374560995993993267' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4374560995993993267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/4374560995993993267'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/design-challenge-mmorpg-for-children.html' title='Design Challenge: MMORPG for Children'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-5191469796743721442</id><published>2008-05-20T16:07:00.000-04:00</published><updated>2008-05-20T17:27:29.988-04:00</updated><title type='text'>Even More Detailed Game Design!</title><content type='html'>So after a few pretty heavy TF2 sessions last night (that game is a freaking time sink, I'll tell ya...) I started working on my game design again, and finally penned a fairly detailed "round cycle", as well as laying out a few battle details. I'm going to figure out a way to start play testing it here soon so I can work out all the stats (I'm assuming this will take quite a while). &lt;br /&gt;&lt;br /&gt;Basic round consists of:&lt;br /&gt;1) Sending out scouts (these will be human employees in all cases unless a faction has a controllable unit and chooses to send that out instead) to explore the area. Towns and other factions territories can be scoped out during this time.&lt;br /&gt;2) Selecting the number of units to dispatch for missions and choosing a target (either a town, another faction's army, or a faction's base)&lt;br /&gt;3) Send out your units to attack the target. Details on both battle with factions and town raids follow.&lt;br /&gt;4) Claim any territory won (ie claim resources, new bases, new troops, etc)&lt;br /&gt;5) Use resources and start again&lt;br /&gt;&lt;br /&gt;Battle Details:&lt;br /&gt;1) Controllable units must be explicitly assigned their first target. They will continue to attack this target until either they die or their target dies. They cannot be re-assigned to a new target, only told to retreat if necessary. If they manage to kill their first target, they will simply move onto the next closest target.  &lt;br /&gt;2) Swarm units (ie non-controllables) merely attack whatever is closest. They cannot be called to retreat and cannot be given explicit targets, just "dropped" in a specific area to do damage.&lt;br /&gt;3) After a battle all surviving units are "healed" back to full health.&lt;br /&gt;4) After a battle the dead units are all transferred to the winning side as either new units or resources, if the faction requires corpses.&lt;br /&gt;&lt;br /&gt;Town Raids:&lt;br /&gt;This will be the primary way most factions get their resources, with the exception of the Juggernaut faction. Humans, food, water, animals, weapons, armor, and money are all obtained in town raids.  &lt;br /&gt;1) If the faction does a town raid, they cannot choose to do a battle phase for the rest of the round. The humans of the village can do minor damage, so units need to collect resources, heal, and make use of the resources they obtain. Raids can be just that, raids, or can eventually lead to the destruction of the entire town. At this point, if the town is stripped of all resources (including inhabitants), the faction can choose to build a new base here. &lt;br /&gt;2) The first faction to raid a town effectively "lays claim" to the village. In this case, if an opposing faction chooses to raid the town, they will have to first engage in battle with the claiming faction in order to run them out. At this point they would now have claim to the town. This, again, continues until all the resources in the town are exhausted, leaving the final claiming faction in charge of the land. &lt;br /&gt;3) The claiming faction can choose to engage in battle over the land, or, if they are not strong enough to stand up to the opposing faction, can choose to relinquish the land until they are stronger and can fight off the opposing faction.&lt;br /&gt;4) Naturally raids on other faction's bases are carried out in a similar fashion, except the resources obtained include the other faction's units (however many are at the base), and whatever other resources are being stored there at the time.&lt;br /&gt;&lt;br /&gt;That's about all I have laid out for now, I'm still piecing a lot together but it's moving along fairly well so I've been pleased with my progress. More updates as this develops.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-5191469796743721442?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/5191469796743721442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=5191469796743721442' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5191469796743721442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/5191469796743721442'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/even-more-detailed-game-design.html' title='Even More Detailed Game Design!'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-144551062062534847</id><published>2008-05-19T20:33:00.000-04:00</published><updated>2008-05-19T20:51:49.607-04:00</updated><title type='text'>Game Update: It's All In The Design</title><content type='html'>After discussing my ideas with Micheal, I've modified the game design quite drastically. It's still a zombie RTS affair, but he suggested developing factions, and after having a lively discussion about it, I felt this was the best (and most fun) way to go.&lt;br /&gt;&lt;br /&gt;So right now I have the following factions: Bio Zombies, Voodoo Zombies, Parasite Zombies, Juggernauts, and Survivors (ie humans). Each faction outside of the Juggernauts, and to a certain extent the Survivors, also can have animal units which have higher speed and strenghts, and whose stats can be transferred to the base units if they infect a human (or attack a base unit). Half the units are controllable and half are not.&lt;br /&gt;&lt;br /&gt;Right now I need to really sit down and write out the ruleset, another thing Micheal has been exceedingly helpful with since he's a big RPG/RTS guy. I've been looking to Magic: The Gathering and D&amp;amp;D for help in this area, since my experience with these types of games is horribly limited. I'll probably read over the Starcraft manual too, though I'm unsure if it will have the kind of detail I'm looking for.&lt;br /&gt;&lt;br /&gt;Despite the fact the design process is going to take quite a while, I've got a pretty good start on this; the coding gets easier with each new project. I've possibly mentioned this in my previous post, but I'm going to do the game in C++ first then try to port it to Lisp later on.&lt;br /&gt;&lt;br /&gt;Hopefully I'll have more updates on a fairly regular basis as the project progresses.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-144551062062534847?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/144551062062534847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=144551062062534847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/144551062062534847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/144551062062534847'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/game-update-its-all-in-design.html' title='Game Update: It&apos;s All In The Design'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-194779826904268828</id><published>2008-05-16T09:59:00.000-04:00</published><updated>2008-05-16T10:38:00.041-04:00</updated><title type='text'>Basic Outline of a New Game Idea</title><content type='html'>I came up with this while joking with my friend about what kinds of video games I'd like to make (my answer was "one with zombies and kittens. Oh yeah, I'd like to do an RTS and/or RPG as well"). &lt;br /&gt;&lt;br /&gt;Genre: Combination RTS/RPG. There is leveling involved, as well as organized battles.&lt;br /&gt;*Start with just AI enemies&lt;br /&gt;*Look into adding networking later&lt;br /&gt;&lt;br /&gt;Premise: The player is a bioweapons developer for a warlord. There are many warlords with their own bioweapons developers in different parts of the world, which effects the kind of specimens you have to experiment on. For example, although naturally you'll always have humans around, a Russian nation would also have bears, wolves, etc. Humans are "stock" weapons and won't be as powerful as an equivalent animal weapon.&lt;br /&gt;&lt;br /&gt;As the developer you are tasked with creating the superior virus for infection. You must collect samples, mix and match, and experiment. Your weapons can be put into battle, where they will either succeed (allowing your weapons to level up and giving you access to your enemies weapons) or fail (resulting in you going back to square one, either because your weapons die or get taken by the opposing force). The developer can take samples from a successful bioweapon to produce new bioweapons, and once again are able to mix and match new viruses with the new samples to produce even better new stock. However, of course, this is limited by both a level cap and the number of times you can actually take a sample from a single weapon. Details on this still need to be worked out.**&lt;br /&gt;&lt;br /&gt;**(I'm not claiming this idea is at all original, but I haven't really seen much that follows this idea...though apparently there is a Half Life 2 mod called &lt;a href = "http://www.zombiemaster.org/"&gt;Zombie Master&lt;/a&gt; that has a slightly similar idea. Naturally a lot of credit goes to the Resident Evil franchise as well.)&lt;br /&gt;&lt;br /&gt;The programming language will likely be either Lisp (leaning towards this) or C++, maybe both if I'm stupid enough to not want to sleep ever. Unless I can find either an EXCELLENT sprite making program or someone to design sprites for me, this game will likely be text based, as I'm not a graphics person and not at all interested in trying to figure out the graphics end of it. I'm going to try and rope in my sister, but I'm not at all confident she'll be able to help in any capacity outside of drawing me some great pictures, since as far as I know she doesn't know how to do game graphics either. Updates on this as they come, I need to start designing it soon though or I'll lose interest and never get going.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-194779826904268828?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/194779826904268828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=194779826904268828' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/194779826904268828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/194779826904268828'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/basic-outline-of-new-game-idea.html' title='Basic Outline of a New Game Idea'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-7766277436619097939</id><published>2008-05-15T10:46:00.000-04:00</published><updated>2008-05-15T14:55:12.830-04:00</updated><title type='text'>Gooeys and...Something Clever About Usability</title><content type='html'>The other day I wandered into my boss's office and she was showing me the new system that showed her how many appointments were scheduled for the testing labs throughout the month.  She was complaining that the new system did not have a way for her to view the name of the students who had made the appointments, and overall it looked like the interface was highly confusing and unproductive. &lt;br /&gt;&lt;br /&gt;At the risk of not being very descriptive, the screen is basically set up with a toolbar frame to the left hand side where the lab and date could be selected.  The rest of the screen was occupied by what resembled a weather radar...a month was shown as a line of days, one on top of the next, and the appointments showed up as colored blocks in each strip.  The color indicated the amount of appointments at the moment; ie, white for none, blue for 1 to 3, etc.  I was marveling at this, more because it was so overtly unnecessary for the task she needed to do: just see how busy a lab was going to be on a specific day.&lt;br /&gt;&lt;br /&gt;Having just finished an excellent GUI class recently (my mind is clear enough to realize how good it actually was), I began thinking quite a bit about, first of all, how would one effectively display information like this in such a way to be easily accessible, understood, and useful to the user and, second of all, what the living hell possessed the programmers to change it the way they did (BSU in-house applications in general is a UI nightmare, but I'll get to that in a moment).&lt;br /&gt;&lt;br /&gt;As an exercise, what are the tasks necessary for this kind of application, at its very core? Display data based on reservations made in a lab.  How should this be displayed?  Would it be easier to do a day by day or have a full month?  Or even a year?  We would certainly want to accommodate for at least three levels of view: daily, monthly, and weekly.  How detailed would the information need to be for each of these views?  If you're looking at daily you'll certainly want to see specifics: names, times, etc.  This would be easily filtered by lab selection, as well as narrowing down the time span to search.  Weekly...less detailed.  Just indicate the number of appointments each day, allow for filtering by lab.  Monthly...I could see that as just a larger weekly view, but this could arguably be made even less detailed. &lt;br /&gt;&lt;br /&gt;In the long run how the month view would completely depend on how the day and week view were formatted.  Just having a calender would seem to make sense immediately, but considering it for a second makes the flaws in this obvious; regulating so much information to such a small space would make it quickly unusable.  You could also, rather than organizing it by date, organize it by lab.  But this again could be difficult because it is less intuitive to navigate by lab than by date.  Limiting the view to a specific lab would also be too restrictive in many ways. &lt;br /&gt;&lt;br /&gt;Anyway, just food for thought, I'm incapable of designing something like this off the top of my head, but I may sketch up something later just to do it.  This all got me thinking about another issue with Computer Science in general however...it's so focused on the theory that, when it comes right down to it, many CS people don't really know how to make USEFUL software for people.  I'm sure the codebase is (fairly) solid with these in-house apps, but the fact is usability was obviously not even on their radar.  Having to help lab patrons schedule an appointment is a nightmare in more ways than one.  I also faced an interesting issue during finals week; when pulling up a patron's list of lab appointments, it went past the end of the tiny window.  Not only was there no scroll bar, the window couldn't be resized.  Fortunately the Page Down button still worked, but the first time this happened I was completely thrown.  What's the point of displaying information like this when you can't easily see ALL the information? &lt;br /&gt;&lt;br /&gt;During my GUI class I'll be the first to admit that I was one of those "I just want to code something" people.  CS people, and coders in general, are like that a lot of times...they're so busy imagining the back end that the front end is just slapped on at the finish.  Even the lab appointment display showed this hastiness and disregard; the coder obviously spent all his time focused on HOW he could make the UI look that way, and didn't stop to consider if it SHOULD look that way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-7766277436619097939?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/7766277436619097939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=7766277436619097939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7766277436619097939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/7766277436619097939'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/gooeys-andsomething-clever-about.html' title='Gooeys and...Something Clever About Usability'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1694292606991643357</id><published>2008-05-12T18:47:00.000-04:00</published><updated>2008-05-16T10:28:01.846-04:00</updated><title type='text'>HackerTeen: O'Reilly Media's New Graphic Novel For Teens Who May Fancy Themselves as Hackers</title><content type='html'>I recently got the opportunity to get advanced copies of a new graphic novel by O'Reilly Media called &lt;a href = "http://www.oreilly.com/catalog/9780596516475/"&gt;HackerTeen&lt;/a&gt; (I know you didn't gather this from the title), whose intent is to inform teenagers with an interest in computers/hacking of various computer/hacking topics in the hopes of making them more responsible computer users/hackers. &lt;br /&gt;&lt;br /&gt;The plot is actually rather involved for a (seemingly) short graphic novel; after joining the HackerTeens, protagonist Yago has to juggle his responsibilities to his school and his family, and in an effort to help out financially at home, gets dragged into the middle of a sticky legal and social situation.  In the meantime his mentor and teacher, HackerIP, is also facing legal repercussions of Yago's actions, as well as fighting various invasive technologies from being adopted by the government.  This is, to be frank, an awful summery; the plot, as I mentioned, is very involved and, although everything does fit together and revolves around the protagonists and a few (as yet not officially introduced) shadowy villains, there seems to be multiple layers and threads to the story.  I can certainly see the advantage to this, since the quickly shifting plot line makes for a rather exciting read, but at the same time I felt there was almost too much going on at once.&lt;br /&gt;&lt;br /&gt;Then again this is literally the single negative comment I could make about this book; there is certainly lots and lots to like.  Yago is introduced as a frustrated and bored student with a fascination with the computer, an attitude I could most certainly remember having in high school.  His parent's frustration and confusion with his obsession was, once again, strikingly similar to how my own experience.  After being encouraged to follow his passion, Yago's attitude makes a quick 360, and the rest of the novel establishes him as an enduring and positive role model. &lt;br /&gt;&lt;br /&gt;Just to mention quickly, the art style is an interesting mixture of Nicktoon and Final Fantasy; very bright and animated (to use a cliche, not very descriptive term) with exaggerated hair styles and bizarre (if questionable) fashion choices for the main characters.  The panels flow into each other and are not clearly defined, all of which is very appropriate considering the plot and subject matter, but I have to again mention led to some confusion on my part as to what exactly was going on.&lt;br /&gt;&lt;br /&gt;Last but not least, of course...since this book was published by O'Reilly Media there is a certain expectation that the material is going to be highly informative and intelligent, and HackerTeen does not disappoint.  As a computer nerd who wasn't able to really explore computers until college, I was deeply impressed with how straightforward the references were.  Linux, open software, and just general internet terms are thrown about in a completely non-condescending manner; rather than boring readers with a block of text as footnotes, links to the &lt;a href = "http://www.hackerteen.com/"&gt;HackerTeen website&lt;/a&gt; are liberally sprinkled about to provide a starting point for teens interested in exploring the topics mentioned.  When diving into the computer world head first nothing is more helpful to the novice than a reputable starting point in the middle of a metaphorical ocean of information.   Unfortunately at the time of this writing the site is not quite finished yet, I'm looking forward to seeing how the referenced webpages will be set up (hopefully there will be very meaty related-links sections).  The highly responsible use of the word hacker was especially refreshing, and the comic did an excellent job of still making so-called "white hat" hacking look engaging, as well as showing how "black hat hacking" has negative consequences without getting overly preachy and contrived.&lt;br /&gt;&lt;br /&gt;I wish that HackerTeen had been around when I was in middle school; this is exactly the kind of story and subject matter I would have devoured, and probably would have given me a better head start on my own computer career.  Opening up the computer culture to 14 year olds is certainly not as easy task, especially since the public in general (ie parents) appear to be woefully ignorant of...well...anything involving computers.  For lack of a better way to end this, I'll just say this graphic novel comes highly recommended for teens with an obvious interest in computers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-1694292606991643357?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1694292606991643357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1694292606991643357' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1694292606991643357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1694292606991643357'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/hackerteen-oreilly-medias-new-graphic.html' title='HackerTeen: O&apos;Reilly Media&apos;s New Graphic Novel For Teens Who May Fancy Themselves as Hackers'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-2611634032284636734</id><published>2008-05-09T14:09:00.000-04:00</published><updated>2008-05-09T16:35:44.834-04:00</updated><title type='text'>SDL_image is such a difficult child...</title><content type='html'>The past two days or so I've finally started doing some real coding with OpenSolaris, more in the hopes that I'd finally actually get some WORK done, but also with the intention of figuring out how well the system would perform with compilation and whatnot.  This morning I spent a lot of the day installing a few minor tools as well, and have been making attempts to get everything running together.&lt;br /&gt;&lt;br /&gt;The first task was to install GCC (which is an industry standard and, as I mentioned, should be included with a base install, but I'm not going to split hairs) using pkg install gcc-dev. Whoo, now I have gcc/g++.&lt;br /&gt;&lt;br /&gt;Second, installing nano.  I know plenty of people live or die by vi/emacs/whatever, but I have had nothing but trouble with vi every time I try to use it, so I went with the little baby text editor (had to install from source).&lt;br /&gt;&lt;br /&gt;Third...and hardest...getting SDL_image to link with my program.  The biggest issue I'm running into using this system is the fact that things are installed in /usr/local/whatever, while everything else is installed in /usr/whatever.  Just adding them to the $PATH in .bashrc worked for a few things, and I managed to get everything to compile without a hitch, but running was a whole new bag of fish.&lt;br /&gt;&lt;br /&gt;Every time I try to run it, I get "SDL_image library not installed, die immediately" errors.  Unfortunately I couldn't seem to figure out where to add the library path...not as simple as adding an include path here and there.&lt;br /&gt;&lt;br /&gt;Enter crle.  Apparently this little utility is used to modify the library search path. I read over the man page a little bit, then tried to add the search path using the command crle -l /usr/local/lib...Bad.  Idea.  &lt;a href="http://blogs.sun.com/rie/entry/changing_search_paths_with_crle"&gt;Read here, this is exactly what happened.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, long story short, ultimate fail.  Fortunately I'm no stranger to re-installation.  Hopefully more updates later, once my world is fixed.&lt;br /&gt;&lt;br /&gt;**UPDATE**&lt;br /&gt;&lt;br /&gt;I took the opportunity afforded me by a full reinstall to give my system a little more room to breathe, with an upgrade to a full 35 GB HDD space (the main reason I wiped rather than just resetting everything as outlined in the above website).  After doing this I read the above linked page (VERY carefully) and managed to set the correct load paths:&lt;br /&gt;&lt;br /&gt;#crle -u -l /usr/local/lib&lt;br /&gt;&lt;br /&gt;The paths can be verified with the following command:&lt;br /&gt;&lt;br /&gt;#crle&lt;br /&gt;&lt;br /&gt;This is an odd quirk of Solaris, but of course the OS can't be blamed for silly mistakes I made in configuration.  For the most part, with enough knowledge and google skills, getting comfortable with a new system's details really isn't too painful, though sometimes huge screw-ups are unavoidable.&lt;br /&gt;&lt;br /&gt;Finally, my compilation:&lt;br /&gt;&lt;br /&gt;$g++ -o Play Game.cc Level.cc Main.cc Pea.cc `sdl-config --cflags --libs` -lSDL_image -L/usr/local/lib&lt;br /&gt;&lt;br /&gt;Followed by:&lt;br /&gt;&lt;br /&gt;$./Play&lt;br /&gt;&lt;br /&gt;Unfortunately there are still bugs to be worked out...but for now I'm just happy to have made progress to the point where I can run things :P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-2611634032284636734?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/2611634032284636734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=2611634032284636734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2611634032284636734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/2611634032284636734'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/sdlimage-is-such-difficult-child.html' title='SDL_image is such a difficult child...'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-8568539881951198975</id><published>2008-05-07T10:43:00.000-04:00</published><updated>2008-05-08T12:56:52.440-04:00</updated><title type='text'>More Adventures in OpenSolaris</title><content type='html'>After successfully getting OpenSolaris up and running last night, I decided to test it in the one area I have been unsuccessfully struggling with while using Mac: SDL.  This is a pretty essential C++ game programming library in my opinion, so getting it to work in OpenSolaris was something I was anxious to try.&lt;br /&gt;&lt;br /&gt;Mac.  You are getting one warning, and one warning only.  OpenSolaris has SDL installed by default and automagically detects it with Sun Studio Express.  You are built on a BSD core, start acting like it, I've REALLY had it with these frameworks.  Seriously.&lt;br /&gt;&lt;br /&gt;Sun Studio Express was fantastic to use, which I expected since I'm a huge Netbeans fan, and this basically IS Netbeans, just with a C/C++/Fortran focus.  I did notice that I couldn't just build and run my app from the IDE right away, but this was rectified in seconds; all I had to do was specify -lSDL in the Additional Options field under the Command Line option in the Linker category of the Project Properties.  Whew!  (Believe me, it's easier to find that it sounds!)&lt;br /&gt;&lt;br /&gt;Although it is a fairly simple matter to get the application to build and run from within the IDE, it was trivial (and probably better in the long run) to build in the command line:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_qDFje_d9QI0/SCMwlmWNSuI/AAAAAAAAABs/gqCklVMpPX4/s1600-h/pic1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_qDFje_d9QI0/SCMwlmWNSuI/AAAAAAAAABs/gqCklVMpPX4/s320/pic1.jpg" alt="" id="BLOGGER_PHOTO_ID_5198051817422670562" 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;And now running!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_qDFje_d9QI0/SCMwuWWNSvI/AAAAAAAAAB0/606K5BMcEdU/s1600-h/pic2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_qDFje_d9QI0/SCMwuWWNSvI/AAAAAAAAAB0/606K5BMcEdU/s320/pic2.jpg" alt="" id="BLOGGER_PHOTO_ID_5198051967746525938" 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;All credit for this example goes to &lt;a href="http://lazyfoo.net/SDL_tutorials/index.php"&gt;lazyfoo's excellent SDL tutorial&lt;/a&gt; for the example and the pictures.&lt;br /&gt;&lt;br /&gt;Now I will openly admit, for the sake of full disclosure, that this is more of a rant against OS X than anything else.  I knew already that Linux is FAR better suited for real dev work, but being bullheaded as I was I wanted to try and get a full C++ environment working seamlessly for me, if for no other reason than to prove I could.  I spent literally hours upon hours trying to coax the Mac into working for me, while this example took me less than an hour.&lt;br /&gt;&lt;br /&gt;My less selfish and whiny motive was to simply show how easy it is to get up and running with simple game dev using SDL on OpenSolaris.  Anyone looking to start out with game dev should be looking at Linux/Unix in general.  In particular, if you're looking for a Linux/Unix environment that takes maybe an hour or so to get up and running and has everything you could need to do this dev work available to you with minimal extra installs, OpenSolaris is probably the way to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-8568539881951198975?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/8568539881951198975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=8568539881951198975' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8568539881951198975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/8568539881951198975'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/more-adventures-in-opensolaris.html' title='More Adventures in OpenSolaris'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_qDFje_d9QI0/SCMwlmWNSuI/AAAAAAAAABs/gqCklVMpPX4/s72-c/pic1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5563106149149911149.post-1435895604736471670</id><published>2008-05-06T22:11:00.000-04:00</published><updated>2008-05-08T12:55:23.927-04:00</updated><title type='text'>OpenSolaris, or How I Learned To Stop Fearing Virtual OSes and Installed Sun's New Solaris System</title><content type='html'>Tonight I spent a few hours with OpenSolaris, Sun Microsystem's newest Unix offering aimed at developers.  Just to be all technical about it, I installed the system on my Intel iMac using VirtualBox (my first, EXTREMELY positive experience with this application, also from Sun); 1 GB of system RAM and 16 GB of HDD space were delegated to it.  My previous experience with Linux/Unix/BSD includes Slackware, Red Hat, FreeBSD, Debian, and Arch Linux, so I'm pretty comfortable with getting down-and-dirty when I need to.  I took a lot of screenshots, so bear with my over-enthusiasm for pretty pictures.&lt;br /&gt;&lt;br /&gt;The first thing I did was boot into the LiveCD just to get a feel for how this system was going to work for me.  Although it booted slowly (to be expected with a virtual emulator I suppose), I was eventually greeted with an extremely clean, appealing Gnome desktop.  I have never been a huge fan of Gnome (I'm more of a Fluxbox user myself, I love ultra-clean), but I have to admit I was very impressed with the desktop.&lt;br /&gt;&lt;br /&gt;Here's a shnazzy shot of it running on my Mac!&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qDFje_d9QI0/SCMvv2WNSqI/AAAAAAAAABM/wI08MF5khHw/s1600-h/openSolarisLive.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qDFje_d9QI0/SCMvv2WNSqI/AAAAAAAAABM/wI08MF5khHw/s320/openSolarisLive.jpg" alt="" id="BLOGGER_PHOTO_ID_5198050894004701858" 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;I didn't mess much with the LiveCD, more because I was already planning to install the OS on my hard drive, so I didn't get a chance to explore how the LiveCD saves (or doesn't) live sessions.  I do, however, want to note that I couldn't get the wireless working even though it obviously recognized my card.  Another odd issue was with my sound card...not exactly necessary right now, but since my passion is game dev, this could quickly become an annoying issue.&lt;br /&gt;&lt;br /&gt;Anyway, now for the real fun: the installation!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qDFje_d9QI0/SCMv52WNSrI/AAAAAAAAABU/6sPMmqmNs-A/s1600-h/openSolarisInstall.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qDFje_d9QI0/SCMv52WNSrI/AAAAAAAAABU/6sPMmqmNs-A/s320/openSolarisInstall.jpg" alt="" id="BLOGGER_PHOTO_ID_5198051065803393714" 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;Unlike every other Linux OS I've ever installed this installation was a dream...if I remember correctly I went through maybe 3 screens total, and the next thing I knew the system was happily installing on my computer, as shown in the picture.  I'd complain again about the speed, but it's easily the fastest Linux install I've ever had, so forget I even mentioned it.&lt;br /&gt;&lt;br /&gt;After rebooting I set to work getting the system ready for my awesome coding skills, which basically includes making sure C++, Java, and a nice IDE are installed.  Somehow my internet magically started working as soon as I booted, which was a nice surprise, because I'm very sick of having to configure my internet on Linux systems. Just saying.  Unfortunately the sound didn't automagically fix itself, and I'm hoping getting it to work without too much hassle.  I also noticed that CDs and DVDs didn't seem to be mounted...though honestly I'm not sure if this is an issue with the OS itself or one with VirtualBox...another thing to explore at a later time.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qDFje_d9QI0/SCMwE2WNSsI/AAAAAAAAABc/WBNszcpSY6w/s1600-h/packageManager.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qDFje_d9QI0/SCMwE2WNSsI/AAAAAAAAABc/WBNszcpSY6w/s320/packageManager.jpg" alt="" id="BLOGGER_PHOTO_ID_5198051254781954754" 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;The one thing that did strike me as very odd was the fact that the GNU C/C++ compilers weren't pre-installed.  However, this gave me a chance to explore the Package Manager.  Overall package management is set up very similar to Debian, definitely a good thing because I felt that the package management was the main area where Debian shined.&lt;br /&gt;&lt;br /&gt;The two applications I immediately downloaded were Netbeans (hands down my favorite IDE), and, more out of curiosity, Sun Studio Express (through the ss-dev package), an IDE I had not heard about until now, but which I quickly realized was just Netbeans with a focus on C/C++/Fortran.&lt;br /&gt;&lt;br /&gt;Obligatory command-line shot, with both Netbeans and Sun Studio Express installed!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_qDFje_d9QI0/SCMwR2WNStI/AAAAAAAAABk/gp3xzvMiDD0/s1600-h/installBoth.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp1.blogger.com/_qDFje_d9QI0/SCMwR2WNStI/AAAAAAAAABk/gp3xzvMiDD0/s320/installBoth.jpg" alt="" id="BLOGGER_PHOTO_ID_5198051478120254162" 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;Overall I was deeply impressed with this system.  I'm looking forward to spending more time with it and trying some real development projects.  Although initially I was unsure whether I'd even bother keeping it installed on my Mac, since I have it set up for dev work as well as an Arch Linux and a FreeBSD system, the speed with which I managed to set up Solaris with some powerful dev tools has convinced me to work with this system regularly in my coursework.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5563106149149911149-1435895604736471670?l=happycodemonkey.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://happycodemonkey.blogspot.com/feeds/1435895604736471670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5563106149149911149&amp;postID=1435895604736471670' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1435895604736471670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5563106149149911149/posts/default/1435895604736471670'/><link rel='alternate' type='text/html' href='http://happycodemonkey.blogspot.com/2008/05/opensolaris-or-how-i-learned-to-stop.html' title='OpenSolaris, or How I Learned To Stop Fearing Virtual OSes and Installed Sun&apos;s New Solaris System'/><author><name>HappyCodeMonkey</name><uri>http://www.blogger.com/profile/18054380211647467224</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://4.bp.blogspot.com/_qDFje_d9QI0/SekRcK50ImI/AAAAAAAAADs/AJTIED41vZQ/S220/twitter.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_qDFje_d9QI0/SCMvv2WNSqI/AAAAAAAAABM/wI08MF5khHw/s72-c/openSolarisLive.jpg' height='72' width='72'/><thr:total>5</thr:total></entry></feed>
