Archive for April, 2007

Top 5 Skills for Online Media Engineers

Monday, April 30th, 2007

I’ve been reviewing a lot of resumes for contract positions at several of the 10 ten online media companies. Its interesting to see the common set of java skill develop. So if you want to be a java developer here are the skills the market is presenting.

  • Struts MVC - the MVC everyone uses, inhouse MVC are dying out replace by open source versions
  • AJAX - everyone has this on their resume, but everyone means form validation without reloads (see Struts above)
  • XML - its the new way to write configuration files
  • JSP - This means understanding the servlet lifecycle and the ability to do gunt work by adapting the web pages for constant updates
  • CSS - everyone knows the basics of CSS which is good, big change from 2 years ago
  • JSTL & Tags - shows up on almost all resumes and everyone has a different level of experience
  • ORM & DAO - anything goes, lots of inhouse code which people are afraid to change
  • Spring - but only as an IOC container for Hibernate and the occasions bean configuration management

To me the interesting thing is the lack of variety. My favorite question so far has been:

Q: “Which XML parser did you use?”
A: “DOM & SAX”
Q: “Oh sorry let me rephrase, which implementation of an XML parser did you use?”
A: “DOM & SAX”

Its always the same! I’m not sure how exactly people are doing XML parsing with out knowing the implementation. I must be missing some super easy parsenow function in java. A quick google shows that even the Sun tutorial lists the XML parsers

What interests me the most is how shallow the tool box is. Take the MVC layer. I expected more variety like Wicket or Struts2. Spring is a good solution, but it doesn’t go far enough (especially in the view and model departments). Additional packages like Tiles and Sitemesh make a big difference.

Spring is a nice and people should use the configuration management and aspect oriented features more.

No one seems to have any knowledge of javascript libraries, which is really a shame. Pick a simple one and learn it. Its easy and lots of fun. I recommend script.aculo.us or JQuery. Exhibit is a standout facited browser written in javascript.

Lastly would be search. Search is a key skill for an online media company. Pick a searching technology and learn it. I suggest Solr, but MySQL full text search is a simple alternative. Egothor is all java and interesting, but I haven’t used it. A nice little project would be to create a simple collection and use scriptaculous to make suggestions as you type.

With all the good stuff out there why doesn’t more of it show up on resumes?

5 Great Things About Rails MVC layer

Thursday, April 26th, 2007

Everyone can learn something from looking at the Rails MVC framework. Here are some highlights

1) The model is feature rich, making it easy to data manipulation in the model. For example code is often put in the controller to determine if an object is an update or an insert. This code should live in the model; it shouldn’t pollute the controller
2) There are helpers which are only accessible in the view. So little if then statements, popup windows, and javascript generation may be tucked away with out the temptation to manipulate them before the view is rendered. Today there is too much side effect programming where a controller will generate view code.
3) RJS templates provide a mechanism for injecting javascript, while keeping it separate from the view and controller. This rocks, the javascript can live on its own manipulating the page after its rendered and it can read session data.
4) Patterns for manipulating hashes make parameter logic easy. Rails has patterns for removing empty elements from hashes and combining hashes together, then digesting the resulting hash. This gets rid of all the if/then logic to check if a parameter has a value
5) Lots of helpers. Link helpers, URL helpers, image helpers, javascript lib helpers. This ensures that all paths get a little wrapper tag. This is a life saver when developing multi-channel or multi-partner sites

Patent Claims and Marshall TX

Tuesday, April 24th, 2007

Techdirt reported Patent Trolls love Marshall TX. Which was also reported in a recent Slashdot article

People are often critical of patents sighting examples of big companies picking on little ones. Honestly I see it the other way around. Small companies get acquired while large companies get picked on by small companies with nothing to loose. I would rather have the current system for intellectual property then no system at all.

JQuery and Fisheye how cool is that

Monday, April 23rd, 2007

