That Sucking Sound Is Java Killing Your Soul

There is nothing fun about Java. Every possible good facet’s goodness is completely predicated on the requirement that you know how to set up and or get around some soul sucking gotcha. Where it’s been said that even a language such as Perl can make “easy things easy and hard things possible”, Java seems to try to make “easy thing hard and hard things infuriatingly impossible”.

Ok, I know. This will get some people steaming. You may not want to continue reading if that’s you. I’m sure that your assumptions are that I’ve never given Java a chance. I’ve never worked with Java long enough to make any sort of real assessment. I’m not a real programmer… blah blah blah. Ok. Sure yeah. I’m not going to try to convince you of anything. I’m sure you’ve found Java just wonderful for your research paper or whatever pet project you’re working on. That’s great. You know so much. Like I said. You may not want to continue reading.

For those of you who can hear it, here’s the point. Why use a language that tries to be everything to everyone when all it does is suck the joy out of being a software engineer. Remember when programming was fun? If you don’t, then you’ve never used anything but Java.

Why do I need to invoke a Factory every time I want just a simple object? Why are there no good GUI design tools–and please, don’t tell me about your favorite GUI design tool. Frankly, they all suck in comparison to pretty much everything else out there. And that’s another thing, why does a GUI based Java application window, when restored from being minimized for several hours, respond so sluggishly?

Java is not fun. It is not exciting. It is not enjoyable. It just makes you grumpy. If you find it fun, I dare you to to tell me how. Go ahead. Put it in the comments now. Let it be known how Java is so fun. Seriously!

I admit that there is no perfect dev environment. They all have their quirks, even my new favorite–xcode on the Macintosh/iPhone, but I just can’t understand the madness. Why do people insist on defending Java–this lousy programming language that is the basis of more once-hot-now-abandoned frameworks than anyone can keep track of. If you don’t believe me, take a quick survey of the latest posts about Java over at Reddit’s Programming Section. Here’s a smattering:

All of these posts are actually not bashing Java. The writers like the language. What they are doing, however, is defending it. Why? Because it needs defending. It’s horrible.

What’s fun about programming is problem solving. Sure enough, you’ll spend a lot of time solving problems when you use Java, but they are not programming problems–they are environment problems. Sure, you can write that web app once you’ve decided which lame web framework is the least bad of them all. But then you’ll find that setting up the least bad framework will take you a full day or longer and then it might not work properly once you deploy it. Oh yeah, and where are you going to deploy it? Not on a shared hosting web server. You’ll have to go co-lo and administer the box yourself if you want it to run Tomcat or some other web app server.

… and I could go on, but why?

If you want to have fun writing code… If you want to get your soul back, start writing for the Mac or get the new iPhone SDK and start writing code for it. For that matter, start writing for 8-bit embedded systems. That’s more fun than Java and probably easier. And for those of you who just at that moment thought about suggesting embedded Java for 8-bit micro-controller programming, you need to put your laptop down right now and seek help. Seriously. Call somebody. You are not well.

If you are wondering what’s fun that I am doing these days, take a look at my other blog Cocoa Is My Girlfriend. Here are a few of my latest posts:

BecomeAnXcoder, And Give, Please!!

This was posted on cocoalab back in October and I’m just now seeing it, but this online book BecomeAnXCoder looks fantastic! I will start pointing people who are interested in Mac OSX programming who have no programming experience there from now on. I hope these guys can continue to produce high-quality content. Which appears debatable–not because they don’t have the ability to create quality content–clearly they do, but because they seem to be having trouble supporting it.

I noticed when I visited the site this note in bold at the top:

Please Donate! Our bandwidth is at record levels: 29 GB in March, and donations do not even come close to covering our costs. If you appreciate our work, please take a minute to send a donation.

I do appreciate their work myself, but it’s mainly because I would send more people, new programmers that is, to them–which in turn is what is giving them the problem of using too much bandwidth in the first place.

