Monday, January 26, 2009

Recently I embarked on the journey of learning the Haskell programming language. Much of my choice to do so was brought about by my dissatisfaction with the progress of language features being added to Java. Before my inbox gets flamed into oblivion, let me explain.

I’ve been a reasonably accomplished java developer for the better part of a decade now, and until now, always felt that Java was powerful “enough” for me to accomplish my various project in, within reasonable timeframe. The amount of code already written and ready for use in Java is, in a word, staggering. The amount of documentation, tutorials, examples, code snippets, and forums to help the wayward Java developer is momentous. You have no reason to fail, as a Java developer, since most of the “heavy lifting” won’t be written by you.

Through my years ad a Java developer I helped my co-workers that were new to Java, learn the language, the libraries & frameworks, the build tools & the IDEs (anyone else remember forte4j and Visual Age), the performance settings of the IBM JVM vs. the SUN JVM (yes, it used to matter../sigh). I spent years learning, helping others learn, advocating, attending conferences, and defending Java as a safe, pragmatic, choice for project development.

So why the dissent now?

Curiosity killed the Java developer. Flirting with Ruby, Python, and Erlang opened the door to the functional style of programming, Haskell kicked the door wide open.

I’ve always loved coding, the act of predictably guiding the computer towards a goal. Typically the goal being a problem’s solution. When coding in Java, I always accepted that there was a certain amount of cruft necessary to complete a task, never wondering if a more efficient methods were possible. Filtering, transforming, aggregating, I do these all over the place, why are they so wordy in Java? Other languages closer to Java, say C# for example, have found ways to improve repetitive tasks in their sources, why can’t java? Feature after feature, I’ve watched C# (and others) grow, while Java remains stagnate, why?

Learning Haskell has probably been one of the single most rewarding experiences of my professional software engineering career. I would encourage any developer to do the same, not because its marketable(not right now at least), not because it does all your work for you without you needing to be “distracted by the details”, but because it is enlightening. Discovering a language so densely packed with features combined with very predictable behavior has made life moving forward as only a Java developer seem lackluster and an exercise in mediocrity, but it's what pays the bills :-/

Thursday, January 22, 2009

Asceticism

Asceticism and simplicity has been in my thoughts lately due to recent developments in my life. It was something that I had thought a lot about when I was younger. I used to read a lot of pseudo philosophy and spirituality books like Siddhartha, Way of the Peaceful Warrior, and Carlos Castaneda Books.

A common theme with all of these books is the notion of "needs" vs. "wants". What is it that a person really "needs" in life? It is really not much. Yet so many people are driven by the illusion that many of the things that they want in life are actually necessities. Once somebody has turned a want into a need, they can't be content without it. Somebody who is grounded in the simple needs of life will instead feel like everything beyond simple necessity is a bonus and be grateful.

I've been thinking about asceticism a lot lately because often the only way to get in touch with necessity is to practice simplicity. Even in the smallest form I think this is a rewarding and satisfying thing to do. Think about what you are eating, how you are living, and what it is that makes you happy.

Time to go for a hike.

Monday, January 19, 2009

Commander William King

I have been reading a great book, Adventure In Depth by Commander William King. Commander King is a bad ass in ways that most people can't comprehend these days. He was a submarine commander in World War II and later had the guts to re-invent himself and wrestle with his own identity while sailing around the world by himself in a small sailboat. His boat is dismasted in a violent hurricane and then on a subsequent attempt (yes he decided to try again) is broadsided by a shark or an orca leaving a gaping hole in the side of his boat. He is resourceful and ingenious enough to survive these incidents and many more, yet his story is not just about his physical adventure, but his reflections on his submarine experiences in World War II. Commander King is a man who knows no bounds on Earth or in his mind.

