Archive for March, 2008

The Web Framework Battle Royale

As you have probably guessed from the subtitle of this blog, I’m a Java guy at heart, in most cases I live and breathe Spring. This doesn’t mean my eyes aren’t open to the fact that there are other web frameworks out there, in fact I’ve done my share of experimenting with RoR, CakePHP, and even Django; as soon as I get a chance I’ll also be playing with Grails. With that said, I’m going to step into the ring.

At the Philly Emerging Tech conference last week there was a panel I wish I would have attended entitled “Battle of the Frameworks! A Roundtable Debate - Which Framework Will be Left Standing?” An amazing topic, but with a fundamental flaw; why does only one need to be left standing? There’s a framework for every budget, language, and style of programming out there; different frameworks are what makes the industry grow and innovate. I work for a company that works for big companies, big companies seem to have a tendency of throwing unreasonable amounts of money at simple problems because some other big company has attached their name to a so-called solution. Is this the right way to make a website? Probably not, but I can’t argue with it because it pays my salary.

Once you step away from the “Enterprise” languages and app-servers you find yourself wandering through an interesting new world of start-ups, consultants, and hobbyists. These are the people who push the new breed of framework, they’re also the ones that push innovation on the web, these are the people that invented web 2.0, and the people that will discover web 3.0 right around the time the “enterprise” figures out what web 2.0 really means. The new frameworks are for innovating entrepreneurs, the old ones are for corporate behemoths. If you fall in between, my personal money’s on the solution with the least amount of risk, and I highly doubt that it’s the one that requires a rack’s worth of servers and $250,000 worth of software licenses.

That’s my two cents; for a different perspective, check out Giles Bowkett’s commentary on the web-framework panel, there’s nothing quite like bringing a little Plato to the table when discussing a near-fistfight at a conference panel. (I saw Giles’ presentation on Metaprogramming at the conference, and I have to say, the more I think about it the more interested I’m becoming in the topic, even if it is a Rails thing.) On a related topic, Giles mentions Obie Fernandez in his post, who’s company Hash Rocket offers the service where they design version 1.0 of you website in three days on rails. Mind you, I’m sure this is version one from the 37signals perspective, but do you really need to risk hundreds of thousands of dollars and months of time to find out your idea is not going to make it? Besides when was the last time you saw a full-featured Java EE app built in three days? Ladies and gentleman, there’s plenty of room for plenty of frameworks and all of the competition and debate that goes with them; I for one cannot wait until the next contender steps into the ring.

Best Laid Plans

I tried. I even had a rough draft; but when I went to try out my concept it didn’t work. My article on Friday was supposed to be on 301 redirecting from the old WordPress URL structure to a new URL structure, but after doing my research, I’m not sure it’s even possible. My guess is mod_redirect ignores URL parameters, but I definitely need to do some more homework.

The problem I was trying to solve is that Google has quite a few of my pages indexed, but they’re in the wrong permalink structure and I’d like to convert them to the friendlier structure that I have now. Looking around the web there are a few WordPress plug-ins that are supposed to help you migrate, but it seems they only migrate from one non-default structure to another. Currently, most of the links still work, but I’d prefer to have the new structure in the SERPs to gain the SEO benefits of having keywords in a URL.

So, as of now, the plan is to solve my problem and then post the article. Hopefully, if all goes well, there will also be another new article on this coming Friday, but only time will tell.

Philly Emerging Tech Day 2

Loved the keynote this morning by Floyd Marinescu the CEO of InfoQ, it probably would have been better yesterday because it introduced a lot of the technologies being covered in the individual presentations, but beyond that, very interesting.

Next, I checked out OpenLaszlo 4.0 - Java ME, Ajax and beyond, I wasn’t too interested, so I don’t have much to say. Next, I attended WS-* vs. REST: Myths, Facts and Lies by Paul Fremantle of WSO2. Paul’s presentation was excellent and incredibly informative on both SOAP-based web services and RESTful services.

