Interesting Programming Reads

Blog at trepca.si: Java, Python and defaults – Sure is true enough.

Code To Joy: Open-Source group announces jJavaM – It was an April fools, but a good one for the sarcasm.

Python-by-example – Will come in handy.

Better Programming With Java EE: A Conversation With Java Champion Adam Bien
– Dispels some myths.

An Army of Solipsists: Blog Archive: Using Spring MVC Controllers in Grails – Might come in handy if I ever get around to experimenting with Grails.

Anil Dash: Atom Wins: The Unified Cloud Database API: “I want every program that thinks of itself today as a “blogging client” to reimagine their market as being a front-end to a database in the cloud. I want all the apps built on smart database abstractions to think about this new unified cloud API as an option they must support. And most of all, I want geeks to make something cool with this that we couldn’t do before.”

Hosting Java Web Applications: Why Is It Still So Hard? | Javalobby

John Wilson: Groovy and XML | Groovy Zone

“crippled by their own process”

Coding Horor: “Is Eeyore Designing Your Software?”:

Here’s my honest question: does open source software need all that process to be successful? Isn’t the radical lack of process baggage in open source software development not a weakness, but in fact an evolutionary advantage? What open source software lacks in formal process it makes up ten times over in ubiquity and community. In other words, if the Elbonians feel so strongly about localization, they can take that effort on themselves. Meanwhile, the developers have more time to implement features that delight the largest base of customers, instead of plowing through mountains of process for every miniscule five line code change.

Are large commercial software companies crippled by their own process?

I’d say that in large corporations, I’ve seen many internal projects beat down by the same.

The new portal architecture at CIM doesn’t suffer from this, but the old one certainly did. We’ve come a long way.

Design Patterns Aren’t (That) Evil

I agree with much of Jeff Atwood’s writing when it comes to programming and development. I’d say on any given subject 90% to damn near 100% (congrats to him on his new adventure). But I think his post on design patterns, unfortunately, falls into a line of argument that I disagree with strongly – that *identifying* design patterns leads to complexity. Complexity because some engineers leverage them right from the get go without thinking about simplicity first. He even flags Head First Design Patterns as a potential complexity creator.

I understand the concern. Every once and a while you get into an argument with someone who is telling you your code stinks because it doesn’t employ pattern “so-and-so” and every once and a while you come across some needlessly complicated code because the developer thought pattern “xyz” was the appropriate solution and implemented it without thinking a few minutes more about the problem and putting together something far simpler.

Replace the word “pattern” in the above sentence with “technology” or “API” or “archetecture”.

Give it a try. It leads to the same place. And I’d say the problem doesn’t start with patterns (or technologies, or APIs, or whatever). It starts with the developer.

Does that developer start from a KISS viewpoint, or one enamored by buzzwords?

So Jake Says: Music and Design Patterns:

Chord progressions are design patterns. They give a common framework musicians can use to communicate. However, the implementation is left to the musician. You can play classically or bluesy. You can shred the progression. You can take the most “outside” ideas of modern atonal theory and apply them to the song. There are elegant implementations, there are common implementations, there are “outside” implementations, and there are bad implementations.

Chord changes aren’t represented in the core notation/language of the music, but you can use musical notation to spell out changes. You can also use shorthand languages to design the music. The sentence “12-bar in Bb, 2-5-1 turnaround, on my lead” gives away none of the implementation details (voicings/melodies, etc.,) yet the song is written in a breath.

Design patterns act the exact same way for programmers. They are, at heart, a common framework by which programmers can discuss a design. They can spend less time focusing on minutiae and more time discussing design and code.

Even if you are using Python or Perl and you don’t have to explicitly define an Iterator to loop through arbitrary collections, you could easily point to a “for x in y” statement and say “iterate through y” to describe part of an algorithm. You will be correct, and a coder from any paradigm won’t have to give it two thoughts.

Design patterns always exist, but are sometimes invisible.

Charles Rocks

For most Web-tier development the following Firefox plugins provide me a great set of tools to get my job done:

Lately however, I find myself needing to trick out my local hosts file for more and more work, in addition to needing to change JavaScript script behavior, on the fly, loaded from various hosts.

Charles lets you do that and a whole lot more. It’s become am integral part of my toolbox. It’s worth the license fee.

And its written in Java so your investment is cross-platform. I’ll be migrating to OS-X soon and not needing to find a replacement for this is great.

Getting Started With Jython

Sun’s hiring of two of the biggest names in Python-land – Ted Leung and Jython’s Frank Wierzbicki – and my experiments with Django – has encouraged me to dip my toes in Jython. Here’s a few decent starting points:

IBM developerWorks: Charming Jython

IBM developerWorks: alt.lang.jre: Get to know Jython

ONJava: Tips for Scripting Java with Jython

JythonWiki: Learning Jython (just starting this one, but this looks most comprehensive)

And of course the home page: The Jython Project

Why I’ve kinda disappeared as of late – the new comcast.net

Take a gander at the new Comcast.net (we’re still in beta) home page 🙂

As some of you know, I’m part of the development group that builds the systems that drive and support comcast.net.

I’m excited about this latest release – it’s been my pleasure to be part of an awesomely talented team and on this project, I’ve been a primary contributor to the architecture as well as code. In a way, it’s a return to my previous role at Knight Ridder Digital.

I think we’ve built a platform that will enable our product teams to rapidly get new, working features and functionality to customers, where previously, doing so was a chore. This system really sets our UI team free – no longer requiring server side developers to create new functionality or even present new content.

Hopefully I’ll get the chance to to post about the technologies and techniques we’ve employed in its development, like Arpit has about The Fan.

I think it’s safe for me to mention the Web tier using Spring MVC and FreeMarker, with a back-end that resembles something akin to CouchDb, and feeding it all is a very modular, extensible CMS. Each tier is usable in different projects, together or independently. It always comes down to implementation details and I hope to share a few sometime, either here, or on a team blog someday.

You can visit our community blog to track changes to the site and get a short summary here.

Good book: “RESTful Web Services”

Labnotes: “RESTful Web Services: the book you already decided to read”:

If you think the idea of using services as building blocks for your software is the best thing since 30″ displays and free schwag, then you already know this book exists. You also know that SOA is some serious stuff best left for trade magazines looking to sell more ads. Out there in the real world, we can’t get anything done without our power tools. And you heard of the one called REST, they say it’s the best brand around. So anyway, you already decided to read this book, now you just need to make it happen.

Here’s a link to buy the book from O’Reilly or click here to buy it from Amazon and help Labnotes (a terrific blog in its own right).

Honestly, this book reinforces long held beliefs of mine about Web development, while giving me a useful vocabulary and set of examples to use in discussion.

That means it’s invaluable 🙂

More from Jon Udell and Linux World.