Here is one of my favorite passages so far:
Gradually I seemed able to master my emotions. To be alone on the ocean is good character training. It does not matter how old you are - sixteen or sixty - it is equally important to be able to grasp one's own tempers and twist them into submission. I took the fancy of pretending each mood was like a costume hanging in a cupboard, which one can pull out and don at will. And then i found I could laugh at myself. All these years, since indeed I was a child, those costumes had been able to leave their cupboard without orders and fling themselves on me. From now on I resolved to choose my own mental raiment, and this idea amused me greatly while I gazed back longingly toward the south, hoping for a right breeze to whip up and bear me home.

Wednesday, January 14, 2009

Why Most Java Complaints Are Cultural Vs. Technical Problems

For a long time now, I have heard a steady stream of complaints about the death of Java and it's inevitable obsolesence. Yes, some of these have come from Necrobious over the years, but it does seem like there is a building animosity towards Java as a bloated slow way of developing applications.

I don't agree with this.

It's not that I'm not open to the other languages that the bitter Java guys seem to be jumping to. It's that I think most of the problems that they state about Java are related to the culture that has formed around Java development as opposed to the language on its own.

For example, some people jump the Java ship in favor of php, ruby on rails, python, perl, etc. saying that they can't develop quickly in Java. They then go ahead and crank out some apps in those other languages using techniques that could be done functionally verbatim in jsps and servlets, but are not socially acceptable among many Java developers to do in jsps and servlets.

The corporate culture of Java IS stuffy, but that doesn't mean that is a flaw with the language and the truth is that the ubiquity, support, and active open source development communities are a huge strength that some of those other languages can't measure up to.

Like politicians falling over themselves to be more morally pure than other candidates. There is also a "moral ratchet" that occurs in corporate Java development. Don't let this stuff get to you though. Here are the behaviors and buzzwords that you might be headed in to a soulless Java shop. YMMV.

* Excessive abstraction, properties files that reference xml files that reference properties files. Commit to a damn setting already!
* People that choose enforced encapsulation over functionality. It is possible to write good, clean, effective jsp files, but somehow many Java developers flock to emaciated template languages, because they don't trust themselves with the power and flexibility.
* Bloated massive frameworks. Watch out carefully for the bloated, do it all frameworks that seep into corporate shops because managers and timid developers are afraid to learn how to do something themselves and would somehow rather learn how to configure how somebody else has done something. I'm not saying this is true of all frameworks or libraries.
* "Best Practices" - Watch out for the people that say this constantly in defense of their work. It is often used as an "emperor's invisible clothes" tactic.

You get the idea...

Using Dapper For Feed Generation

Dapper is a great looking service for creating feeds out of any website

Friday, December 12, 2008

"Rockstar" Abuse In Employment Ads

Just saw this beautiful diddy on craigslist:

Looking for WordPress Rockstar! (Anywhere)

Looking for wordpress rockstar to do multiple wordpress setup's for clients. This will be the basic wordpress setup, implementing theme, adding graphics, seo plugins, feedbuner, etc. Looking for someone that is reliable and can work within deadlines.

Must be a rockstar and have the goods to prove it!

Yes! You must be a rockstar to do this wordpress job! I see this kind of posting for computer jobs constantly. What do companies think they are getting when they get somebody that thinks they are a rockstar? Getting somebody that is a rockstar is awesome, getting somebody that is willing to think of themselves as a rockstar? TROUBLE. I've experienced this phenemonom a few times and I don't think the companies that post this type of requirement really think it through.

For some good examples of actual rockstar behavior check out this Cracked article.

Friday, December 5, 2008

Freedom From Religion Sign Vandalized In Olympia, WA

"At this season of
THE WINTER SOLSTICE
may reason prevail.

There are no gods, no devils, no angels, no heaven or hell. There is only our natural world. Religion is but myth and supersitition that hardens hearts and enslaves minds."

There was an article today on CNN about the vandalizing of a sign put up in Olympia, WA. I guess somebody found these simple words pretty threatening, and yet wasn't faithful enough to wait for divine intervention to remove the sign for them. Maybe the vandal didn't pray hard enough.

The sign was sponsored by the Freedom From Religion Foundation.