" /> Bill de hÓra: March 2006 Archives

« February 2006 | Main | April 2006 »

March 28, 2006

Oh well

The Spider of Doom: GET link rm -rf's CMS content.

C'mon - "Spider of Doom"? Nonsense.

"It's called GET because it *means* GET; grab me a representation of the state of the resource identified by this URI. " - Mark Baker

Using a side-effected HTTP GET to implement deletion is *bad* design and people have been pointing this out for years.

"Web Health Warning: Put All Destructive Actions Behind a POST Request" - Agile Web Development with Rails, David Heinemeier Hansson

It's midly depressing that Keith Gaughan is the only commentator over there explaining the issue.


Coté adds hCard to his site. And there's a tool to pull hCard data out of page: hCard extractor. I feel a "me too" thing; never felt that with FOAF.

March 27, 2006


Sean McGrath: "My backup strategy. What's yours?"

Featuring a glimpse of what we run internally in Propylon. Head on over and add a comment, we could all do with getting more backup howto knowledge out there.

Now they have n-squared problems

Some people when faced when a distributed programming problem, think 'I know, I'll expose a new service interface.'

Now they have n-squared problems.

March 21, 2006

On The Impossibility Of Getting Grid Services

I went to read something Jim Webber linked to - in his words "a paper whose purpose was to demonstrate that all the 'special' things that were needed to enable Grid computing could be aciheved using stable Web Services technology (specifically SOAP, WSDL, and WS-Context)."

I got this:

An error has occured because we were unable to send a cookie to your web browser. Session cookies are commonly used to facilitate improved site navigation. In order to use Wiley InterScience you must have your browser set to accept cookies.

"An error has occured because we were unable to send a cookie to your web browser. Session cookies are commonly used to facilitate improved site navigation. In order to use Wiley InterScience you must have your browser set to accept cookies."

Grid. Enabled. Cookie. Dough!


"It begins by defining a computing device absolutely unlike anything I have seen, then proceeds to show - I haven't quite followed the needlessly complicated formalism - that there are numbers that it can't compute. "

via Mike Kelly

March 20, 2006

Opus 8 is amazing

Wow. Martin in work pointed me at GPSoftware's Opus 8. It's an explorer replacement for windows. It's the most user friendly and well thought out piece of desktop software I've seen in a long long time. There are so many nice touches. Somebody should tell Scoble to check it out.


I filled a large box with old tech books today in clear-out. I figure 20-30. It felt great.

March 14, 2006

Pizza.addTopping(new Anchovy())

Fluent interfaces look a lot like the stuff in a little java, a few patterns.

March 11, 2006

Here we go again

Steve Yegge: "Lisp is pure DNA. You can build anything with it, and you always have the ability to evolve even large existing systems in new directions. And that's exactly what you need, because your problem domain is unique."

>>> |

Here we go again...

March 10, 2006

The Ning Atom API

"The whole content store is now AtomAPI-accessible.".

Nice!. Here's the screen cast.

Feedback on security and managing media items warmly welcomed.

On build tools

Steve Loughran on build tools.:

Shell: "If you come across someone building java code from a .sh file, run."

Make: "the authors deserved that acm award they got, though they should have then had it taken away for using an invisible bit of whitespace."

Ant: "the Sun assumption: that everyone had a unix box with make underneath."

March 08, 2006

TextDrive rock

I haven't thought about or had to talk to my hosting provider, TextDrive, in months. Now that's service.

Downward Dependency

Kevin Rutherford: "These associations cause me to believe that the things at the bottom of the pile are hard to move or change. Whereas in the hexagonal view I instinctively feel the system's components are more loosely coupled - perhaps because they are associated only by proximity, and not by gravity."

Cool insight on layered architecture diagrams. In Propylon we tend to diagram SOAs using rings. I saw a guy once draw an SOA as a layered stack - with the messaging substrate and TCP/IP stuff on top. I thought I was going to fall onto the ceiling or something.

March 07, 2006


Click on the images on this page: The Wireless Music Player: Do-it-yourself remotely managed music player. Cool.

March 06, 2006

Try Python today!

Sean points to the new python.org site. Very clean, easy to navigate.

And the new logo is so. very. much. better. I *have* to remap my python files to use it.

They could give the opening text a bit more punch, like this:

"Python is a dynamic object oriented language used for all kinds of software development. It offers unmatched integration with other languages, platforms and tools. Python comes with a huge range of standard libraries, yet can be learned in as little as a day. Python developers report huge productivity gains while producing high quality, maintainable, and elegant code. Try Python today!"

Anyway, it's closer to the truth ;)

March 05, 2006

Turning off RSS1.0

I've redirected the RSS1.0 feed for this journal to point at the Atom1.0 feed. I'm an Atom guy at this point, plus the RSS1.0 template tends to act up with repeat entries, something I haven't been able to fix.

Most feed readers won't care, if something breaks for you let me know.

Transactions in Django

Nice. Django gets transactions. Txn support is called in via Python decorators, so it's nice and clean on the code. Java folks used to XDoclet and attributes will appreciate the idiom:

There are 3 decorators - autocommit, commit_on_success, commit_manually. You decorate on the view code:

   from django.db.transaction import autocommit

   def doSomething(request):
       # do work

   def doSomethingElse(request):
       # do work

  def doSomethingElseAgain(request):
 	            # do work

To back out of the transaction, the view code needs to throw an exception, otherwise Django will complete. If you have view code which swallows exceptions, you might want to clean that up in preparation for this feature.

If you think you're hard enough, you can set DISABLE_TRANSACTION_MANAGEMENT=True in your settings.py file.

via Peter Harkins, who says the magic-removal branch is getting folded in in a month or so. Outstanding.

On Pause

RMH: "If any dynamic language is to be successful it has to (a) be standardized (b) appeal to Java developers (c) be fairly easy to learn, and (d) leverage the existing Java ecosystem. There is only one dynamic language that meets those needs and that's Groovy."

Groovy's always felt thrown together to me. The JCP is the thing that's supposed to have held up the language's development, but I wonder if the language is holding up the language's development, along with another criterion - (e), "has major commercial backing". Designing and shipping languages is a lot of work - witness Jython and JRuby's stop/start development. Or that Ruby is 12 years old, and looking at a major redesign to get to 2.0. Parrot, anyone? On the basis that good marketing can win language wars, it's entirely possible that Groovy could go mainstream if it had industry backing. In the meantime, I find myself agreeing with Ed Burnette and Bob Lee - there are good options available today for the JVM - Beanshell (in the JCP for those that care), Rhino, Jython, JRuby. Or for you chancers out there, Scala. And thanks to the JVM, you'll be able to use more than one CPU Core. How cool is that!

update: Graeme Rocher: "The reality is that BeanShell does not provide any productivity gain so to choose to use it for a task over Java " - via Guillaume LaForge

Marketing Programming Languages

Steve Yegge:

"Language diversity is bad. What if someone has to debug your code in the middle of the night and they don't know that language? (every company, even those that don't work in the middle of the night) Don't use other languages; we don't hire for those skills. We don't trust those languages. We've invested in Fortran or Cobol or C or Java or whatever. No, no, no. "No" always comes from engineers. You build something cool and popular, and your CEO will love you for it. "

In discussing Ruby hype, Steve Yegge clearly understands software development economics yet the above comes off wrong in a goldmine of an essay on hyping programming languages. "No", as often as not, comes from hiring managers with a clue and people invested in the long to medium term of the codebase. Ship productivity is only part of the picture, the part engineers tend to decide to get. Because it's intangible, ethereal non-stuff, many peple think software is more or less disposable, but software that actually gets used can stick around for years, or decades. Not having a developer or support pool for that codebase is a problem.

No business wants to feel 0wned by engineers, no matter how talented or professional or ethical the engineers are. That's why marketing a programming language is a big deal - marketing above all else manages the perception of a developer base, that lots and lots of other people are onboard with the technology. Money guys can only show so much interest in the benefits of steel cable suspension bridges when the job market is awash only with carpenters. And if you're the only steel worker around, well, that's downright suspect, best get back to your saw :)

Finally, there's this gem:

"The worldwide Ruby culture is the warmest and friendliest I've seen in my long history with programming languages."

*Cough*. That's priceless! Aside from the stellar marketing, the Ruby crowd exhibit a kind of zeal, more cult than community. Maybe it's just Obie. And that Obscure Rails Guy. And Why The Lucky Stiff. And The Prags. And the Ex Java Massive. Yes, I'm joking :) They're really just like Mac devotees...

Anyway, here's a prediction. Steve Yegge is the next Greenspun|Spolsky|Graham.

March 04, 2006

Architecture Diagram

Funny: BizTalk vs WS.