To the folks over at Cocoa Lab, this statement really makes you sound desperate. I hope you can get the support you need, but when you give away content for free, a statement like this suggests that maybe your ultimate intention wasn’t to give it away, but rather to give it first so that people may donate. If this is a business model for you, it looks like it’s not working out the way you expected, so, with the deepest sincerity, I thought I might offer a few possible solutions to your predicament.

  • Talk to a publisher. This is really good content that you could probably sell. Show it to a publisher and see what they think. I’ve heard of publishers that *may* be accepting proposals from Mac Programming authors
  • Get cheaper webhosting. There is this company called 1and1 that provides shared hosting (which would work fine for the content you are providing) and give you 2.5TB, yes that was TERABYTES!!, of transfer bandwidth per month for the affordable price of $9.99 per month. You can sign up at 1and1 now. And yes that link is my affiliate link. I will get a kickback if you sign up!! That’s not a sales pitch–just a disclaimer.
  • Convert the site to a blog site. If you make your site into a blog rather than a book and continue to add new content, the benefit to the Cocoa development community continues to grow. It’s great with the content that’s there now, and to those who haven’t checked it out yet there is a *ton* of content, but keep it coming.

I write this not to chastise, but to be helpful. I hate to see good content producers go un-rewarded for their efforts. The solution, however, is either to change your approach, or change your expectations. Best regards to the BecomeAnXCoder writers. Keep up the great work.

Microsoft Product Launch Less Than Inspiring

Silhouette DudeHeroes?So we drove up to Denver this morning for the Microsoft Product Launch they’ve dubbed Heroes Happen Here (exsqueeze me? What?). We all got signed up late so we had to do the morning sessions which weren’t the developer sessions.

That was really fine because we were all only going for the free software. I’ve gotta say, though, that the sessions were nothing but big snooze-fests. Maybe the developer track was better, but wow. ZZzzzzzzz.

After attending one session, we went to a different track to see if it was any better. Had to leave within a few minutes for fear that the enthusiasm with which these folks presented their topics was enough to make one’s mind seize up from inactivity (doesn’t work that way, but I’m bad at analogies. Work with me here).

Ok. I exaggerate. When we did duck out of the second session early, much to our surprise and delight, we found that they were handing out the goods without requiring the session evaluations. Sweet! We grabbed the software and got outta there. The software included Visual Studio 2008 (Standard), SQL Server 2008, Windows Server 2008, and Windows Vista Ultimate Edition.

I haven’t done any Windows development in a while, but should the time come again that I need to, I will have the latest software. It was worth the trip, but only for that reason. The presentation was, well… lacking.

Don’t think they have that problem on that other platform.

Core Animation Tutorial: Dashboard Effect

I just finished another Core Animation tutorial and posted it at CIMGF over the weekend. This was a pretty fun one. I wanted to duplicate the effect of the Dashboard widgets flying in and out from off screen and this is what I came up with. Take a look and let me know what you think. Core Animation Tutorial: Dashbaord Effect.

Guitar Hero On The Commodore 64?

Shredz64Wow, some people have some serious hacking skills. That, and a lot of time. This guy built his own interface that allows him to connect the Guitar Hero controller for the Playstation up to his Commodore 64 on which he plays a Guitar Hero clone he calls Shredz64.

That’s very geeky… and cool!

Get more information at Toni Westbrook’s website and here is more about his Shredz64.

Core Animation Tutorial: Wizard Dialog with Transitions

Wizard TutorialMarcus can really crank these articles out. His latest demonstrates how to create a Wizard interface with next and previous buttons, however, this is not your average every day Wizard interface. This one employs Core Animation. When you click the next or previous buttons, you’ll see that the next view slides in from the right or left depending on which you clicked. Take a look at his latest tutorial post: Core Animation Tutorial: Wizard Dialog with Transitions.

Core Animation Tutorial: Window Shake Effect