As with yesterday, the afternoon was not as good as the morning, I attended Designing RESTful Rails Applications which was mainly because of wanting more information on RESTful applications. This one was a little too Rails-centric for my taste, but it exposed a flaw in REST that eliminated some of the wow-factor in the concept. Apparently HTML does not allow for HTTP requests of the non-GET or POST variety such as DELETE or PUT, which means a web-based front-end is not purely possible. Apparently Rails works around this, but I’m not thrilled with that solution either.

Finally, I attended an excellent presentation on Hibernate Search by Emmanuel Bernard. Hibernate Search is a system designed to capitalize on Lucene’s indexing ability in conjunction with Hibernate annotations in order to map search results to Hibernate entities. Very cool, and definitely on my list of things to play with.

Philly Emerging Tech Day 1

Day one of the conference was pretty interesting, definitely better in the morning that the afternoon, but at least lunch was good! The Keynote was interesting, by Lucinda Holt from Commerce360, an impressive look at being in the right place at the right time and choosing the best horse to back. The first session, on the changes in Spring 2.5, was interesting, but nothing new since I’ve had my nose in the 2.5 docs since the version was released. The second session I attended was on Grails, hugely interesting, and I can’t wait to play with it! The speaker was spectacular, and technology itself looks a lot more promising than RoR because it compiles to byte code and is deployed to a standard Java app server.

After lunch the Ruby session on Metaprogramming was fascinating from a geek perspective, but provided very little in terms of business use for a Java programmer, or a Ruby programmer for that matter. Finally, I’m sitting in an OSGi presentation which is so interesting I’m writing this blog post. Oh well, tomorrow looks to be a little more interesting.

Philly Emerging Technologies for the Enterprise

I won’t be at the TheServerSide Java Symposium this year, but I will be going to JavaOne. To hold me off until then I’m heading down to the Philly Emerging Technologies for the Enterprise at Drexel. It looks like the typical pipe-dream of a java conference with the requisite talks on agile development and web 2.0; although their definition of web 2.0 seem more like RIA with Flex than my preferred definition. As of now, I think I’ll be in the following sessions:

March 26th
March 27th

Assuming the wireless is working I’ll probably be blogging and/or twittering from the conference so stay tuned for my thoughts!

Why I’m Blogging

I have three main reasons for blogging, in this order:

  1. I need my own personal soap box
  2. Personal Branding
  3. Additional Income

In my opinion, number one is probably the most prevalent reason to blog, in order to be interesting you need to have opinions, and if you’re opinions are worth having they’re worth sharing. I have things to say, and things I’d like to discuss, and sometimes, I just want to hear myself talk. On my site I’ll cover my topics in my way, I’ll tell you that I think Windows sucks, and that hand-crafter HTML beats a WYSIWYG any day, and that’s my prerogative. I suppose it’s not even entirely soap box, because I’m hoping to have at least a little sandbox here, since I’m usually playing with some new technology or framework it will probably be nice to have a place to show the world.

Number two is my ego. A few years ago, if you googled “Eric DeLabar” you’d find a lot of information about a professional soccer player with the same name. No offense to that guy, but I’m an internet professional who has done quite a bit of work in SEO, it wouldn’t look to good if I didn’t rank for my own name. As of now I’m doing a little better, but I’d like to permanently cement my way into the number one spot on Google. I’m also hoping a little work with XFN/FOAF and the Google Social Graph API will help to strengthen my online identity.

And the final reason is additional income. I’m not going to lie to you, my wife’s not going to let me spend hours a day to appease my ego, if she doesn’t see results she’ll keep me busy on other things. I’m not planning to go John Chow on this site, but I have a monetization strategy that I’m hoping might pay for some of my daughter’s college education (she’s 6-weeks old today so I have some time to work on it) and a lot of my retirement. What does this mean to you, the loyal reader? Basically, sometime in the future I’ll be selling advertising, I’ll probably have AdSense, and I’ll definitely try and take advantage of the Amazon Associates Program. I plan on doing all of this tastefully, I think I have reasonable goals, and as (hopefully) demonstrated by my priorities here, quality content is going to be number one priority.

