Thursday, July 17, 2008

Behavior and Rest

So here's an interesting angle (from someone that seems pretty intelligent) concerning one of my main disappointments in the 'rest' approach to web services. That is, the rest approach only encapsulates five possible behaviors (corresponding to the five HTTP verbs). In my mind, any other behavior encapsulation doesn't fit in the rest model. This guy disagrees...and he does so fairly eloquently....

http://www.xent.com/pipermail/fork/2001-August/002923.html

Unfortunately, this doesn't cut it for me - because, you're still not encapsulating any new behavior - your factoring it out into its crud operations, and then doing the behavior in the client code. So - it appears to me that rest is just not really suited to situations where you're actually trying to encapsulate behavior (such as non-trivial business logic)... but it is VERY nice for quickly modeling things that can be thought of as a resource or as a piece of data, that you want to be able to view or modify in a sort of low-level kind of way....this resource-centric approach is probably the best part of rest and would probably fit in well with other modes of web service delivery - but because of this short-coming - probably not a suitable replacement........at least IMHO. :)

Tuesday, July 15, 2008

We're Not Resources

Why actually blog myself... when everyone else is saying everything.... here's a great post about how insulting and counter-productive it is to manage software engineers as if they were replaceable cogs....let's do like a commentor says, referring to people as "Resources" should be recognized as a bad word in polite, tasteful companies....

http://blog.markturansky.com/archives/95

Tuesday, July 8, 2008

Code Monkey...

Cute song - definitely got to learn how to play it...

Here are the chords:
http://www.ultimate-guitar.com/tabs/j/jonathan_coulton/code_monkey_crd.htm

Here's a good music video for it:
http://www.youtube.com/watch?v=v4Wy7gRGgeA

Thursday, July 3, 2008

Some .NET Hotness: Stack Traces

Check this link out...
http://neilkilbride.blogspot.com/2008/04/how-to-access-call-stack-c.html

Apparently it is possible to programmatically access the various portions of stack traces in C#/.NET -- this is neat, cause in the java world, last time I checked, you had to manually parse the stack trace generated by a Throwable in order to get any kind of an idea where you were in the call stack... so woo hoo -- give it up for MS - this is kinda hot!!

Tuesday, July 1, 2008

Weekly Buzzword: Integration

Ah yes - integration - sounds greek, or latin, or something - sophisticated, no doubt. But what does it really mean?

Well, I would guess it means at least a couple of things.... going back to the theme about how software developers are rigid and talk, think, and dream in 1's and 0's - probably the simple answer would be - integration is just connecting to systems. It's like plugging a plug into a light socket - simple, straight forward - not a lot of room for interpretation.

Ok - let's go back to thinking like human beings again.....the above referenced analogy works.... insofar as you recognize that not only will you be plugging the two things in - you'll be inventing the light socket and the plug from scratch, with less than two napkins worth of drawings to help you along your quest...

So what does this mean in the real world? It means there are shades of grey, dummy. Integration isn't just connecting the two pieces it's fashioning the connectors - if you need to - or maybe reusing partially applicable connectors. At any rate - it's not black and white.

So we have a responsibility here - don't let non-technicals blow it off and say - oh yeah, we're just integrating.... make sure they (or you) think first. Inversely - don't let them say OH MY GOSH WE HAVE TO INTEGRATE - make sure they (or you) think first. After you think - then you have the right to casually blow it off or to get extremely apprehensive - whichever is appropriate.

In FACT - another action item could be taken from this week's buzzword: maybe we should design a few subclasses, revealing a little more information about the actual activity that is taking place in your "integration".

That is all.