24 March 2010
Onward and upward
The team that I've been a member of for the past six months or so achieved a milestone today: integration of three of the client's blogs with the in-house CMS. As Daniel Jacobson explains, this means that blog posts are first-class content, available through an API, on emerging platforms, and via the "mother ship" web site. One of the small but important features of this work is that posts now carry a "semantic URL" permalink, rather than an URL with nothing but a cryptic "&id=zqx3".
18 March 2010
Should have consulted the Reichssicherheitshauptamt
17 March 2010
Like, random
Kyle VanHemert introduces the IBM RAMAC 305, the first commercial computer to use magnetic disk storage (and one of IBM’s last systems to use vacuum tubes). The 305 was announced on 13 September 1956, my one-month birthday.
The post embeds a really sweet 5-minute industrial from IBM promoting the system: check out the access panels that swing out and down to afford access to the copperage. The post conflates the 305 (the model number of the entire system) with the 350 (the model number of the 50-platter hard disk subsystem), but no matter.
(Link via The Code Project.)
The post embeds a really sweet 5-minute industrial from IBM promoting the system: check out the access panels that swing out and down to afford access to the copperage. The post conflates the 305 (the model number of the entire system) with the 350 (the model number of the 50-platter hard disk subsystem), but no matter.
(Link via The Code Project.)
12 March 2010
DISP=(NEW,CATLG,DELETE)
Along time ago, when I was just getting started in this career, back in the days when an interviewer would take you to lunch at the Capital Hilton on 16th Street, I was trying to schmooze my way into a COBOL job. My interviewer knocked me around with some basic principles questions (like, "what's a pointer?") and then he went in for the kill:
I understood the question, at least. And I answered truthfully that, no, I wasn't equipped for that, not yet. But what I kept to myself was, "JCL? How hard can that be? It's just a command language for batch jobs." (I had already mastered one DEC command shell and thought I knew nearly everything.) Dan Wohlbruck illustrates how naive I was.
I didn't get the job, of course, but nearly ten years later I finally made my acquaintance with OS JCL. We have since parted, but we have agreed to remain friends.
Do you do your own JCL?
I understood the question, at least. And I answered truthfully that, no, I wasn't equipped for that, not yet. But what I kept to myself was, "JCL? How hard can that be? It's just a command language for batch jobs." (I had already mastered one DEC command shell and thought I knew nearly everything.) Dan Wohlbruck illustrates how naive I was.
I didn't get the job, of course, but nearly ten years later I finally made my acquaintance with OS JCL. We have since parted, but we have agreed to remain friends.
22 February 2010
Another regex issue
For a bit of code designed to block all HTML tags from an input string, I picked up the following regular expression from Friedl, Mastering Regular Expressions, 3/e:
As in:
Unfortunately, colleague Jared points out that ill-formed HTML tags will pass this validation, and colleague Jason demonstrated that browsers (at least some, under certain conditions) will (more or less) render the ill-formed HTML. Jared's examples:
Since this code is used for an internal app where users aren't actively trying to clobber things, we've chosen to live with the situation that the fishy markup can slip through.
<("[^"]*"|'[^']*'|[^'">])*>
As in:
if (inputString.match(/<("[^"]*"|'[^']*'|[^'">])*>/)) {
CLIENT.Utilities.addValidationMessage($(this), 'No HTML tags, please.');
isValid = false;
}
Unfortunately, colleague Jared points out that ill-formed HTML tags will pass this validation, and colleague Jason demonstrated that browsers (at least some, under certain conditions) will (more or less) render the ill-formed HTML. Jared's examples:
<a href="bad link" attr'>click me</a attr=">
Since this code is used for an internal app where users aren't actively trying to clobber things, we've chosen to live with the situation that the fishy markup can slip through.
Subscribe to:
Posts (Atom)