As far as how I’m going to accomplish these goals, I’m looking to post every weekday, with the most attention paid to the Friday post which I’ll consider an article. I’m hoping the articles will be mostly tutorial in nature with an occasional op-ed on the industry, so far, I’ve kept this schedule for all of a week, but please be patient with me until I establish this site and my voice as an author.

Debugging the Client Side

By my definition of Web 2.0, one of the key requirements for any application is cross-browser compatibility. As a company, my employer defines this as IE 6+, Firefox 2+, and Safari 3 beta; all tested on Windows. It’s not ideal, but it covers a huge chunk of the market. This stack is pretty easy to test, but occasionally one of the browsers will throw a curve-ball and that’s where a typical the members of my team, or J2EE developers in general, get lost.

When somebody comes across some weird client-side error and they come looking for my help, I start with three questions:

  1. Does it validate? (Is it a strict doctype?)
  2. Is it in quirks mode?
  3. Did you separate content from presentation from behavior?

I think one and two are pretty obvious, if you’re not following the standards the browser can (and will) do what it wants with your page. Follow the rules and your playing field becomes a lot more level. Number three is a design choice that I prefer for keeping things clean; if your layers are separated, you know what behavior is coming from where. What does this mean? It means style is always stored in an external StyleSheet, JavaScript is always stored in an external JS file, and your HTML markup has no inline event handlers, script blocks, or style attributes. Not only does this make things easier to find and debug it also encourages progressive enhancement and accessible design.

Now that you’ve made sure those three cases are taken care of, do you still have the problem? I’d say 50% of the time the problem is solved, for the rest, here’s what I do. (First things first, make sure your toolbox is in order.)

For debugging CSS, use Firebug’s Inspect tool to make sure the correct CSS rules are applying to your element, this will show you which rules are applying and more importantly, which one is winning in the case of a conflict. If the problem is not showing up in Firefox, I’m guessing it also works in Safari, so it has be an IE issue. Check your floats, check your widths, and make sure you’re not relying on anything IE doesn’t support, like min-height or max-height. If you’re still not sure what’s going on, checkout the Microsoft Developer Toolbar. To get it, go to Microsoft.com and search for “Developer Toolbar,” I’d post a link, but every time I try bookmarking the page it moves, so it’s probably just easier to search for it. The Developer Toolbar works similarly to Firebug, but is definitely lacking. If your problem is in Safari, get a copy of the Webkit Nightly and enable the Web Inspector. It’s definitely better than the IE Developer Toolbar, but still not Firebug. In a pinch, try out the WestCiv XRAY and MRI bookmarklets which are easy enough to install and uninstall on a workstation that is not your own.

If you’re debugging JavaScript, the Firebug console is definitely the way to go for tracing, and you can even make it work on other browsers with their handy JavaScript-based utility. For IE specific errors you can try your luck with the Microsoft Script Debugger (again, search for it), but I find it to be a little bloated. At the time of this writing Webkit offers its own debugger in the form of Drosera, but it’s Mac-only, so unless you’ve got one you’re out of luck there. Finally, you can try out Aptana Studio which offers JavaScript debugging in Firefox (also in IE if you’re willing to pay for it), but I haven’t had a chance to really give it a test drive and at initial glance it seems a little clunky when working with J2EE.

There’s a ton of tools out there for debugging client-side problems, and with a little practice you’ll be debugging like a pro in no time at all. But please, remember one thing, the best offense is a good defense, separate your layers, avoid CSS hacks, and do things the right way the first time.

Colors, Inspired from Life