I’ve been hearing good things about JQuery. After YUI group posted a presentation by John Resign the creator of JQuery I decided to take a look.

Right away I found a cool plugin called Fisheye. I whipped up a version and posted it here.

http://caldergroup.com/fisheye.html

Grails, Trails, Sails, Slingshot

Sunday, April 22nd, 2007

There is a sponsored listing for Java BOF session comparing Grails, Rails, Sails, and Trails.

Its all a bit much for me, but there is a real need for these frameworks. Lots of companies are using Java (although Charles Shwab is moving to Microsoft .NET). Lots of online media companies are using Java. If your are an online media company with a Java Architect you might be in for a rough ride. Java Architects create a build it inhouse, meritocracy of java code. That in turn creates a confusing jumble of choices. Much better to have a small well worn tool kit, with an emphasis of picking up new tools at the expense of older ones. Listed below are 4 java frameworks, if your java stack is in need of repair rule take a look at each of the following.

Rails Routing by David Black

Friday, April 20th, 2007

I round a nice rails
routing roundup by David Black. The slides don’t have much in the way of text which is good ’cause they are easy to scan. Thats also bad if you started reading expecting an introduction.

For those of you who don’t know Rails take a peak and compare it to something you do know like Apache mod_rewrirte

Kettle the original opensource ETL

Thursday, April 19th, 2007

Pentaho aquired Kettle ETL tool. I never used Kettle myself. I only saw it in action. It was pretty nice. Much better than something I would have developed myself. Kettle is all java, which makes it easy to extend.

There are other open source ETL tools out there. Maybe there is a diamond in the rough there, not much activity in the last year or two on all the ones I checked out.

In addition to batch ETL actively I would love to see an ETL tool to pump data in small batches or as a constant stream of messages. That would be a useful feature for populating search collections, populating aggregates grouped on slowly changing dimensions, or keeping legacy/new systems in-sync before a cutover.

Open Source ETL

Wednesday, April 18th, 2007

I discovered an open-source ETL tool Talend Who knew?

I remember having to write my own ETL tool, because my company didn’t want to pay for an extra license on a tool they already had (Informatica). I have had plenty of conversations with developers who had no idea what I was talking about when I asked if they considered an ETL tool for their crawler, transformer, loader thingy.

A solid opensource ETL tool, marks the end of software development and the beginning of component integration. Time to dust off you systems integrator hat.

10 reasons not to use rails

Wednesday, April 18th, 2007

Well I posted this before, but it disappeared . Here are 10 reasons you may not want to use rails

1) The learning curve is huge. Just the other day I wrote my own version of cycle I also learned how to inject javascript from a controller.
2) SDLC is broken for teams. Yes Rails is great for a team of one, but version control and deployment is monolithic. For example if two developers independently work on two different controllers with two different views there is no way to version and deploy these components separately.
3) Yet another deployment system. Rails has gems and plugins. The rest of the world uses rpms, debs, wars, and whatever windows uses.
4) Ruby is green threaded. One server is slow you’ll need many-many servers to handle the load. Good thing virtulization is taking off.
5) ActiveRecord breaks down when you want to pivot rows into columns. This use case comes up with catalogs with many topics, each topic containing its own fields. Luckily there is RBatis.
6) The code base is unstable. The main code line and the gems are constantly evolving with little consideration for backwards compatibility. Combine this with poor deployment managment
7) Multi-lingual support is broken. Multi-byte characters aren’t supported, so stick to one language!
8) Rails web containers are unstable. There are many choices for a web container webbrick, mongrel, and lighthttp to name a few. None of them work as well as Apache. The servers get wedged. Apache with Fast CGI doens’t seem to work and those who start using it move on to something else.
9) The code is obtuse and you’ll need to read it. If you want to understands how to do things you’ll need to read the code.
10) The conceptual documentation is missing. Its a framework, yet the concepts go unanswered. For example, what exactly are restfully resources for and why isn’t there a client library?