Podcast: Interfaces As Services

  • Update: Podcast missing *

Enclosed is a podcast on interfaces as services. Agile Business Coach, Chris Matts, blogged a couple of times this week about how interfaces should emerge by looking at the objects that use them. I agree, and wanted to give my own thoughts. Important concept, as it’s driving many trends in architecture: dependency injection, Spring/Pico, mock objects.

Click here to download or listen: InterfacesAsServices.mp3.

BUT (and I’m going to keep saying this), if you haven’t yet got into podcasting, get yourself over to ipodder.org. You don’t need an IPod … a computer or any other mp3 playing device will do. You’ll be able to subscribe to a feed of all updates of this show and any others you’re interested in. All open and free. More info at Podca.st.

Once again, this podcast includes a sample from My Morning Jacket’s “One Big Holiday”.

Feedback always welcome – mail me an MP3 or text.

Dynamic Java Summit: it’s gotta be Groovy Baby

Dynamic Java can’t come fast enough. So it’s good to see a Dynamic Java summit (via The Server Side was held by Sun,. It brought together several dynamic language heavyweights, including leads of Python (Guido), Perl (Wall), and Groovy (Strachan). A moment reminiscent of a certain April Fool’s Day announcement.

Dynamic Java can’t come fast enough. I firmly believe the future is Groovy, because it is designed to be as close to Java as possible. Any dynamic language language is intrinsically different. But why make it any more different than it needs to be? With a hybrid like Jython, you have to use subtly ** different syntax** for everything. Do I “add” to a list or “append” to it? How about when I concatenate strings? Even worse, you have different semantics too. If I add an element to a list, will it go the end or the beginning?

It’s even possible to have a Jython list and Java list in scope at the same time. Total confusion!

(I’m not bagging Jython in particular – it’s served it’s purpose well and just happens to be the most successful of the hybrid-style approaches.)

A Groovy list is basically a Java list. It might add some convenience methods and give you some nice script-like syntax, but you’ll still add with add() and you’ll know all that will come from it. Multiply that effect by thousands of classes, and you start to glimpse the power of a dynamic language building on something you already know. Because it’s developed with Java in mind, Groovy libraries will likely focus on wrapping Java libraries, and will evolve much faster. Tricky corner cases will be rare.

Now you could argue it’s a waste to develop a whole language around another language. You could say Java’s good and Python’s good, so we should just create a little binding between the two, i.e. by writing bytecode from Python. And we could have a Java-Ruby binding and so on. And a Python-Ruby or a Python-C# too if we like. This many-to-many mapping might seem more efficient, because all of the languages can develop independently and you end up with more choices. In contrast, Groovy will only really work with Java, so any Groovy work is wasted when it comes to creating a dynamic language for C# or C++. It’s a one-trick pony.

I don’t buy that argument. Two independent languages cannot easily be combined together, for the reasons described above. They will always have different idioms, different developer populations, different syntax, different semantics. For a language as popular as Java, it makes sense to create a dedicated dynamic language. And I, for one, am looking forward to scripting where it makes sense to do so. Including build management, UIs, and business rules.

Agile Software RiffCast

Agile Software Riffcast

Here’s my first podcast. In my podcasts, I’ll mostly be covering software development topics such as architecture, usability, design patterns.

This is the first of four “Riffcasts” where I’m riffing on the topic of agile software development. The series will contain:

  1. Agile software development overview. Embracing change and the Agile Manifesto. (The podcast enclosure on this entry.)**
  2. Survey of agile methodologies and perspectives. Including Scrum, Pragmatic Programming, Crystal, DSDM, Lean Manufacturing, Extreme Programming.
  3. Extreme Programming. More detailed look at the most famous (or notorious, depending ) Agile Methodology, Extreme Programming.
  4. The Dark Side of Agile. Problems with agile approaches, situations where it does and doesn’t work, open questions.

My plan is to publish these roughly once per week, but the beauty of podcasts (as with blogs) is that I can upload them when I like, and subscribers will have them soon after. Unlike traditional radio, they don’t need to be sitting there at the time I “broadcast” it. So I’m going to see how things pan out.

I’m going to do stuff in parallel with these “Riffcasts”, all on the same “Software As She’s Developed” stream. Such as more “Blogcasts” of a more general nature.

Really, really, keen for your feedback, especially ingratiating syruppy praise! [email protected]

The MP3 File

You can hear the podcast by clicking here. But long term, there’s a much better way …

Subscribing to this Podcast

How can you subscribe to this stream, so you can have this and all my future podcasts automatically downloaded (as well as hundreds of other shows)? Easy – download ipodder (or any other podcasting client) and simply add this feed:

  • http://www.softwareas.com/podcast/rss2/

ipodder and the hundreds of podcast programs are all free, BTW.

Credits and Copyright Bits

This podcast is licensed under the same Creative Commons license you find attached to softwareas.com. Basically, this means you can do whatever you like with it as long as you say how awesome I am. (I think that’s the gist of it, but the full details are here). The lead-in track is a sample of My Morning Jacket’s “One Big Holiday”, who were among the enlightened artists who contributed to the Wired CD. Thanks to the band, Creative Commons, and Wired for making it possible.

They dreamed of a brave new world of sharing and liberty. I superimposed a quality track onto a stream of geeky rambling.

Rhythms in Software

John Mitchell discusses how rhythm applies to software development. Reminds me of perhaps the most famous experiment on human biorhythms: McClintock’s “Menstrual Synchrony and Suppression” (1975).

I’ll spare you the (gory) details, but it essentially lends credibility to the old belief to that biorhythms converge when people are in close contact, have similar lifestyles, etc. While this paper points to biological effects, it is interesting to consider how a harmonious development team working according to a standard XP or RUP iteration cycle might actually converge toward synchronous rhythms. Perhaps this would be a good thing to explicitly aim for, and maybe it was what’s going on when we talk about “being on the same page” and “working as a unit”.

Or alternatively, if we could control rhythms, maybe it would be better to keep them out of sync for the sake of diversity. Important to have some wide-eyed vigilantes watching out when everyone else is in siesta mode.

Dear Sun, Please drop Netbeans!

So I just went to download JDK 1.5 and the JDK download page includes a big fat image and download link for NetBeans. Why does Sun continue to develop and promote this? Internal politics gone mad?

In the corporate world, there are several rational choices for IDE and NetBeans doesn’t feature. Those options would include Eclipse and Idea for sane developers, Vim/Emacs for die-hards, BlueJ for students, and JBuilder for the marketing-influenced. NetBeans is free, but Eclipse is too and it is – how to put this delicately – better. I don’t say this with first-hand experience of NetBeans, but I do say it having consulted people who’ve used both … most people who’ve only used one IDE will tell you it’s the best, so I pay attention only to people who can make a valid comparison.

The only rational reason I can think of for a project to require NetBeans is if the project or organisation has previously been using it, and needs an upgrade. That being the case, a big inviting link on the JDK is overkill – separate page would do.

The problem with this heavy promotion of NetBeans is that it’s only going to mislead Java newcomers. They will be downloading a substandard IDE that may well be dropped at some stage in the future. Granted, NetBeans is free. But corporate users would have more to gain from Eclipse, also free. And Java newcomers would have more to learn from BlueJ. So – at the expense of some minor configuration tweaking – link to those and give Java newcomers the smoothest introduction possible.

I’m not going to get into Sun financials, but needless to say, programmers out there aren’t flinging nerfballs at each other anymore and Sun’s share price reflects that. There’s plenty of other places to allocate Java resources than maintaining a weak choice of IDE.