Yesterday I listed quite a few sites from which I picked a few aspects of design that I liked. I was looking more towards the layout and feel than the color but I did note a few palettes that I liked. Yesterday evening I was shopping in my local Old Navy and I noticed the colors being used in the decorations for the men’s side of the store. A solid brown wash with blue and white “boxes” and orange circles. I liked it so I snapped a quick picture with my phone and after playing for a while with different shades I came up with something like this.

color_study.gif

It’s pretty abstract for now, and it doesn’t offer any of the texture or depth I’m looking for, but as a palette, I’m very happy.

To add to my list from yesterday, I love the footer on Design View and 5thirtyone’s homepage is amazing (Derek Punsalan’s portfolio is also very impressive, I love the header and footer, but they’re not really what I’m looking for). Of course since I’m considering brown, I have to mention UnstoppableRobotNinja for its layout and sort-of brownish color scheme and Jeff Croft for his recent redesign and advocation of brown websites.

Sites of Inspiration

After an hour in the Smashing Magazine archives, I’ve narrowed my inspiration down to roughly 65 sites. Yikes. In general, I’m feeling a little more locked down for what I’m looking for, definate use of textures and depth, slight grunge style, and a not-so-blog layout. I’m thinking three columns for the home page, possibly elastic, articles on the left, menus, etc. in the middle, and tumblog on the right. Not sure if this theme is going to carry off this page though.

But anyway, without further ado, here’s what I’ve found:

Header

  • Kara Burke Illustrations – Love the texture and color, the grunge down the right is cool too.
  • Brandon Muth – Simple Web 2.0 style, love the typography but contrast is a little harsh at the bottom. Specifically like the subtitle.
  • EvanEckard.com – The menu is cool, and I like the logo.
  • cameron i/o – I love the horizontal rule and the brightspot is very slick. Logo simplicity works well too.
  • Toggle Design – Like the watermark circles in the upper right.
  • TNTPixel – The stapled subtitle is cool, and the texture and depth give it an amazing paper-like feeling.
  • adi Pintilie – Love the tabs, the angle is cool.

Layout

  • Schneeballschl8 – Love the three column thing with dueling content.
  • afasici papuasia – Love the vertical logo and high-contrast between the primary and secondary content.
  • I am Jeriko – I love the sunbursts and texture,the locked background is pretty slick. Blogroll in the footer is cool too.
  • blog.critical – Clean and grunge.

Footer

  • Wilson Miner Live – I love the Ephemera section and concept.
  • SamRayner.com – The grunge-type footer is cool, again with the music/reading recommendations.
  • Verbalized – Playful and colorful, not quite sure if this will fit, but I like it.

Secondary Content

  • SamRayner.com – The watermarks in the right nav are a nice touch.
  • Squawk – Subtitles are cool, the bullets on the link-list are very sharp.

Overall

  • Design*Sponge – Love the texture.
  • Blog What? Design – Texture and depth, a little bit of reflection on the headers, and the post-ending glyph is a neat touch. Contrast and typography are beautiful.
  • eleven3 – I just love it.
  • grantmx – The feel I’m looking for, clean and grunge at the same time.
  • Blogsolid – I’m torn on this one.
  • sr28 – Grunge. Web 2.0. Texture. Depth. Perfect.
  • 31Three – Love the color and texture.

A Style by Any Other Name

Ah, creativity. As always, I’m in search of a muse. Now I have a rather plain looking website just begging for some style. I’m moderately happy with the markup, and I feel comfortable enough with WordPress’ theming capabilities that I’m ready start making this site look like something. The problem is what?

I’m a t-shirt and jeans type of guy, so it can’t be too formal. Musically, I’m punk-rock influenced with a touch of emo and an appreciation for the classic rock and jazz of the non-smooth variety, and I’ve been known to let my musical influences define me, which makes me think grunge may be the way to go. I’m 100% Web 2.0, so a little bit of shine is a must, but not so much to be cliche.

What does that leave me with? I don’t know. I guess it’s off to Smashing for some ideas.