I am moving servers in the very near future... so if there is an outage of some kind, please check back in a day or two... everything should be back online. I actually expect everything to transition smoothly... but just in case, you have been warned.
Happy Thanksgiving to you and yours!
We had a great lunch, the turkey was yummy.
Meta Programming has been a hot topic amongst the Java community for a while now. We have Jython and Groovy and other "add-ons" that help make writing code in Java less confining. The Ruby crowd has been running around screaming "Oh Oh!! Pick me Pick me!!" for the last couple of years, but it just hasn't caught on. I enjoyed my days writing Perl, mainly because I was learning how to write code, so I didn't really know any better. Then I "upgraded" to PHP, primarily because it was easier on my web design partner. I was then asked to move to Java by my boss because it was the "cool language to use" at the time. Then I got out of programming for two years to travel around the world.
When I came back, I bumped into IDEA and I knew Java was the language for me. It made writing code so much easier. I was CTRL+Space and ALT+Enter'ing my way through programs in no time. Whenever someone wanted a project done, I pushed for it to be in Java. The language was far better than PHP and easier to grok than complex Perl. And, oh yeah, it had a really nice IDE.
Java took off because of IDE support. As much as I don't like JBuilder, I think we have Borland to thank for this... and lets not forget those companies that Borland has purchased :-)
From time to time I wonder why Perl and PHP didn't take off. PHP had problems with a consistent "interface". There was a special library for everything, and they all worked differently than the others like it. The first thing you did back in the day, was write a database abstraction layer so that it would be easy to switch between databases if you needed to. The second problem was no IDE support. Until recently, there was no CTRL+Space for PHP, no environment that allowed you to quickly view/test your changes. Perl libraries were consistent, but the web framework was slow and clunky. Toss in the same lack of IDE and you have a language that is relegated to quick one off scripts that performed a specific function in a specific domain.
Don't get me wrong, I know that large systems have been built on both PHP and Perl. I believe Yahoo! is using PHP on new systems that they create, but PHP now has IDE support and PEAR (PHP's answer to JDBC and DBI as well as some other sensible aggregations of functions). But I think those large systems are the exception and not the rule. Unless I was building a website that was required to hook into some very specific PHP library, there is no way that I would ever go back.
I think Ruby looked at the DSLs (Domain Specific Languages) and learned what was good and what was bad and came up with a nice language. If Ruby ever gets IDE support, there could really be a revolution. But until Eclipse or JBuilder or IDEA starts putting Ruby support in their tools, it will never catch on like Java. No language can be the ubiquitous language, the most popular language, the most "corporate" language unless it has IDE support. Reality is, enterprises have to be able to hand their developers a tool that will help them get their jobs done.
Enter Language Oriented Programming. Sergey Dmitriev, the CEO of JetBrains, seems to be onto something. It looks like they may be working towards creating an IDE that will allow them to easily add new languages. The LOP paper takes a much more CS oriented look at why and how, so if you are interested in the future of writing code... You should read the LOP article.
Uncle Bob wrote a very clear explanation of the Visitor pattern. This is just a permanent pointer to a good explanation. As you were.
We have been watching a lot of Indy films lately. One of my favorites was The Big Empty. One that I saw last weekend was The Station Agent. It was slow, but really paid off in the end.
IMSmarter is the name of a cool service for Instant Messaging (IM) Smarter. Basically you set your favorite Instant Messenger to proxy through their service and it logs everything and provides other useful services.
If you forget where you were supposed to meet your friends for dinner, you can go to IMSmarter.com and look it up, from any computer. One of the cool features that I like is the reminder service. You say "bug me in 30 minutes about the meeting with Jim" and IMSmarter will send you an instant message to any account that you have logged in that they are tracking to remind you that you are supposed to meet with Jim.
Engadget has an interview with David Weekly, IMSmarter.com's creator.
My friend David came into my office a couple of months ago extolling the true glory that was Sage. For those not in the know, Sage is an RSS feed aggregator built as a plugin into Firefox. I gave Sage a try and quickly said, no thanks and went back to Opera. Opera's RSS aggregator is really nice, just click on the RSS link on any page, and Opera subscribes you to that feed. Very nice. Tightly integrated and sensible.
What bugged me about Sage was that you couldn't mark all of the feeds as read. Whenever you added a feed, you had to go through and click on every article so that Sage thought you had read it. Very annoying. Being the good Open Source slacker that I am, I opened up the code to see how hard it would be to implement a "Mark All as Read" feature. Low and behold, the code was already there! They just needed to have the widgets added. So, 1.3 was released a couple of days ago and I just installed it. There is Mark All as Read and his friend Mark All as Unread.
There are some other cool new features, but I will leave that up to the reader to discover. If you are tired of having *another* application open, or are just looking for a nice aggregator, give Sage a try.
*UPDATE* Apparently Cris was the person to first introduce me to Sage. Must give credit where credit is due...
I moved closer to work this year. I was commuting an hour and a half each way. Some days I would get lucky and it would only be an hour. So, taking the pessimistic view, I have gained 2 hours every week day. There are a slew of techy things that I would like to do, Javadoc Jaxor, write a Jaxor tutorial, create a way to do CRUD easily, but I don't have time for that anymore! I don't even have time to really write in my blog. My kids are actually awake when I get home and so I am spending time with them. And then my wife wants some time too, and before you know it, I have to go to bed.
Things are changing, I can feel it in my gut. I don't know how, but I will get back to being a geek in the near future. But not today, not right now. I am going to go play with the kids.
/\ndy posted a quote from 84 years ago that discusses how the person that gains the office of the President is the most devious and mediocre person running at that time. He means this as a slam to President Bush, but I would like to point out, that there was a President Clinton before him. I get the point, but I doubt the quote would have been posted if Senator Kerry won. Please remember that generalized jabs at the current President should also be applied to past and future Presidents.
This Robert X. Cringely article talks about a contract that Microsoft just won with the U.K.'s National Healthcare System (NHS). They are betting big that they can do what the Lockheed Martin's, CSC and EDS's of the world cannot; build a working enterprise system.
I have seen how these large companies infest organizations and it is sickening. I work next to the group that is implementing our financial accounting system and it drives me nuts. There are 8 people in a conference room for half of the day every day. How can that be productive? I know financial accounting systems are a beast of a whole different kind, but does it really require building by committee?
I would love to see a documentary on how Microsoft actually executes the development of that system. Bob predicts that they will have 2 managers and 12 developers working on the core peice of the puzzle. It would be nice to be able to show my upper management a documentary on how big systems could be built.
I have heard some rumors that things may not be all that well at JetBrains. I have heard that they are having "Financial troubles." I was personally worried about a lack of cool new features in upcoming versions of IDEA. There was much grumbling from the community about supporting Aspects and other odd new technologies for the 4.x series. We thought JetBrains had lost touch with the community. However, AOP turned out to be more than a fad, Subversion is looking better than ever and they continue to improve the GUI editor. So the 4.x series looks like less of a blunder and more like good forethought.
So, now 5.x is in the works, but this time Eclipse is a real competitor. The JetBrains guys really need to pull a rabit out of the hat to stay in the game and make it worthwhile to actually spend money on an IDE. According to the Irida Plans, it looks like JetBrains is making another run at staying on top of the features race. I got so excited about the new features that I forgot to start the download until I got to this sentence!
So what is brewing in the JetBrains cauldron? How about J2ME, XML, CSS, JSP (including JSP refactoring), Importing of Eclipse projects (HAH!) and much much more.
Eclipse is threatening to completely take over with the inclusion of JSP and XML editors in upcoming versions, so JetBrains has started pushing that bar higher. I don't know if this will keep them afloat, but it does show they haven't given up. Give 'em Hell JetBrains!
I am not the greatest programmer, but U2 should fire whoever created their site. I was only being slightly naughty and caught a couple of PHP errors (slightly naughty == open a link in a new window... on purpose). Then I scrolled with the mouse wheel and the page went bye-bye, never to return.
From time to time Charles post some of the most whack links in his quicklinks. Here are two that will forever warp your skull:
Bunnies gone wild
An Eggsellent Movie
NFJS is a great value for companies. You get the benefit of bringing in industry experts to teach your developers for a very reasonable price. And it isn't just one expert, but many experts. It also gives your team access to the creators of some of the tools that they may be using every day. In this open source world, the creators are just an email away, but when an email is coming from a person that has a face instead of some random joe, you are more likely to get a response.
So I am now sitting in the HiveMind tutorial. I have never really bought into the whole IoC/Dependency Injection mindmeld, but since I am using Spring at work I thought I would check out HiveMind to see if it would shed any new light on the subject.
Howard just said something that kinda explains why Tapestry and HiveMind are the way they are. He said, "I am a little neurotic about things like that", talking about error feedback. He then moves on to explain his 4 principles for software frameworks:
Simplicity
Efficiency
Consistency
Feedback
Howard says that feedback is one of the biggest pluses of his frameworks and something that he strives for. I think this is something that many frameworks lack and should strive for as well.
IoC is just a better way of doing JNDI lookups. It seems like Sun understood that everyone was having to solve the same problems, so they created J2EE. J2EE has in essence created ORM/Persistence frameworks, IoC frameworks and MVC frameworks for the web. It would be humorous to find out that Sun's original intent all along was to create a thriving framework environment. For some reason I doubt it :)
Anyway, I am glad Howard is neurotic "about code". He gives framework providers something to strive for.
So, I have been spending this weekend at NFJS learning about all kinds of nifty technologies. I am afraid that JSF will become this monster freight train at work, so I wanted to know what I was in for. David Geary, one of the members of the expert committee, was presenting.
JSF is really cool, unfortunately they are over a year late, my opinion. Part of the problem is that JSF is a specification that is built by a committee. Any time you get a committee involved with creating something, you have to overly compromise the output. This is a trait that doesn't just effect the software industry. Ferraris are not built by committee, but Corollas are. You aren't gonna win a race in a Corolla, but I wouldn't want to drive a Ferrari every day either. Back to JSF. Over the long haul, the JSF may actually become a valid alternative, but they have a lot of catching up to do.
Today I am going to see what Tapestry has in store.
So, the comment spam has gotten so bad, and MT-Blacklist has gotten so slow, that I have to make a change. I have avoided WordPress simply because of the dependency on MySQL. I may choose something else... or even write my own. Not that I have time to do either.
This has to be the best webflow system out right now.
The documentation is really well written. I am now more convinced than I was a month ago that Spring MVC is in my future. I wish this had been available when I had this nasty 5 page pageflow system that needed to be reused by 8 different models.
I also like it because there isn't a dependency on JavaScript. The whole debate on whether or not we should do configuration in a scripting language or XML has been decided by looking at StrutsFlow. Bad. Yuck. Never. Ick.