Marcus and I have started to have NSCoder Nights on Monday’s at Panera Bread on Powers near S. Carefree. We’ve been working to try to learn how to do certain OS X Leopard animation effects using Core Animation. The first challenge we took on was figuring out how to shake a window back and forth to indicate that the user has entered the wrong password in the login window. OS X does this when you try to login and enter your password incorrectly. If you’ve never seen it before, you either don’t have manual login enabled, or you’ve never entered your password incorrectly.

Anyhow, the article is short, but it has an XCode project that you can download and use. Take a look at the post, Core Animation Tutorial: Window Shake Effect and let me know what you think.

NSOperation Example

I just finished writing a new article for Cocoa Is My Girlfriend. I am building on the work Marcus did on his first article called Cocoa Tutorial: NSOperation and NSOperationQueue. In my article I’m taking a slightly more practical approach where I provide a flicker free method for grabbing images from a currently playing QuickTime movie. The NSOperation grabs the image data from the movie and saves it out to a folder in the filesystem specified by the user.

I think it is pretty cool. I hope it will help others see the power and flexibility of NSOperation and NSOperationQueue.

Read the new article, NSOpeartion Example, here.

Cocoa Tutorial: NSOperation and NSOperationQueue

I just finished helping Marcus post an article on our new site Cocoa Is My Girlfriend, a site dedicated to providing blog posts and tutorials on how to develop applications using Objective-C and Cocoa on the Macintosh.

This first post is on how to use the new threading objects found in Mac OS X Leopard (10.5) called NSOperation and NSOperationQueue. They provide a really simple and robust way to do multi-threaded programming. Take a look at the post and let us know what you think.

Twitter: The Long Tail of Celebrity?

If you’re not familiar with Chris Anderson’s The Long Tail, you should take a look at his book or at least read the about page on his site to understand this post. In a nutshell from Chris’s site:

The theory of the Long Tail is that our culture and economy is increasingly shifting away from a focus on a relatively small number of “hits” (mainstream products and markets) at the head of the demand curve and toward a huge number of niches in the tail.

In an attempt to explain what Twitter is to those who are not familiar, I’ve said that it is the long tail of celebrity. Ok, so that is probably pretty dumb since now I also have to also explain what the long tail is. I probably need to keep searching for a better definition, but when I say that it’s the long tail of celebrity, I simply mean that everyone who uses Twitter can be a celebrity…

to a certain extent.


Once you have followers on Twitter, you could be considered a celebrity of sorts. You’re not one of the big names, the hits, but you could certainly be considered a niche–especially in the case where your followers are only friends or family.

Thanks to Marcus I have started to follow some independent software developers for the Mac on Twitter and find many of their tweets (Twitter posts/updates) to be interesting. There’s lots of noise too, but you can quickly filter through that. What I’ve learned from following these guys is just the sheer amount of time these guys seem to spend coding. I know that’s what it takes to be successful as an indie, but it’s just fascinating to me to watch these guys update what’s new in their development processes.

To me, guys like Wil Shipley, creator of the award winning Delicious Library and Daniel Jalkut, developer of MarsEdit are celebrities of sorts. I don’t know Wil or Daniel personally and they don’t know me from Adam, but Twitter has enabled me to see what’s going on with the most recent developments in the latest version of each of the applications they develop and maintain. It’s highly interesting to me.

I see them as successful at doing that which I would personally like to do as well. I’m not star struck by these guys as tends to be the case when people are fascinated with Hollywood celebs, however, there is certainly an element of admiration as they are the real deal in independent Mac OS X development. They actually have applications available for purchase and are living the dream.

If my theory is right, then everyone can be a celebrity by using Twitter. Just don’t go taking yourself too seriously, throwing public tantrums, and getting caught driving drunk like the regular celebrities do every time your followers number rises. Remember, you’re still in the long tail–you’re a niche, not a hit.

You can catch me on Twitter at http://twitter.com/perlmunger. It’s not terribly interesting, but if you follow me, I’ll be your celebrity.