<?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-18857666</id><updated>2011-04-21T14:28:24.209-04:00</updated><title type='text'>The Unpossible Programmer</title><subtitle type='html'>What drives a person to learn more about programming? I thought once that programming was simply a means to an end. It turns out that I was right, but not in the way I thought. Programming has become my passion, and I now invite others to sit back and dwell in the palpable excitement I wallow in on a daily basis.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-18857666.post-4358338024336635952</id><published>2007-03-23T22:21:00.000-04:00</published><updated>2007-03-23T23:42:07.139-04:00</updated><title type='text'>A New Year, A New Blog - A New Perspective?</title><content type='html'>Welcome back to unpossibility. It feels as if I never left.&lt;br /&gt;&lt;br /&gt;I was having fun just now looking over the few blog posts I did in rapid succession last year. Heh - sometimes I amuse even myself. Man, the thing I never realized about blogs is how you could look back and remember (as you read the old posts) the things that influenced you at the time you wrote them.&lt;br /&gt;&lt;br /&gt;Is anything different?&lt;br /&gt;&lt;br /&gt;Now I feel, well, &lt;strike&gt;inspired&lt;/strike&gt;. Hmmm. Not quite, but close...&lt;span style="font-weight: bold;"&gt;Confident.&lt;/span&gt; Yes, that sounds much more correct to me. I am more confident than ever, and truthfully, I'm not sure why. Maybe it was because a former manager left (he was more a friend and role model, than the obtuse connotation the word "manager" implies). Or maybe it was because a ludicrous tyrant was also sent packing. Regardless, I feel empowered and yes, confident.&lt;br /&gt;&lt;br /&gt;I know more programming languages and technologies than I can count with just my fingers and toes (which is impressive for me) and I know them all not just individually, but also how they all work together, better than anyone in my company. Arrogant? Yep. But you know what - I've earned that arrogance through 6 years of blood, sweat, and tears. And I challenge anyone to prove me wrong. *insert typical James sarcasto-sneer here*&lt;br /&gt;&lt;br /&gt;I'm going to try to make this blogging a weekly thing again, if only for the extremely selfish reason that I want to experience what I felt earlier tonight again this time next year. Will I finally be a broken man then? No more spirit or passion for programming, just a yes-man corporate tool?&lt;br /&gt;&lt;br /&gt;I suppose that could happen, but I'd rather learn more cool stuff and set myself further and further apart from those dreary souls lost amidst the stagnant mists on the isle of misfit toys.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. Wow, that was heavy, hunh? I'm going to take a break and play &lt;a href="http://en.wikipedia.org/wiki/Flight_of_the_Amazon_Queen"&gt;Flight of the Amazon Queen&lt;/a&gt;. Why not try it out in &lt;a href="http://www.scummvm.org/"&gt;ScummVM&lt;/a&gt; too? It's free, and I've been having a blast with it on Linux, Windows, and even my Pocket PC. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-4358338024336635952?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/4358338024336635952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=4358338024336635952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/4358338024336635952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/4358338024336635952'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2007/03/new-year-new-blog-new-perspective.html' title='A New Year, A New Blog - A New Perspective?'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114861238354725568</id><published>2006-05-25T22:37:00.000-04:00</published><updated>2006-05-25T22:59:43.556-04:00</updated><title type='text'>Linux and Tacos</title><content type='html'>I had a revelation today, while my wife and I were driving home from work. While not as revolutionary as the Flux Capacitor (hey - he fell off a toilet!), it still kinda struck me thunderbolt-ishly.&lt;br /&gt;&lt;br /&gt;Here's the deal. I never used to like Mexican food - I just have this thing about too many vegetable ingredients...anyways, I slowly came to the realization today that I'm actually beginning to like Mexican food, thanks to repeated visits to some restaurants near work. If you're daring enough (which I almost never am), and try different things, sometimes they grow on you. Right after this occured to me, I immediately thought of Linux. (leave it to a programmer to compare food and technology)&lt;br /&gt;&lt;br /&gt;For me, Linux has been alot like Mexican food; first, I was afraid to try it. But you know how it goes, a bunch of your friends like it, and you tag along for the company. Same thing with Linux, for years, I wasn't confident enough to even look into it. But then, one fateful day I was able to get ahold of an old desktop to experiment with. The first Linux OS I ever used was Redhat Linux 9.&lt;br /&gt;&lt;br /&gt;I was amazed at how similar it was to installing Windows 2000, except I had no clue about swap spaces and bashes. Slowly, ever so slowly, over the past couple of years (and versions and versions of Fedora Core, SuSe, Knoppix, and SLAX), I've tried more and more, and have begun to (I think) finally understand.&lt;br /&gt;&lt;br /&gt;Oh, and it's been frustrating. Many times things don't work - I normally blame it on my impatience and ignorance. But oh - those times when it finally does do what you want, I think I begin to feel what attracts all those Linux fanatics out there.&lt;br /&gt;&lt;br /&gt;It's almost like you &lt;span style="font-weight: bold;"&gt;personally&lt;/span&gt; make things go, because you have so much control over EVERYTHING the Linux system does. You open up your xterm, and suddenly the world is at your fingertips, via the simple blocky cursor. Know the right commands and you can do almost anything, and, fake or not, it really makes you feel like some movie-type mastermind.&lt;br /&gt;&lt;br /&gt;I wish I knew more about the kernel programming - I'd love to start my own distribution, specifically geared towards Java programmers. Perhaps you've seen my posts on the modularly-cool SLAX? Well, I just haven't been impressed with its stability; again, probably owe-ing to my lack of knowledge, or incompatibility with the hardware I have available, but I've had it hang on me for no reason, cut network connections, and not even boot. I just don't think its as well-rounded as Knoppix yet (which is, in my opinion, a truly exceptional piece of software - I just wish it was more easily customizable).&lt;br /&gt;&lt;br /&gt;I'll get there eventually, I hope. I'm just not sure if anyone will still be programming in Java when I do. ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114861238354725568?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114861238354725568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114861238354725568' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114861238354725568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114861238354725568'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/linux-and-tacos.html' title='Linux and Tacos'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114843697198612484</id><published>2006-05-23T21:59:00.000-04:00</published><updated>2006-05-23T22:16:12.000-04:00</updated><title type='text'>ASCII What?!?! Maps? Yeah, right.</title><content type='html'>I'm sure you've almost certainly heard of google maps, and the cool stuff they're doing using AJAX on the client side. And I agree, it's neat. But I stumbled across something today which absolutely blew my mind.&lt;br /&gt;&lt;br /&gt;I haven't seen everything that technology can do, but I have seen some really cool innovative stuff - and let me just tell you...what I saw today is the most bizarre, geeky thing I've ever seen: What is this peculiar modern marvel? &lt;a href="http://www.asciimaps.com/"&gt;&lt;span style="font-weight: bold;"&gt;ASCII Maps&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Let it sink in. ASCII - as in dashes, hashes and chain emails from the early 90's. And Maps - as in what you use to get directions. Yep, someone decided the world needed to view maps in ASCII.&lt;br /&gt;&lt;br /&gt;While the geek part of me (yes, it's the most dominant part) revels in the sheer enormity of planning and programming that had to take place to achieve this, the last 1% or so of me (which usually deals with a combination of rational thought and pity) wonders why anyone would WANT to do such a thing.&lt;br /&gt;&lt;br /&gt;Ah, well. I think it's fairly amusing, and pretty amazing. I just wonder what would have happened if all that planning were put into something more productive. Could they have put a stop to world hunger, or possibly established global peace? Maybe. Maybe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114843697198612484?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114843697198612484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114843697198612484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114843697198612484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114843697198612484'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/ascii-what-maps-yeah-right.html' title='ASCII What?!?! Maps? Yeah, right.'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114809404936541676</id><published>2006-05-19T22:39:00.000-04:00</published><updated>2006-05-19T23:00:49.376-04:00</updated><title type='text'>It's the Friday post of doom - muwhaha!</title><content type='html'>Man, I am just on a roll this week. After months of not blogging, I've had a bunch of entries this week. Unfortunately for you, today I don't really have anything too new. I previously wrote about how groovy SLAX linux is, maybe I'll just give you an update on how my experiments with it are going. Because it really is a simply amazing distro.&lt;br /&gt;&lt;br /&gt;I've talked about how I wanted a portable liveCD custom distro with all my fav java tools, and I think I have that now...so what next? Is a live CD really the best development environment? Is it fast enough? What about other uses - perhaps there's a way to make dynamic liveCD archives of PHP/MySQL websites? Who knows.&lt;br /&gt;&lt;br /&gt;The funny part is, I'm really not sure where this whole Linux thing is leading me - I just know its leading somewhere good. I'm also delving more deeply into some online CBT's for Linux+ certification (usually I sit through a rather boring textual CBT module on Linux, and then have actual fun trying the concept using SLAX!). I really can't say why Linux attracts me so, I mean, we don't even really make use of it all that much at work.  It's like it's the Holy Grail of Programming or something, and every piece of knowledge I get about Linux brings me one step closer to "it"; whatever "it" may be.&lt;br /&gt;&lt;br /&gt;More questions than answers in today's blog, I'm afraid. But hey, isn't that what a good writer is supposed to do - leave his audience wanting for more? Course, in my case, it's usually more about being so incredibly sarcastic I never really get my point across...I won't apologize for that though. :)&lt;br /&gt;&lt;br /&gt;Anywho, let's hope some super-chocolately innovation is lurking somewheres in the oft murky depths of Linux info I'm fangoriously devouring. When inspiration strikes, you'll be the first to know. Or, at the very least, the second or third. Eighth at most, I give you my word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114809404936541676?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114809404936541676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114809404936541676' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114809404936541676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114809404936541676'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/its-friday-post-of-doom-muwhaha.html' title='It&apos;s the Friday post of doom - muwhaha!'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114800814596780451</id><published>2006-05-18T22:43:00.000-04:00</published><updated>2006-05-18T23:13:10.033-04:00</updated><title type='text'>The Wonders of Pair Programming</title><content type='html'>"I am the greatest programmer ever."&lt;br /&gt;&lt;br /&gt;Ok, now that we have that out of the way - I should restate that as:&lt;br /&gt;"I am the greatest programmer ever. NOT!"&lt;br /&gt;&lt;br /&gt;I need help, and chances are, we all do at one time or another.&lt;br /&gt;&lt;br /&gt;I'm therefore incredibly thankful for the wonders of Pair Programming. Not "pear", as in "a succulent fruit", but "pair" as in "two (more than one)". Pair programming is one of the facets of Agile (or Extreme) Programming. (if you've never heard of either of these terms - look 'em up in Wikipedia!)&lt;br /&gt;&lt;br /&gt;But, just cause you're such an avid listener, I'll let you in on how my team at work makes use of Pair Programming.&lt;br /&gt;&lt;br /&gt;It's really just exactly like it sounds - two or more people programming at the same time, working on the SAME code. We normally use M$'s NetMeeting to share the desktop, and work from one person's computer.&lt;br /&gt;&lt;br /&gt;Duplication of effort, you say? I say "Nay."&lt;br /&gt;Wasted time, you query? I, again, say a haughty "Nay."&lt;br /&gt;&lt;br /&gt;The benefits we've seen from this technique are thus:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Increased knowledge sharing (getting away from the model where only one person knows how the guts work)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Increased speed of learning (it's a great way to foster the learning of a new language - pair up a more seasoned developer with a newbie, and they can learn a lot from each other)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;More flexible problem solving (we've all had those moments where we are working on something all morning by our lonesome, and the answer seems to lie just out of reach...pair programming is fantastic, because as you work through problems, you actually have another perspective just sitting across from you - the more different the personality/perspective, the better!)&lt;/li&gt;&lt;/ul&gt;We've actually found this to speed up the time it takes for us to develop projects; time spent before trying to bring other team members up to speed with code reviews is gone, time wasted trying and re-trying things on your own is gone, and hey - its a great way to build &lt;span style="font-style: italic;"&gt;synergy&lt;/span&gt; (the ickiest of the "Office cliche'").&lt;br /&gt;&lt;br /&gt;My sarcastic side note on &lt;span style="font-weight: bold;"&gt;Synergy&lt;/span&gt;:&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    &lt;/span&gt;&lt;/span&gt;I've had the great pleasure of working on a team for years that works extremely well together&lt;span style="font-style: italic;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt; - &lt;/span&gt;but not because we had synergy crammed down our collective throats from a manager. No, I think we've always worked so well together because we each want the same thing: to deliver the most creative, usable solution for our customers. Not because our cubicles are arranged in a certain way, but because we each genuinely CARE about what we do. I'm of the opinion that you can't teach innovation or creativity to people if they don't care about what they do - no matter how many silly innovation exercises they go to.&lt;br /&gt;&lt;br /&gt;If you take one thing away from this post - I hope it's this: that &lt;span style="font-weight: bold;"&gt;programming is a community-driven thing&lt;/span&gt;. If you isolate yourself from it, or from other programmers - no matter how different they are, you'll wind up creating something that someone else has already thought of.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P.S. Apologies to my college English teacher, who taught us never to use the word "thing" when writing. (He called them "icky, bulbous, gross objects" and told us to be more specific.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114800814596780451?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114800814596780451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114800814596780451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114800814596780451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114800814596780451'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/wonders-of-pair-programming.html' title='The Wonders of Pair Programming'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114792029139829680</id><published>2006-05-17T22:16:00.000-04:00</published><updated>2006-05-17T22:48:04.803-04:00</updated><title type='text'>"Open"ing Pandora's Box</title><content type='html'>Have you heard of &lt;a href="http://www.pandora.com"&gt;Pandora.com&lt;/a&gt; yet?&lt;br /&gt;&lt;br /&gt;Pandora.com is a nifty little web site that may just change how you discover music forever.&lt;br /&gt;&lt;br /&gt;Here's the low-down. There is a small, dynamic Flash application on Pandora.com that lets you make custom internet radio stations.&lt;br /&gt;&lt;br /&gt;This is insanely cool for three reasons:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;It works through a proxy for those of us "trapped" at work&lt;/li&gt;&lt;li&gt;You can enter in any artists you like, and it tailors the radio station to you&lt;/li&gt;&lt;li&gt;It was developed using &lt;a href="http://www.openlaszlo.org/"&gt;OpenLaszlo&lt;/a&gt; (didn't think I'd make a list without including something about programming, did ya?)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt; Just what the heck is OpenLaszlo? Well, for those techies out there - you know that Flash apps have historically been client-based (meaning very little, or no,  interaction with databases).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adobe.com/products/flex/"&gt;Macromedia (Adobe) Flex&lt;/a&gt; set out to change this by designing an architecture that allowed for dynamic Flash apps - not just apps that were based on dynamic page code (php, asp, jsp, etc.), but Flash apps that were actually compiled and run on-the-fly based on an xml spec. Which is a very cool idea, right? Oh, but wait; your IT budget is already stretched too thin, how could your team possibly shell out the bucks for Flex? (cause, coming from Macromedia/Adobe, its not going to be cheap).&lt;br /&gt;&lt;br /&gt;Enter OpenLaszlo - which does the EXACT same thing as FLex, but at no cost to you - the poor budgetarily-constrained programmer. Now THAT sounds good. But, hold on. This isn't for the faint of heart.&lt;br /&gt;&lt;br /&gt;Using OpenLaszlo (or its pricey counterpart Flex) means re-thinking how you design your web apps. We're not talking straight HTTP Request/Response models any more - OpenLaszlo apps can read in  XML from any source you can think of; SOAP (Web Services, etc.), dynamic XML built by ASP/JSP/PHP, static XML, SQLXML (SQL Server's implementation of SOAP), or anything else you can imagine.&lt;br /&gt;&lt;br /&gt;I haven't had a lot of time to try out OpenLaszlo, but I was able to get a fairly simple example working that was based on a Java EE back-end. Basically, my thought was that the Java EE stuff could take care of easily (and MVC-ily) providing any database data I'd need. Here's what I came up with:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Data tier, powered by factories/dao's using &lt;a href="http://www.jenkov.com/mrpersister/introduction.tmpl"&gt;Mr. Persister&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Business logic tier, utilizing Stateless Session EJB3.0's (in the latest version of JBoss4.0.3+)&lt;/li&gt;&lt;li&gt;Presentation provided by Struts/Velocity&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;"Whoa, hold on - Struts AND Velocity?", you say. "I thought it had to be xml?"&lt;br /&gt;&lt;br /&gt;Excellent point! By making use of another cool Java lib called &lt;a href="http://xstream.codehaus.org/"&gt;XStream&lt;/a&gt;, I was able to easily turn my Java objects into XML, easily displayed by the Velocity page (which really doesn't care what it's outputting - html, XML, chocolate pudding, etc.).&lt;br /&gt;&lt;br /&gt;Hook in the path to the Java app as OpenLaszlo's datasource, and presto! Full-fledged Java EE/Flash goodness. I know that's a REALLY toned down explanation, but it should implant some seeds of thought (for noodling).&lt;br /&gt;&lt;br /&gt;Oh, by the way, did I mention to check out &lt;a href="http://www.pandora.com"&gt;Pandora.com&lt;/a&gt; yet - it's sweet! You'll either find some music you like, or at the very least, a cool implementation of an emerging web technology.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114792029139829680?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114792029139829680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114792029139829680' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114792029139829680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114792029139829680'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/opening-pandoras-box.html' title='&quot;Open&quot;ing Pandora&apos;s Box'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114774730302952714</id><published>2006-05-15T22:26:00.000-04:00</published><updated>2006-05-15T22:41:43.070-04:00</updated><title type='text'>"Im"-possible. Almost.</title><content type='html'>I'm done.&lt;br /&gt;&lt;br /&gt;"Done with what?", you ask.&lt;br /&gt;&lt;br /&gt;"Done working?" - No.&lt;br /&gt;&lt;br /&gt;"Done enjoying what I do?" - Nope.&lt;br /&gt;&lt;br /&gt;"Done complaining?" - Aha. Now we're getting closer.&lt;br /&gt;&lt;br /&gt;"Done being bitter?" - I had a dog, and his name was Bingo.&lt;br /&gt;&lt;br /&gt;That's it. I'm through being negative. Good grief, it's been what, six months? I came to the rather abrupt, yet not so incredibly surprising, realization today that I am a completely different programmer today than I was six short months ago. Yeah, shocks me to think it - but jeez, I almost became the Impossible Programmer.&lt;br /&gt;&lt;br /&gt;I even said it today to a co-worker. Me. I said something was impossible. I once said we could do anything, and today I said something could never be. It hit me like a ton of bricks.&lt;br /&gt;&lt;br /&gt;Somewhere along the line of changing management, getting burned and being forced to work on something I swore I'd never do, I lost sight of what was important to me.&lt;br /&gt;&lt;br /&gt;To me, it's not about the people we help - although that is a very pleasant side effect. It's also not about making myself look good in the eyes of those that hold the reins. It's about the feeling of sheer joy that courses through my veins when I figure something out. THAT makes it all worthwhile.&lt;br /&gt;&lt;br /&gt;Not pressure, not management, not deadlines, not people. Just the immense satisfaction of problem solving, and that's it. I always talk about simplicity - and hey, can't get any more simple than that.&lt;br /&gt;&lt;br /&gt;My pledge from this day forth is to stop whining and quit wallowing in the pit of despair. I will make things fun again, and I will help those around me do the same.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114774730302952714?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114774730302952714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114774730302952714' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114774730302952714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114774730302952714'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/im-possible-almost.html' title='&quot;Im&quot;-possible. Almost.'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114748958429068050</id><published>2006-05-12T22:40:00.000-04:00</published><updated>2006-05-12T23:13:16.153-04:00</updated><title type='text'>Slax &amp; Java: So Happy Together. Really!</title><content type='html'>Ok - so recently I've been toying around with the idea of building my own Live CD, after basking in the glory of Knoppix for the past couple months.&lt;br /&gt;&lt;br /&gt;Knoppix is fantastic - an entire OS bundled onto a CD-ROM that doesn't even need to be installed (check out my previous post on Knoppix for more details). But lately, lately I've been getting greedy - and the tools included in the standard Knoppix build just aren't enough. And, what's worse, of all the Live CD distros, Knoppix appeared to be the toughest to customize! What was a poor programmer to do?&lt;br /&gt;&lt;br /&gt;What I want is a full Java development studio that is integrated with a small-thumbprint linux Live CD. After doing some googling, I was aghast to find that no one has offered up such a thing (or written about it, if they have attempted it).&lt;br /&gt;&lt;br /&gt;What I DID happen to find, however, was a neat little distro called SLAX - a live CD variant of the popular (albeit rather complicated) Slackware distro. With Slax Linux, everything is considered a "module".&lt;br /&gt;&lt;br /&gt;You start with one of the base Slax ISO's - "SE- Standard Edition", "Kill Bill", or "Popcorn". Then download any user-contributed modules you might need right from the same site - in my case the Java 1.5 JDK (which is required for our ejb3.0 development).&lt;br /&gt;&lt;br /&gt;"But hey..." you wonder aloud, "they don't offer the module I need on their website. What do I do now?" Well, this happened to be my case as well. The Slax website does offer a module for Tomcat, but I needed JBoss (with embedded Tomcat) for full Java EE stuff - and I also needed the latest Eclipse IDE for doing the programming dirty work.&lt;br /&gt;&lt;br /&gt;Quick check of the forums, and hey - guess what? There's a small Windows/GUI-based software tool called MySlax Creator (which includes MySlax Modulator) that makes pulling together everything a breeze.&lt;br /&gt;&lt;br /&gt;Step 1 - the MySlax Modulator tool can create a Slax module from a windows directory! So, I created a "java" folder, and tossed in my existing folders containing JBoss and my folder with the latest linux version of Eclipse. The MySlax Modulator tool wraps it all up into a module (*.mo) and sweet! Ready for step 2.&lt;br /&gt;&lt;br /&gt;Now that we have the JDK module (downloaded from the Slax module page - under the "development" category), and the JBoss/Eclipse module, we open the MySlax Creator wizard and choose the base ISO we downloaded first (I used Standard Edition). It mounts the iso to a local drive letter, and then you just choose all the *.mo's you want to add. It builds the new, custom ISO - and wha-la! Burn that sucker to a CD-ROM (I learned the hard way to use a CDR-W), boot up and rock on!!&lt;br /&gt;&lt;br /&gt;I encountered some problems booting the CD-ROM on some of the desktops at work; but after some trial and error, I found that booting up using the cheatcode "slax nodma" (disabling the Direct Memory Access on the CD-ROM drive) booted my custom Slax distro up like a charm.&lt;br /&gt;&lt;br /&gt;Now all I need to do is play around with the other config stuff (setting wallpaper, adding menu items, finding some cool games, etc.) and I will have my very own Live JavaSlax distro, usable anywhere there's a bootable CD-ROM drive. If that isn't cool, I don't know what is. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114748958429068050?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114748958429068050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114748958429068050' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114748958429068050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114748958429068050'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/slax-java-so-happy-together-really.html' title='Slax &amp; Java: So Happy Together. Really!'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114722890877241475</id><published>2006-05-09T22:20:00.000-04:00</published><updated>2006-05-09T22:48:16.596-04:00</updated><title type='text'>PHP vs. Java - psych!</title><content type='html'>Yeah! Everyone argues about which programming language is really "better" than the next...so, are you ready to have PHP and Java go at it? Well, if you are, too bad. I don't think any language is the end-all, be-all for everything.&lt;br /&gt;&lt;br /&gt;We've recently been incorporating a Joomla! PHP portal at work, and I think it's absolutely farggin fantastic. With no coding at all, you have a complete web portal with an amazing web-based admin GUI that would take months of custom of development if we did it on our own.&lt;br /&gt;&lt;br /&gt;By using Joomla!, we can spend less time on internal organizational tasks; e.g. managing documents, managing announcements, people directiories, etc. and spend more time on building any custom solutions that our customers require.&lt;br /&gt;&lt;br /&gt;Is PHP the most efficient way to deliver this great app? Maybe not, it might chug a little on some parts - but I tell you what, it took about 15 minutes to get up and running. Seen any Java apps lately that can do that out of the box? I don't think so.&lt;br /&gt;&lt;br /&gt;Don't get me wrong - I love programming in Java, and I think if you are serious about delivering a large scale web application you should seriously consider Java EE - the scalability will just blow you away. Try walking away from a well-designed MVC Java EE project for six months, and coming back to it. Does the code still make sense? I'm betting it will. Try the same with a tier-1 or tier-2 PHP (or ASP) site...good luck reading that code later on.&lt;br /&gt;&lt;br /&gt;My point is that both of these languages have to exist; both these, and many more - to give us, the intrepid programmers of the world, a complete toolbox filled with tools for any job. Plus, learning a different language gives you a different perspective on the languages you're already comfortable with.&lt;br /&gt;&lt;br /&gt;After my team started learning Java for the first time, we also experimented with incorporating MVC patterns into our existing tier-1 ASP code. Warped? Maybe. Fun? Definitely. Always try stretching a programming language as far as it will go - ever tried making an entire website in JavaScript, or calling a Java method from PHP? Push all languages when you can. It may seem frustrating or pointless, but I guarantee you'll learn a new way of thinking about stuff in the process. And who knows? Someday it just might inspire you to create the most revolutionary thing ever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114722890877241475?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114722890877241475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114722890877241475' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114722890877241475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114722890877241475'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/php-vs-java-psych.html' title='PHP vs. Java - psych!'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-114688664205815132</id><published>2006-05-05T22:34:00.000-04:00</published><updated>2006-05-05T23:37:22.086-04:00</updated><title type='text'>Passion, Simplicity &amp; Others</title><content type='html'>I know, I know - it's been awhile since we've spoken. I think we've each grown a little; I know I have. I won't apologize for being gone so long. Admit it, you didn't miss me much anyways. :)&lt;br /&gt;&lt;br /&gt;Anywho, I've been recently adding programming-ish entries to a wiki a friend of mine started at work, and it gave me the writing bug once again. As I was wiki-i-ing away on such blisteringly fun topics as the new EJB3.0 spec and the many open source projects we use, it strangely enough got me thinking about my profession.&lt;br /&gt;&lt;br /&gt;Don't you dare tell anyone, but I'll admit it - even with all my sarcasm, bluster and just plain arrogance when dealing with or speaking about programming (I really need to be told more often that I still don't know EVERYTHING - well, at least, not yet), I still, every now and then, wonder if I picked the right profession for me. Sometimes it feels like I'm swimming in this vast sea of overwhelming information and I'm struggling to find even the slightest purchase.&lt;br /&gt;&lt;br /&gt;Programming is kind of like one of those carnival fun houses, with a bunch of doors.  You open up the first door (say, learning a simple language - like HTML), and it opens up a room that has two more doors (JavaScript and CSS). Eventually, after banging your head on it for awhile, you open the door to JavaScript and it opens up to a room that has three *more* doors (ASP, PHP, JSP). And so on and so forth. The cool thing is - once the door is opened, it stays open and helps create an overall map through the house. So when certain doors intersect and lead to similar places, you can connect the languages in many different ways.&lt;br /&gt;&lt;br /&gt;I guess my point with the whole "fun house" idea is just that sometimes the sheer number of possibilities gets a little overwhelming. It seems to always come down to 3 things for me - 3 things that always make me realize how much I love what I do.&lt;br /&gt;&lt;br /&gt;Here they are:&lt;br /&gt;1. I am truly passionate about the code I write - making stuff "work" rocks!&lt;br /&gt;2. I love employing the power of simplicity (even if the sweet, chocolately-chewy seduction of complexity sometimes harkens me), and&lt;br /&gt;3. I work with a couple of fantastic co-workers who keep me on track when I stray too far from  sanity.&lt;br /&gt;&lt;br /&gt;Sitting back, re-reading that makes me realize that wallowing in a sea of information isn't like drowning, it's more like seeking hidden sunken treasure - AARRRG!&lt;br /&gt;&lt;br /&gt;You've not heard the last from me...muwhaha!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-114688664205815132?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/114688664205815132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=114688664205815132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114688664205815132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/114688664205815132'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2006/05/passion-simplicity-others.html' title='Passion, Simplicity &amp; Others'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-113410227391637532</id><published>2005-12-08T23:09:00.000-05:00</published><updated>2006-05-09T22:49:03.383-04:00</updated><title type='text'>Live CD's - Sweet!</title><content type='html'>I love opensource projects - we've been using a bunch of them at work for almost two years now, and I think they're fantastic. Here and there, I've gone beyond small opensource Java tools (like Struts, Velocity, etc.) and delved a bit into the Linux OS.&lt;br /&gt;&lt;br /&gt;Much like learning Java for the first time, there is a HUGE learning curve involved with Linux. Don't get me wrong, depending on the distro (that's distribution, for all you Windows kids out there - there are about a billion slightly different distros of Linux), some are easier to use than others. But installing them usually takes a bit of time. And, as we all know, time is money.&lt;br /&gt;&lt;br /&gt;One of the toughest things for this meager programmer is to let go of his attachment to his machine. I have one main desktop, and I'm not about to go re-formatting the hard drive into partitions everytime I want to try a new flavor of Linux. What's a guy to do?&lt;br /&gt;&lt;br /&gt;Live CD's! We're not talking Throwing Copper here; no, rather an entire OS contained on a bootable CD that doesn't install ANYTHING to your hard drive. Download the .iso file (which is usually just a single OS image file that most burn software knows how to handle), flip the BIOS to boot from CD-ROM, and you're golden.&lt;br /&gt;&lt;br /&gt;I've downloaded live CD's from Ubuntu, Knoppix, Gnoppix, and Mandriva - and let me just say, they are sweet. You get a chance to play with the features from the OS, without fear of messing anything up (which, as anyone who has tried installing a version of Linux to their hard drive knows, is always a real fear). When you're done, shut down the computer, remove the CD, and you boot back up normal as pie.&lt;br /&gt;&lt;br /&gt;These cd's are also useful for recovering data from hard drives that won't boot, and are great for public computers - like those at libraries, campuses, internet cafe's. Most of them come with the latest versions of Firefox, Gnome/KDE, OpenOffice, and more. Not bad for a &gt;700MB disc, eh? Look them up, and give them a whirl. You just might have some fun, and learn something while you're at it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-113410227391637532?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/113410227391637532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=113410227391637532' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113410227391637532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113410227391637532'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2005/12/live-cds-sweet.html' title='Live CD&apos;s - Sweet!'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-113401450742807791</id><published>2005-12-07T22:16:00.000-05:00</published><updated>2005-12-07T23:01:47.490-05:00</updated><title type='text'>Why. (its not a programming entry per se, but hey, who asked you anyways?)</title><content type='html'>A legacy? Nah, not really a legacy - more of a philosophy from perhaps the greatest mentor in my life.&lt;br /&gt;&lt;br /&gt;"Why?"&lt;br /&gt;&lt;br /&gt;As of late, I've had to ask this question more and more. It used to be that someone asked it for me (see above comment on aforesaid mentor), but those times are gone. Now, left to my own meager devices, I must continually bring this question to the forefront.&lt;br /&gt;&lt;br /&gt;I used to program relentlessly - eagerly digesting any new language or tool or technology that was placed in front of me, or eluded to in some fashion from a project. I only mention this, because, note the word "used". The environment has changed, and now I am walking down roads I swore I would never walk down. "Why?" was never asked. Not by any fault of me or any of my fellow unpossible programmers, but because of management crap.&lt;br /&gt;&lt;br /&gt;Where did this culture of not doing the right thing come from? When did we become less than a bottom line?&lt;br /&gt;&lt;br /&gt;Crappy quote time:&lt;br /&gt;"Sometimes, we have to do things. We have no choice, because [blank]". Insert the following into the [blank] - "of the budget", "my feet are held to the fire", "just because we have to do things we don't want to do sometimes since I was told to get it done by blah". Bullshit. Sorry for the swearing, kids.&lt;br /&gt;&lt;br /&gt;Good grief, you ALWAYS have a choice. It may not be the popular choice, or the choice your management wants to hear, but you always have the choice to make the decision thats right for your customer - whomever they may be. And if I take one thing away from my mentor - it's that.&lt;br /&gt;&lt;br /&gt;Movie quote time:&lt;br /&gt;Calvera: "What I don't understand is why a person like you would take a job like this in the first place."&lt;br /&gt;&lt;br /&gt;Vin: "It's like a fella I once knew. One day, he just took off all his clothes and jumped into a mess of cactus. I asked him the same thing - 'why'. He said, 'it seemed to be a good idea at the time.'"&lt;br /&gt;&lt;br /&gt;-from the Magnificent Seven, the greatest western ever. Damn straight, Vin.&lt;br /&gt;&lt;br /&gt;I'll always ask "why" and not blindly accept things, even if certain people in my life are incapable of doing that for themselves. It was high time I finally stood up for something, and besides, I have no doubt that it will always seem to be a good idea at the time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-113401450742807791?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/113401450742807791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=113401450742807791' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113401450742807791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113401450742807791'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2005/12/why-its-not-programming-entry-per-se.html' title='Why. (its not a programming entry per se, but hey, who asked you anyways?)'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-113228115250588603</id><published>2005-11-18T00:32:00.000-05:00</published><updated>2005-11-17T21:32:32.530-05:00</updated><title type='text'>Wabi-Sabi &amp; Java</title><content type='html'>I just finished reading a short, but somehow fulfilling book called &lt;a href="http://www.amazon.com/gp/product/1880656124/002-7954417-4144839?v=glance&amp;n=283155&amp;amp;n=507846&amp;s=books&amp;amp;v=glance"&gt;&lt;span style="font-weight: bold;"&gt;Wabi-Sabi for Artists, Designers, Poets, &amp;amp; Philosophers&lt;/span&gt;, by Leonard Koren&lt;/a&gt;. Roughly 50 or so pages filled with various "imperfect" imagery and some thoughtful glimpses into the nearly lost art of Japanese tea ceremonies.&lt;br /&gt;&lt;br /&gt;I won't delve into a cultural aesthetic that I hardly comprehend after a brief stint through text, but the back cover sums it up quite well - Wabi-Sabi is "a beauty of things imperfect, impermanent, and incomplete. It is a beauty of things modest and humble. It is a beauty of things unconventional".&lt;br /&gt;&lt;br /&gt;Ok, ok - so what the heck does that have to do with programming Java? One line of the book that stood out for me was the following: "Pare down to the essence, but don't remove the poetry."&lt;br /&gt;&lt;br /&gt;One of the major downfalls to the Java programming language is its immense complexity and the sheer enormity of technologies built using it - I mean, good grief, when one sets out to learn Java, they'd better have a distinct plan of attack, or they'll get lost in incredibly deep seas of information.&lt;br /&gt;&lt;br /&gt;Pare down to the essence - aka get rid of all that complex junk which serves only to make programmers feel better about themselves. The poetry will still exist, in its simplicity.&lt;br /&gt;&lt;br /&gt;Take a J2EE project for example. You have three tiers - a model, a view, and a controller. What is the simplest way to achieve functionality within each tier? With Java, there are so many choices and technologies available, it would take someone years and years to find an ideal enterprise solution. Fortunately for us programmer geeks, getting there is half the fun.&lt;br /&gt;&lt;br /&gt;I recently took a crack at this and developed a J2EE "spine" for work, simply a complete generic enterprise Java project which utitlizes some fun things (at least fun in my warped programmer's mind). The project can be pulled from the repository, and modified quickly into whatever it needs to be.&lt;br /&gt;&lt;br /&gt;   1. The database (model) tier.&lt;br /&gt;   I put &lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; to work, which simplifies ORM's (object-relational mappings) and allows Java objects to be easily created from database tables. Add &lt;a href="http://xdoclet.sourceforge.net/xdoclet/index.html"&gt;xDoclet&lt;/a&gt; into your Ant build file, and the process is simplified even further.&lt;br /&gt;&lt;br /&gt;   2. The business logic (controller) tier.&lt;br /&gt;   &lt;a href="http://www.jboss.org/products/ejb3"&gt;EJB 3.0&lt;/a&gt; makes stateless session beans a snap - add in the correct attribute to your class, and you're done. (requires Java 1.5)&lt;br /&gt;&lt;br /&gt;   3. Web Presentation (view) tier.&lt;br /&gt;   I have embraced the amazing powers of &lt;a href="http://jakarta.apache.org/velocity/tools/struts/"&gt;Jakarta Velocity&lt;/a&gt; - quite simply the best technology to hit dynamic html pages since their creation. Velocity templates (in combination with the equally powerful Struts framework) makes for one jaw-dropping combo. With the Velocity-Struts package, all the Struts beans become readily available to your Velocity page - no more funky JSP tag libs, or hard to remember attributes. Just access your beans and properties as you please. Oh, and did I mention no more stupid pre-compiling of the web pages themselves? Yeah, buddy.&lt;br /&gt;&lt;br /&gt;   4. Testing - &lt;a href="http://jakarta.apache.org/cactus/"&gt;Cactus&lt;/a&gt;, &lt;a href="http://jwebunit.sourceforge.net/"&gt;JWebUnit&lt;/a&gt;, et. al.&lt;br /&gt;I love writing tests with Junit and the associated technologies. I finally figured out how to make Cactus (as a separate web app in my .ear) work as a collected set of tests that can be run from a web site at any time during deployment. Once again, you have to sift through all the complex jargon to find out that Cactus is just a web shell for housing JUnit tests, and that the tests themsleves can be short, simple, and only used when necessary.&lt;br /&gt;&lt;br /&gt;This is what really drove home the phrase "Pare down to the essence" to me. Why do Java programmers insist on wallowing in their own superficial magnificence? Beauty and simplicity lie within Java, one just has to first jump the gargantuan hurdles of the language, and the fact that these technologies evolve so quickly, that documentation is usually sparse and difficult to read, if it even exists.&lt;br /&gt;&lt;br /&gt;I truly believe now that you can find the poetry in any programming language, as long as you can "pare down the essence" and arrive at a simple, yet elegant solution. Don't make it overly complex just because you can - I've been there, and even if you don't end up being the one supporting the complex (albeit magnificent) application, it will eventually bite someone in their posterior.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-113228115250588603?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/113228115250588603/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=113228115250588603' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113228115250588603'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113228115250588603'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2005/11/wabi-sabi-java.html' title='Wabi-Sabi &amp; Java'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-113202362421300494</id><published>2005-11-15T00:44:00.000-05:00</published><updated>2005-11-14T22:00:24.226-05:00</updated><title type='text'>POST TO YOUR DAnG BLOG!</title><content type='html'>Oh my. Has it been four days since I started this already? Ok, here we go.&lt;br /&gt;&lt;br /&gt;Before we get started, let me just say that I'm a bit disappointed in myself lately. I wish I would have started this blog when I was within the wonderfully raging, swirling mists that totally envelop me during a programming project. Alas, twas not to be.&lt;br /&gt;&lt;br /&gt;Ah, to feel the nearly endless possibilities again. That's all I really want - to start a project and from the moment development begins, the possibilities...&lt;br /&gt;&lt;br /&gt;(imagine really cool dissolving effect here)&lt;br /&gt;&lt;br /&gt;It starts with the very first programming language you learn. For me, that language was HTML. You see the code unfold before you, and there it is - your first pattern. You learn the attribute that controls the color of the page, and you begin seeing in your mind all the ways you can change that attribute and make the page behave in a certain way. Then you learn another attribute, notice the similarities to the first, and then you see it - by combining the two, you can make something entirely different happen. And so on and so on.&lt;br /&gt;&lt;br /&gt;Before you know it, you're knee deep in a full-fledged Java J2EE project, complete with three tiers - an amazing database tier using hibernate, an ejb tier with stateless session beans, a web tier using struts, tiles, and velocity templates...ahhhh. The best part is that you see the picture in your brain first...you see all the fantastic things you've created before - and the re-shuffling occurs almost on its own: what if this piece went here, that piece went there; even before you set pen to paper, or connect the dots in your visio diagram.&lt;br /&gt;&lt;br /&gt;It's silly, I suppose. &lt;a href="http://dictionary.reference.com/search?q=programming"&gt;Dictionary.com&lt;/a&gt; defines programming as "To provide (a machine) with a set of coded working instructions." Sounds as though it should be methodical and stale, doesn't it? Not to me. That's why I believe in little &lt;a href="http://www.simpsoncrazy.com/ralph/content.php?page=fullepisode&amp;amp;episodeid=2F05"&gt;Ralph Wiggums' unpossibility&lt;/a&gt;. To me, "unpossible" means nothing is impossible - no idea is too far out there, no combination of thought is completely without usefulness.&lt;br /&gt;&lt;br /&gt;I promise my next post will be on a specific programming language, but for now, you'll just have pardon some wistful reminiscing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-113202362421300494?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/113202362421300494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=113202362421300494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113202362421300494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113202362421300494'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2005/11/post-to-your-dang-blog.html' title='POST TO YOUR DAnG BLOG!'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-18857666.post-113168247126334915</id><published>2005-11-10T23:12:00.000-05:00</published><updated>2005-11-10T23:20:22.183-05:00</updated><title type='text'>The Beginning of Unpossibility</title><content type='html'>Weary programmers, here, at last is a small shrine by the wayside to rest your weary feet and bask in the glory of thoughts on all aspects of web programming - designs, languages, and dare I say it - even personal musings. Feels good, doesn't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/18857666-113168247126334915?l=unpossibleprogrammer.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://unpossibleprogrammer.blogspot.com/feeds/113168247126334915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=18857666&amp;postID=113168247126334915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113168247126334915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/18857666/posts/default/113168247126334915'/><link rel='alternate' type='text/html' href='http://unpossibleprogrammer.blogspot.com/2005/11/beginning-of-unpossibility.html' title='The Beginning of Unpossibility'/><author><name>James</name><uri>http://www.blogger.com/profile/01034797613897877884</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
