pmuellr is Patrick Mueller

other pmuellr thangs: home page, twitter, flickr, github

Saturday, March 17, 2007

Get Polar

Catching up on my podcasts, I listened to Jon Udell's interview with Steve Vinoski on the way to work yesterday. At at 20:09, Jon asks Steve something to the effect, wouldn't it have been better if sides in the REST vs. WS-* debate weren't so polarized? Steve replies back "the polarization has opened a lot of eyes that may not have happened otherwise". He's so right.

I frequently play's devil's advocate, simply to get new thoughts injected into a conversation. It's way too easy to just nod your head and say 'uh huh'. Remember, innovation happens elsewhere.

There's an interesting twist here, also, regarding persuasion. Robert Cialdini, in Influence: The Psychology of Persuasion, talks about reciprocation. In trying to persuade someone, start with an offer you know they will refuse. Follow-on offers that are more attractive, won't seem nearly as outrageous; you've changed the expection level. Additionally, in your follow-on offers, you've actually 'given' something to the offeree; you've lowered the cost of the offer. People don't like to be in debt to other people, and will frequently expend more than the debt is worth to remove the debt.

Thursday, March 15, 2007

SQL grumbles

So on Elliotte Rusty Harold's recent post PUT is not UPDATE, I made a comment about 'avoiding databases at all costs'. And I'm sticking to it. Kind of.

A later comment, obviously directed at mine, claims: 'avoiding databases is like avoiding surgery for voodoo'. And such. Well, that's true. I could hardly have made it through 20+ years at IBM by completely avoiding databases. I actually cut my teeth as a youngun doing PL/1 programming for CICS using DL/1 databases (SQL was just becoming popular then). And wrote some specialized database code for natural language grammar parsing. And of course, it's been impossible to do demo-ware for products I've worked on in the various 'development tools' organizations I've worked with, without having a DB/2 database in the story, especially since "there's no such thing as an application that doesn't have a database behind it."

That doesn't mean I have to like it.

Here are my problems with databases/RDBs/SQL:

  • Is every data persistance problem best solved with a relational database? I don't think so. But you don't see too many people using hierarchical databases anymore. GetNextInParent anyone? Or VSAM. B+ trees. Sure, Berkeley DB carved out a niche, but then of course, Oracle bought them. Relational. Brainwashing, plain and simple.
  • I don't actively follow the SQL standards, besides knowing there are many of them. And yet, the actual 'standardization' is not terribly great. When I talk to folks who have products that support some set of databases, and ask them about supporting others, it's a "Simple Matter Of Programming" to add that support. Meaning, porting work. It's perfectly fine to differentiate on quality of service, but why can't that BE the differentiator? Why do I have to port to other databases?
  • SQL. The Language. OMG. It's COBOL. English. But I'm a programmer; please give me a functional interface! I'm hopeful that the LINQ project will help bring some sanity to the space. And I hear that the Jazz plumbing is using a functional-ish database access layer. Thank You!
  • Sometimes files are good enough. And they work great on the web, behind a web server, because you get all the creamy RESTy cacheability (ETags, Last-Modified, etc) from the web server. And now it's even easier to lie. Squirrel your persistance story behind a FUSE file system, so you can provide a simple file-based front-end.

So I would be remiss to note that I've decided to NOT use a file-based persistance story for my gRESTbook project, like I had been thinking, and am using ... gulp ... sqlite3. In the end, even with the general ugliness I find in databases, they do provide enough value for me to put up with them. Or, you could say that this is the simplest possible thing I could get working at the moment. There's room for exploration of other alternatives later.

I just updated the project with the data model and tests for it.

Wednesday, March 14, 2007


Last week, on the PHP-DEV/php-internals mailing list, Jakob Santos proposed a JIT compiler for PHP. Rasmus responded with (paraphrasing) 1) a JIT won't help PHP and 2) PHP doesn't need a JIT, it's just glue code around functions written in C anyway.

Some people countered these arguments. :-)

And then yesterday, Jakob posted the beginning of the journey to his blog.

Interesting; I look forward to following this work.

Tuesday, March 13, 2007

Bubbly Job Market?

I guess the job market for programmers must be hot right now. Just today, I had two friends that both asked me to be references for jobs they're applying to. (I'm truly honored, thanks). And I've been getting resume-search-hit-yielding cold calls from recruiters now for the last month or two. Email, work phone and home phone. My home phone! Wow, someone so desperate they did a second search to get that number. What's next? IM? Twitter? Second Life? Probably as easy to track me down in places like that, as it is my home phone number. Except for the fact that I don't use Twitter or Second Life. heh

BTW, not that it matters, because cold callers of course aren't going to be reading my blog, but ... I'm not actually looking for a job. I enjoy causing trouble where I am.

Remembering Web Connect

In Minding Your Business With Smalltalk (part 2 of 4), Steve Hunter mentions using the VisualAge for Smalltalk Web Connect feature. Wow. A blast from the past. I worked on this in a very small team back in 1995 or so. Before servlets. Before Apache httpd.

We had a lot of fun inventing stuff. HTML editors inside the VisualAge Composition Editor. A way to forward requests from a web server into a live Smalltalk image; we called ours CGI-Link; ParcPlace had something similiar; both of these are of course extremely similar to FastCGI, which was also created at about the same time.

The closest I could actually get to a date when I worked on this was based on the presentation I did at OOPSLA. Late 1995, we apparently had stuff working. That presentation is funny; screen shots of the VA composition editor, the OS/2 Web Explorer browser (remember how it used to let you store up to 10 bookmarks! ~shiver~). The slides were actually constructed with a small REXX program; I remember later whacking the Smalltalk compiler so I could do slide presentations as Smalltalk classes.