The Unpossible Programmer

Friday, March 23, 2007

A New Year, A New Blog - A New Perspective?

Welcome back to unpossibility. It feels as if I never left.

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.

Is anything different?

Now I feel, well, inspired. Hmmm. Not quite, but close...Confident. 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.

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*

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?

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.


P.S. Wow, that was heavy, hunh? I'm going to take a break and play Flight of the Amazon Queen. Why not try it out in ScummVM too? It's free, and I've been having a blast with it on Linux, Windows, and even my Pocket PC. ;)

Thursday, May 25, 2006

Linux and Tacos

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.

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)

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.

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.

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.

It's almost like you personally 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.

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).

I'll get there eventually, I hope. I'm just not sure if anyone will still be programming in Java when I do. ;)

Tuesday, May 23, 2006

ASCII What?!?! Maps? Yeah, right.

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.

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? ASCII Maps.

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.

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.

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.

Friday, May 19, 2006

It's the Friday post of doom - muwhaha!

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.

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.

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.

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. :)

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.

Thursday, May 18, 2006

The Wonders of Pair Programming

"I am the greatest programmer ever."

Ok, now that we have that out of the way - I should restate that as:
"I am the greatest programmer ever. NOT!"

I need help, and chances are, we all do at one time or another.

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!)

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.

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.

Duplication of effort, you say? I say "Nay."
Wasted time, you query? I, again, say a haughty "Nay."

The benefits we've seen from this technique are thus:
  • Increased knowledge sharing (getting away from the model where only one person knows how the guts work)
  • 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)
  • 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!)
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 synergy (the ickiest of the "Office cliche'").

My sarcastic side note on Synergy:
I've had the great pleasure of working on a team for years that works extremely well together - 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.

If you take one thing away from this post - I hope it's this: that programming is a community-driven thing. 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.


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.)

Wednesday, May 17, 2006

"Open"ing Pandora's Box

Have you heard of Pandora.com yet?

Pandora.com is a nifty little web site that may just change how you discover music forever.

Here's the low-down. There is a small, dynamic Flash application on Pandora.com that lets you make custom internet radio stations.

This is insanely cool for three reasons:
  1. It works through a proxy for those of us "trapped" at work
  2. You can enter in any artists you like, and it tailors the radio station to you
  3. It was developed using OpenLaszlo (didn't think I'd make a list without including something about programming, did ya?)
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).

Macromedia (Adobe) Flex 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).

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.

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.

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:

  • Data tier, powered by factories/dao's using Mr. Persister
  • Business logic tier, utilizing Stateless Session EJB3.0's (in the latest version of JBoss4.0.3+)
  • Presentation provided by Struts/Velocity
"Whoa, hold on - Struts AND Velocity?", you say. "I thought it had to be xml?"

Excellent point! By making use of another cool Java lib called XStream, 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.).

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).

Oh, by the way, did I mention to check out Pandora.com 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.

Monday, May 15, 2006

"Im"-possible. Almost.

I'm done.

"Done with what?", you ask.

"Done working?" - No.

"Done enjoying what I do?" - Nope.

"Done complaining?" - Aha. Now we're getting closer.

"Done being bitter?" - I had a dog, and his name was Bingo.

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.

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.

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.

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.

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.

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.