Friday, December 30, 2011

Manly thrills and excitement!

When young, we fixed stuff ourselves. No big deal; poverty, semi-poverty or just frugality meant that we did it instead of paying someone else to do it.

Somewhere along the way, they figured it out. Auto makers began colluding with dealerships to produce cars that would need a modicum of repairs over their service life. Guys like me who used to know what every last thing under the hood did and what to do when it broke, long ago stopped recognizing much. Television sets, washers, ovens, refrigerators and other electric appliances became unserviceable at the component or subcomponent levels. Too, we get better jobs and better pay wimping out and allowing our manhood to drip away.

Well, today, I cheated the system. I fixed my two-oven stack, saving myself hundreds of dollars.

It used to be that when an oven stopped working, you replaced the heating element that no longer fired.

This is almost never the problem today. Last year, in my old house I kept for (usually related) college students. I lost an oven for want of a magic board to keep it running. Oven manufacturers discontinue component-level replacements after a few years and what was an dream oven I bought brand, spanking new in the late 1990s, an upscale one to boot, was reduced to worthless and I had to replace it.

That unit needed not only the circuit card that ran the oven elements, it also need the logic module—what ran the digit read-out, touch pad, etc.

I learned a few years ago, at the same time that I was first disabused of the out-dated notion that you can simply replace an element when it stops working, that modern ovens turn on and off the elements. This is the clicking sound you're hearing. In this way, they also use less power and need far less current. It cost me something like $350 to learn this lesson, about $200 of it was for a new circuit board.

When I installed my oven in the old house and the stack in my new one, I always ran 8-3 or at least 10-3 with ground to supply them. But I noticed that the ovens' factory cabling wasn't anything like that heavy. This can be because they now cycle on and off making it unnecessary to handle such huge current loads (30 or 40 amps back in the day) for so long a time. (Or, so I theorize.)

What this means is that when the oven goes out (excepting for the logic board), it's likely a relay/solenoid, the thing that goes clickity-click.

Having kept a board I needed to replace in my oven stack a few years back, I reached a conclusion based on inspecting it: the built-in obsolescence relies on the circuit board heating up and slowly letting its solder melt and/or dissipate. You replace the board because it stops functioning. It might have been a relay, but likely it wasn't. It was the board.

I just proved this to myself. I kept that old board and resoldered two relay lugs that were obviously "unsoldered" over the few years I'd had it thinking that if the board ever failed again, I'd at least try the old one now repaired. It was the upper oven.

The lower oven lost its broiler a year ago or so, but I've just been using the upper one. (Besides, everything I put under a broiler is reduced to ash anyway, so I generally avoid using it.) Last week, I lost the whole bottom oven for baking as well—just in time for Christmas dinner.

I'm about to embark on my traditional New Year's Eve dinner. Pulling it off with a single oven isn't pleasant to think about.

Today, I pulled it out, photographed the boards, recognized the new board (which was for the upper oven) and pulled the one for the bottom instead (after also noting all the colored cabling in case my photos weren't sufficient).

Sure enough, the dysfunction was identical to the old board for the top oven. Excited to prove my theory, I dug out my old Weller and applied new solder to two points underneath the board. I reassembled and fired up the lower oven.


I am finally a man again.

Wednesday, November 2, 2011

Cheap thrills..

When you can get them, every time you can get them.

Today I polished off a new Apache ant custom task I wrote by publishing it along with some Eclipse projects that illustrate one of the tutorials I used to figure out how to write a custom task. Then I went back in and tested a feature I'd put in, but had forgot to use (it worked). Subsequently, my continuous build (via Jenkins) stopped breaking, well, only after fixing a few things in some SQL scripts that suddenly became visible because of the cool ant task I added to the build.

Yesterday, someone wrote to thank me for that Eclipse, Tomcat, JSP and servlets tutorial I wrote way back in 2008.

Things have wound seriously down at work for the next release of things. I can sigh in relief and look forward to more "planned" (read: non panic-motivated) work.

As I say, cheap thrills.

Tuesday, October 25, 2011

In the doghouse...

Sometime last spring, my van's heating and cooling system failed in the sense that I could no longer direct the air anywhere in particular. It was stuck on the floor, which wasn't particularly helpful for refrigeration.

No matter; I ride a motorcycle almost exclusively in the spring, summer and fall. Still, there are those times...

        ...and, after all, winter is coming: I can't operate this vehicle without a defroster.

Well, I knew that, because this happened before, there was some nasty work in the offing. Julene remembered that the last time, the mechanic reattached some hose to the engine. Yeah, back when I was a child, the manifold vacuum was used to operate many things—using amply large-gauge rubber tubing. Not everything is electric even today.

Well, for the Chevy Astro van, there's a "doghouse" that encloses the back end of the engine compartment isolating it from the cab. The operating manual has instructions and illustrations on how to do that. This doghouse cover must be removed because the hose connects underneath it. It also connects up in a place accessible from the front mixed in a bit with large aluminum tubes that appear related to refrigeration. (I'm not verifying all I'm saying 'cause I'm way past interested in auto mechanics at this point in my life, but most of this is accurate I think.)

At first, I couldn't find any tube likely to the one in question. And the doghouse wouldn't come completely out of the van without removing one of the seats. As (bad) luck would have it, my brother has the same vehicle (a little newer) and the same problem at the same time. If that weren't convenient, his second son married the daughter of the guy who, Julene thinks, fixed this thing the first time. So, a little networking and a visit from my brother after calling the mechanic and he found the broken tube exactly where he learned it would be.

The problem is this tiny gauge (1/8") tube is cooked by the engine over the top of which it's routed, become brittle and ultimately breaks. Mine broke next to the repair splice from the first time. The splice was still good; much of the rest of the tube was brittle.

We went to get a replacement from AutoZone, but they only had ¼" gauge tubing and some tubing connectors, none of which really was the answer, but we were in hard way, night was falling, etc.

We clipped off the tiny hose from its nice factory ends (rubber elbows that mated with a T connector in front and a nipple on a connector at the back under the doghouse) leaving short stubs of that tubing, still not brittle, and cleaned the latter up. We force-fitted these good bits of the remaining skinny tubing into nylon connectors from an $8 box of a million different size tubing connectors purchased from AutoZone, and heated up the ¼" tubing ends to go over the other end of the connector.

This, plus hooking it back up did the trick. My brother did his this morning and reports that it all went much faster as he'd been in on most of the job at my house.

Here are the puzzling bits I learned performing this repair. I'm hoping that after the search engines crawl my post, these points and my account will help someone else.

1. You need a large-gauge star drive to remove the two upper screws holding the console to the frame over the doghouse.

2. In order to remove the upper, passenger-side screw holding the doghouse to the firewall, you must have a flat-blade screwdriver at least 18" long. Nothing else will reach in there because there's precious little room left between a duct and the doghouse.

3. The tubing is tiny and the end under the doghouse is on the driver's side very near the throttle body.

The rest of what's going on is fairly obvious.

Monday, October 10, 2011


Twenty-seven years ago today, about the time I'm writing this (between three and four in the afternoon), my wife and I got on our motorcycle and headed up to a specially scheduled venue for a party we'd been planning for some time. We were a little tight on space in our tiny car, and we needed to get a few things ready anyway, so we planned for her mother to follow a little later with our three children aged seven, six and four.

Everything was already set up and waiting for us. There were treats including a cake as I remember (no, really) and drinks and even staff to wait on us, hand and foot. The children and their grandmother arrived in plenty of time for the party to start. The only one missing was a special invitee, whom we'd not really met before.

He arrived a little later.

One could accuse him of arriving "late," and certainly he didn't arrive until after all the other guests, but maybe just a little like a wizard, he didn't arrive early or late, but precisely when he meant to.

A great time was had by everyone and we all got along with him so well that we invited our honored and newly met guest to come home with us.

And so he did.

And we've all been delighted by him ever since.

Happy birthday, Thierry Daniel Bateman.

Sunday, October 2, 2011

Death of a tabernacle

As announced yesterday, the Provo Tabernacle is no more. The outside walls will be restored, but the interior, the seating, the gallery, the choir seats and organ will never see the light of day again.

This edifice burned down last December. See story here.

The Church has decided to turn it into a temple. Understandably, the Church is not in the business of rebuilding community centers for secular benefit. However, failing to restore it to its original purpose makes for a very sad loss in that this building has stood for over 120 years as part of the community not only in terms of its spiritual usage, but it has, just as the Salt Lake City Tabernacle, served a local community's other needs. In Provo's case, this has meant hosting concerts (including an appearance by none other than Sergei Rachmaninoff) and community musical programs, school commencement exercises, university student piano, organ and other recitals, and it has served as home now and then to organizations such as the now defunct Utah Valley Choral Society. It has seen many performances of Handel's Messiah.

From a more conventional viewpoint, it long served as the site for stake conferences of various local stakes of the Church of Jesus Christ of Latter-day Saints. And it served the Roman Catholic community at least once or twice for Christmas Eve mass.

One of the more delightful aspects of this beautiful old building was that it hosted ecclesiastical meetings in a comfortable context and secular events in a cozy, inviting atmosphere appreciated by many Utah Valley residents be they Mormon or not.

And, there is really nothing in terms of a venue that comes close to replacing it.

On the plus side, most if not all of the block immediately south will include considerable green space that the City is hoping will attract people, and therefore shoppers, to central Provo which has for decades defied all efforts at reinvigoration.

Over the years, many Utah communities have learned the lesson that their tabernacles are similarly doomed as they no longer fit a growing Church's agenda or purposes. One by one, these historic structures have either fallen to the wrecking ball or, as in the case of Vernal and Provo, been converted to other purposes, temples in these two cases, a museum in another. Sadly, it's a rich legacy we're losing.

Saturday, September 3, 2011

Sibelius : Tervedys !

Hail, Sibelius!

The 20th of September is the 54th anniversary of Sibelius' death. I was 2½.

No, there is no connection, strained or otherwise, but then, I didn't know Bach from Beethoven either.

Since introduced to his music in the spring of 1974, I've come easily to the opinion there has been no more fabulous composer—in every sense of the term. Jean Sibelius was the most lyrically musical mind the world has ever known. His symphonishe Dichtungen or tone poems are magical, his symphonies superb and unpredictable.

Dark and brooding, nevertheless from his music escape faeric themes that enchant against a contrasting even lugubrious background. Suffused with northern light of waning, cold days, majestic vistas, and stern heroes, it alternates from hypnotic to bewitching.

I've often said in jest that Sibelius is often so ponderous and depressing at times that, by contrast, it makes me feel in a lighter mood. But only in jest.

As a treat, the Public Radio Exchange recently included him in a program series,
13 Days When Music Changed Forever
, revolutionary moments when music was fundamentally transformed, hosted by musician and composer Suzanne Vega.

Sibelius is rightfully included. Sibelius is the pinnacle of musical Romanticism, the last word before the descent into dissonant Modernism. Which makes him very relevant today.

If you don't know this composer, the PRX broadcast is a fair introduction, but don't stop there. Take the plunge. I particularly suggest the easy introductions, to wit, the Second and Fifth symphonies, and the tone poems, Finlandia, Pohjola's Daughter, Tapiola, En Saga, the Swan of Tuonela and the Valse Triste. If you like organ, the Surusoitto is considered the echo of his never published and probably destroyed Eighth Symphony. There is much more including the magnificent Violin Concerto in D.

Thursday, August 18, 2011

The little grey cells...

What I haven't told you, because Google disenfranchised my blog about the time it happened, is that I was involved in another exciting medical experience this spring. Here would have been my report Wednesday, 8 June had I been able to file it.

The over-all sensation of the last 10 days is one of having been forced to run through a crowd of people all of whom beat me mercilessly with instruments, some heavy and blunt, some sharp and small. Somewhere in the middle of it, my fifth granddaughter was born! (See post for 31 May 2011.)

In more real terms, I began spontaneously to bleed to death just as I began to mount my motorcycle to go to work on the morning of the first day of June.


As soon as Julene could ready herself, we departed in the van (rather than sacrifice her nice car) for the hospital. I adopted the bowl I typically use to make pie crusts, baking powder biscuits and other delights in.

It took the EMT surgeon 2½ hours to stem the flow of blood—failing in the case of about 3 litres of it. He admitted to me later he was plenty worried most of the time. He told me he'd never spent so much time in surgery, never had anyone lose so much blood, and never had to transfuse blood to a patient in over six years. I don't know all that he did, but he said he couldn't find exactly what to fix, so he started reconstructing stuff behind my face until it stopped. I think I'm minus some principal artery in my face now (there are a whole bunch with names I don't remember learning in any of my anatomy classes)—small loss. However, I wasn't there: thank small angels for inventions like general anesthesia.

Waking up was predictably very hard and painful and with my refusal to ingest narcotics (as they nauseate more than anesthetize me), I went home to convalesce Thursday afternoon. Very much in pain, very anxiety-ridden, my blood pressure went up to 220 by nighttime Friday. Saturday morning the doctor reminded me that stroke was a very real possibility, so I returned to the hospital immediately.

They found a cocktail of narcotic and nausea-repressant that did not sicken me (a trial that failed some 10 years ago in unrelated event, so there's history behind this). By Sunday morning all sorts of additional symptoms, contributory and substantial in their own right began to stop asserting themselves though it really took them until today to reach the partial conclusion that I'll be okay. At one point there was discussion that despite improvement, there's an unusual autoimmune shenanigan going on and they say they want to find that. I personally am quite done with the whole thing.

Ultimately, I imagine, a nose-bleed from hell will come take me when, just as last week, I least expect it. It's not lost on me that, while traumatic for the family, that door is probably less desirable than, say, languishing for months or years finally to succumb to cancer. At least not for me.

I'm here; I'm on board with sticking around; I'm eager to determine whether I also lost any little grey cells as Poirot would say. I'll return to work at least by Friday if not as I hope tomorrow. I know it will take a few days to reestablish daily habits and finish clearing the mist...

Thanks to all who wished me well. Apologies to those I didn't adequately notify which include many cherished friends who, being so far away, geographically or shall we say socially, seemed like the easiest to abuse in exchange for lessening the burden on Julene and myself. Work colleagues too. As I say, with a keyboard in my hands, I'm a great communicator, but toss me even my Android phone (even with thumbboard) and it takes a lot to motivate me to extend my news beyond my children, parents and siblings. As it is this note's been devilish hard to write (having lost some of the grey cells devoted to typing skills).

Of course, the Sunday after I wrote this, I re-bled, if only less than a pint. Nevertheless, I solidly revisited the hopeless feeling for a short time of bleeding to death. It stopped at the emergency room and hasn't re-bled since (it's been over two months now) and it's taken me about this long to forget the paranoia.

Nevertheless, I saw my surgeon for the last check-up today and he pronounced me fit, but cautioned me to keep squirting water up my nose and humidifying the air around me at night.

Wednesday, August 17, 2011

Git, while the gittin's good!

Since late April I've been investing in learning Git for practical reasons. A new project my team's begun at work wasn't going to be done using Perforce (because we all hate it) and, rather than use Subversion, we thought it would be a great time to see what the future holds (or pay homage to Linus: you decide which).

Git's got some great features (how's that for an alliterative louange?) including administration via gitolite. Yesterday, I spent 7 hours in a course on it to help wrap up three months of stumbling around in the dark and getting bailed out of dangerous situations by my nephew who's an expert with it.

I think the things I like best about Git are:

    - git status
    - easy manipulation of branches
    - git stash
    - speed
    - did I mention git status?

After using Perforce for a few months, I can't believe how much I've missed a status-revealing command and Git's not only tells you what's what, it tells you what you can do about it.

I think I'm going to have to replace my Subversion server at home.

Tuesday, May 31, 2011

Lady Lennon is arriving!

Our fifth grandchild is coming. Even as I write this, Erin is at the hospital in sore travail. Julene and I will drive up to Salt Lake City this evening to see what we may.

We're excited to welcome this little munchkin into our lives!

Defeat reversed...

Some time ago I wrote that Defeat is inevitable when dealing with oven manufacturer JennAir.

Last week, I hit KSL-TV's classifieds list and purchased a five-year old, little used GE built-in oven to replace my prized JennAir. I dropped it in last Saturday with my youngest son. It took all of 20 minutes and we were puttering. Four twists of the wire nuts.

The new oven is a couple of inches narrower than the old one. This means I'll have to go back with a piece of maple to close the gap in the cabinet.

The new oven is pretty nice. Other than being narrower than a nominal 27" oven (as was the last one), its features measure up including the (missing) meat probe. I wonder if the one I conserved from the JennAir won't work? Convection, programmable, etc. all the features are there.

As I said last time, I will never buy a JennAir again. And I saw plenty to choose from in the classified offerings.

Monday, May 23, 2011

Eclipse and sources under control...

Of late, I've set up a team source code-control repository from scratch for my work group. This is the first time I've done this for anyone but myself; it's always already been done by the time I joined a team. I haven't been too pleased with the uncertainty at the places I've worked so far--always policy, but never understanding why that policy. Hence my saying something to clear the smoke. There are two camps out there on the web: one for committing the hidden files to source-code control and the other for not committing them. Both are wrong in my opinion.

It seems clear now to me that the following should be the way to do things regarding the “hidden” files in the Eclipse project source base. I'm using Git; the same holds for CVS and Subversion.

It appears you don't want to commit .project to source-code control. You want to create the initial project, then make a copy of this file as .project.sample, and commit that. As each checks out the project source, he or she copies .project.sample to .project, then imports the project in Eclipse.

.project should be marked “ignore” by listing it in the .gitignore at the root of the project. Also in this file are build, bin, etc. since we do not want to include build subdirectories and .class files. I think it’s not a bad idea to include the ignore file, but by doing so, we’d be precluding that anyone maintain a separate, different copy.

This is modified by each user's Eclipse, but only when changes such as the addition of a new JAR are made. Therefore, this file should be committed. However, care must be taken not to corrupt this file by adding JARs just any which way.

Addition of new JARs
This must not be done except via copying the new JAR to an internal subdirectory such as WebContent/WEB-INF/lib or other adding via Build Path -> Configure Build Path -> Libraries -> Add JARs (and never Add External JARs).

This ensures a) that the JAR is in the project (there might be a reason not to do it this way with ivy: there certainly is with Maven, but I'm talking old-fashioned stuff here) and b) no full path is added to .classpath.

It's a simple matter thereafter to check out the project (git clone, svn co, etc.), copy .project.sample to .project, then import into Eclipse (File -> Import -> General -> Import existing...) and away you go.

While there are somewhat analogous things going on in NetBeans, and they just may have done it the right way, nevertheless, Eclipse rules. Yes it does.

August 2011 update:
There's little to add except that based on some really bad experiences, I've learned that you absolutely do want to keep the .settings subdirectory under source-code control (in Git or anything else). At very least, the Eclipse Dynamic Web Project is so complex, that gone missing what's in there will make sharing a project pretty much impossible. I tried doing it and not doing it. This is what I learned.

Monday, May 2, 2011

With Usama bin Laden gone, ... will be up to the State Department or someone deeper in the soup to pick the next object on which to focus our attention in order not to see the sleights of hand.
The whole aim of practical politics is to keep the populace alarmed (and hence clamorous to be led to safety) by menacing it with an endless series of hobgoblins, all of them imaginary.

H. L. Mencken

Our lives would be such bliss were the foundation of such only so simple a thing as to find and assassinate worms like bin Laden.

Friday, April 29, 2011

Of Spitfires and Kisses

The Batemans only stopped being subjects of the crown a scant 138 years ago, so I felt it a minor, personal duty to arise early enough to witness the wedding kiss. There were two very short ones: William is nothing if not the discrete young man.

I wish the new couple all the bliss that royal couples are and have ever been deprived of. I wish them success to exceed the dishonour that has afflicted British royalty since Edward's abdication in 1936.

(I was not up anywhere early enough to sing Jerusalem with the attendees at Westminster, though had it been at a better hour, I would have loved to do that. It's a fascinating anthem and one of my favourites. For all its faults and awful cuisine, I do love Great Britain, a green country, the land of Tolkien, Lewis, Carol, Austen and Shakespeare, concert hall to the Beatles, stage to Eric Clapton, summer garden to Ralph Vaughan Williams. It's the site of the foggy streets of Sherlock Holmes, stomping grounds of Chief Inspector Morse, and the City chambers of Horace Rumpole. I could go on and never stop...)

What brought an actual tear to my eye though, was the unexpected appearance of two Spitfires and an Avro Lancaster ahead of the Royal Air Force fly-over just before the nuptial appearance on Buckingham's well known balcony.

The deep significance of these aircraft, particularly the Spitfires, could not have gone unnoticed by those older present. There are only 44 airworthy Spitfires left in the world today—ever the buff, I looked it up.

That meaning was certainly not lost on me and constituted the emotional highlight of my morning: England would not have seen the coronation of Elizabeth and the wedding of William's parents, nor indeed today's festivities were it not for a few thousand hopeless little aircraft fending off the crushingly superior numbers of the Luftwaffe in the Battle of Britain 71 years ago. This was a touching tribute to Elizabeth who herself fought on the home front in World War II. It should have reminded the millions looking on of the sacrifice of many millions more for freedom in the world and of a time when Britain stood alone against evil.

God save Britain whose torch lit the beacon America has held up to the world—faltering now in its turn. And God save William and Kate: May they restore honour, decorum and respectability to the monarchy.

Friday, April 15, 2011

Defeat is inevitable!

What I've learned trying to fix an oven.

After all this time (since December last) and four repair people, we find we'll have to replace the oven in our old house which will be a huge amount of money. It was a primo oven; I installed it brand new 10-15 years ago.

Basically, what we've learned (in case you actually care about this experience) is that without the model number, it's tough to get help (what we've been fighting for so long). The label was plastic and the number had rubbed off along with some of the serial number.

Second, if you buy the wrong brand, customer support can be very poor. JennAir wasn't helpful last December when I contacted them with a partial serial number which they admitted they matched to a list of JennAir products 10 people registered, but refused to give us a list of possible model numbers. Their excuse was that this would somehow compromise confidentiality of other customers. In fact, they pretty well refused to help me determine the model number. I call that very poor customer support (as I can't imagine how a list of possible JennAir oven model numbers pegged to serial numbers including the partial I could give them somehow endangers other customers).

In our case, the last two independent repair persons have worked through similar circumstances with other customers before and they confirm that JennAir has probably discontinued the model and opined honestly that it's been a long time since they cared. They likely don't even produce the board anymore. There are three possible board sets we could try to see if one will fix it, but the source of the boards does not allow returns of those that fail to match. At several hundred dollars per board, ...

Well, you see the problem.

I think there are two morals to this story...

1) Don't put built-in ovens into a rental unit because they're more expensive to replace.
2) Don't purchase JennAir products.

Of course, this was our home and I bought a superb built-in oven when I totally rebuilt the kitchen from the studs out. It wasn't specifically planned that it would become a rental.

The repair folk suggest hitting or eBay for a replacement. They say there are people remodeling their kitchens and getting rid of built-in ovens that still work. We'll be trying that approach.

Tuesday, March 15, 2011

Slain before the gates of happiness...

Imagine my disappointment yesterday when I discovered my network down.

I had been planning for over a week to spend last night augmenting my quick Latin grammar site by writing a short exposé on Latin conditionals with references to conditional sentences in English and French, the only other languages in which I've any competence to speak authoritatively about this grammatical construct, basically a work of comparative linguistics. In short, I was planning some really good fun.

Instead, I came home to find my house network in tatters, my router utterly un-resurrectable, and my new router difficult to configure. (Well, it was my good fortune, I suppose, even to have a spare router available to install.)

I spent my whole evening getting everything back up and working. I even missed the early minutes of The Event, one of the dramas I try to follow, and raced back to my den every commercial break (by which time I was wrestling with how to get my new router to forward ports 80, 22, etc. through to various of my Linux hosts).

Alas, uesperem perditi.*

What I should have done is to yield to the temptation I repressed to purchase a pie on the way home from work. It was Pi Day after all, and last night's "blood bath" would have been a more suitable celebration of the Ides of March (today) in marking the two thousand fifty-fith anniversary of Cæsar's assassination.

But then, my websites would still be down as I write this.

* Yes, "I lost the evening"—in direct allusion to Vercingetorix' exclamatory utterance as he deposited his weapons in defeat at the knees of Julius Cæsar at Alesia in 52 BC. (See illustration above—I like the ones that surface in various episodes of the comic book, Asterix the Gaul, better, but they're under copyright.)

Tuesday, March 1, 2011

JSF Facelets: Templating

This morning I finished my initial research into templating using JavaServer Faces Facelets. This is pursuant to some work I've been doing over the last month or so and three articles discussed in last week's posting.

I've worked with templates in JSF, but never set them up from scratch except for a mindless shot at them 3 years ago using a book I didn't fully understand. It's not been too relevant to my work, except briefly when fixing a few bugs in MarketSplash pages. I'm not really a front-end guy, but I do support some twenty domains benevolently and this technology would come in handy.

So, yeah, a new article—always an article, right?

I've probably got some polishing to do, but the structure and most of the content is there. Casting around for the next thing to look into, I'm thinking Spring Web Flow. If so, there will be another article. Then I'll tuck back into my back-end world where I belong. There some exciting REST stuff coming up later this year.

Thursday, February 24, 2011

JavaServer Faces: Facelets

I've gone and done it: my first full, raging JEE-oriented tutorial, A Simple JSF Facelets Project, in almost three years. In that time I've chosen not to write formal tutorials for a lot of the sub-JEE technologies I've worked with since I felt that others had more than adequately covered the topics. Others like, and very especially, Lars Vogel.

However, I'm on my own again. Just as years ago I couldn't find a tutorial on JSP and servlets that worked (perhaps rather, I couldn't find any that still worked with the new releases of the Eclipse IDE and Web Tools Platform), I have been unable to find a tutorial on Facelets that works.

I've figured out what others have missed and have no explanation why they left their tutorials in a state of unworkability, but I have a theory. They just don't go back to show how to solve problems they forgot they had or answer questions others new to their topic will have, questions they had to answer for themselves, but moved on without taking notes. Their tutorials, once you've followed them and created a project in Eclipse, simply do not work. You're on your own. And others tell me that they've been unable to get anything to work either.

Well, as I'm fond of saying, I'm not the brightest Crayola® in the box. So, I have to take careful notes because often I find myself smack back in the same state of perplexity at why my Tomcat server won't start or why some JSF construct won't render. And if I don't know, there must be someone else who doesn't.

Recently, I exchanged mail with some guy from India who admitted to me that he had tried playing with JSF earlier last year, but just couldn't get things to work. His problem was the same as mine: libraries. The chaos in JSF/Facelet approaches needing JSTL, then no longer needing it in Faces 2.0, etc., libraries coming and going, what version of what library works with what version or versions of other libraries, etc. It's unconscionable. And without the seemingly innate intelligence of these tutorial and book authors who publish then run off to their next thing, I'm obliged to feel my way forward via trial and error, a process I loathe.

And that old, long-winded tutorial I wrote on JSP, servlets and setting up Eclipse? I still get e-mail out of the blue at least once per month thanking me for it. It's still relevant even though it's become mildly embarrassing after journeying so far down the Eclipse and JEE road. I need to rewrite it, to make it more relevant and fix the rather embarrassing admissions of perplexity in my explanations. Now that I know.

Today's tutorial also builds on two other, full-length articles I've written on exposing the recent research I've done on setting up a solid set of libraries to use for JSF, plus additional libraries for Facelets work.

And I show how to internationalize and localize the simple application.

Today's tutorial doesn't go as far as I'd like. I need to wax more forthcoming on aspects that need explaining. That requires much more effort and guesswork. There are also some navigational problems that would be more obvious if the little application did much more than it does. That's very important to fix.

But, I'm moving ahead with the next tutorial. It will be a demonstration of Facelet templating; I just haven't chosen what I'm going to show yet.

Down the road I have plans to integrate Spring web flow. It's a mountain of work I've set for myself.

Friday, February 11, 2011

How does it feel to view the world...

...from the dominating summit of eighty-one years?

Happy birthday to my father:

Center of attention!

Very young World War II veteran

Old sea dog and world-traveler

Connoisseur of weird and vintage autos
(and a certain redhead)

Perennial geek

Pater familiae

...and all-around great guy!

Saturday, February 5, 2011

Butterflied shrimp

Today we saw the most magnificent shrimp at Costco and couldn't resist picking up 6 of them which, at $13 per pound, ran us a bit more than $8. (I think the vendor was very generous to us.) Then we went home; I was wondering what I'd actually do with them.

Come evening, I knew I couldn't put it off (I'm very superstitious about storing crustaceans in my refrigerator longer than a few hours). On my way up to the kitchen, I decided to butterfly and fry them. Here's the recipe I came up with.

How many per person? We ate three each; I was at the edge. I couldn't eat any more. If they are not the principal foodstuff of your meal, more than two U-8s (8 shrimp per pound) is more than enough per person.

    ½-2 lbs large gauge shrimp (U-8s are perfect, but a bit smaller is fine)

    2 cups water
    2 eggs
    ¾ cup corn starch

    — panko bread crumbs
    — unsweetened, finely grated coconut (optional)

    5 cups frying oil or ghee (or at least 2" deep)

I didn't use coconut: it gets old real fast for me. Julene loves it, though. If you want to use it, mix it thoroughly with the panko crumbs before dredging.

Perform mise en place of all ingredients: The batter will separate fairly quickly so it's better that everything be ready at once: oil heated to 350°, shrimp deveined and butterflied, crumbs ready for dredging, batter to hand.

Tip: You can heat the oil while processing the shrimp. I think it's okay to do the first round of battering and dredging even if it's done before the oil is hot.

1. Butterfly shrimp by deveining, removing all shell but the tail. Using a small, but very sharp knife, slash not quite all the way through to open the shrimp up and lay it out flat. Beat it flat with a tool just as you would a breast of chicken, but take great care not to destroy it (it takes a far lighter hand than meat, but it's the same action).

2. In a blender, mix water, eggs and cornstarch until totally homogeneous. Pour into a bowl.

3. Dip shrimp in batter and let drip a couple of seconds to eliminate excess then dredge immediately, piling crumbs on top and pressing down to seat as many as possible. Set aside on a plate. Process all shrimp.

Ensure that oil is hot enough for cooking.

Ready to cook
4. Re-batter shrimp and re-dredge one at a time. As each one is ready, slide it immediately into the oil to cook, count to 20, then remove to drain on a paper towel. This should be enough for them to reach a nice, golden brown color.

Do not over-cook or they will be rubbery. Do not attempt to cook under temperature or you will have to over-cook them to reach golden brown. Ensure that the oil has returned to temperature before repeating step 4 for the next shrimp (or however many you're cooking at once if you're real clever).

It's nice having a tiny sieve to skim the fallen panko between shrimp. I didn't, so halfway through cooking I strained the oil with a large sieve into another pan, then returned the oil to my first pan (only 6 shrimp—so, yeah, it gets pretty messy).

Oh, yes, they were delicious except for the one I over-cooked because my oil had gone cold cooking the previous one. (You don't think I hatched this recipe without mishap and hard knocks, do you?)

Friday, February 4, 2011

Maven of Maven?

Hmmmmm... no, at least not for now. However, we've made some important strides in groking Maven as used in Eclipse development this week. Long used "as is, as already in place," Maven will henceforth be a tool clutched firmly in our own fist.

Tuesday, February 1, 2011

Won't get fooled again!

Tunis falls and a new government is installed.

As I watch Egyptians struggle to throw off their oppressive government in turn, and I see an opposition leader hasten to profit from the situation by assuring the people that he's ready to champion their cause, I can't help but think of what for me was the greatest hit The Who ever had. I don't think I need to say more; the sense and drama of this song doesn't need me to belabor it. It's a story as old as government itself:

Meet the new boss—same as the old boss!

Bet your sweet bippy.

On an obliquely related subject, ...

I naturally went to the web to find a suitable performance of this song and picked the link below. I was doubly rewarded not only a fine performance and the memory of what it's like to be so young and supple (look at what Peter Townshend can do while playing his Les Paul), but I also found this comment below the video. Priceless.

Me: Man, the Rolling Stones are awesome!!!
Friend: The who?
Me: Them too.

Sunday, January 30, 2011

Sine nomine posmeridiano tempo Dominici

(Without title for a Sunday afternoon:)

Those without faith live in a world of their own which to them seems logical and final; they take the very unscientific stand that beyond the realm of their own very limited experience, nothing whatever exists.

Hugh Winder Nibley (1910-2004)

Friday, January 28, 2011

Jimmy Page visits Cuba

Jimmy Page visited Cuba? Popular celebrities are nothing if not inexplicably stupid. That this surprises us is, I think, proof that subconsciously we tend to equate fame, fortune and power with other virtues like education and wisdom when no such correlation is indicated let alone justified.

Singularibus e lemminibus mundum ædificauerunt.

(Of mere lemmings they built a world.)

Tuesday, January 25, 2011

Xinerama and RANDR incompatibilities

There's a serious problem in the contention between Xinerama and RANDR in the realm of Linux monitor support since at least the last 5 years. I'm reading about it on the web without reaching any conclusions.

While I've been vaguely aware of this myself for a few years, what motivates my present interest are the two, following unsettling situations.

First, when I go to tailor monitor settings on Maverick Meerkat (System -> Preferences -> Monitors), I cannot. I get an alert to the effect that Linux...
Could not get screen information
RANDR extension is not present

And every time I launch gvim (and also gedit) from the command line, I get (the warning):
Xlib: extension "RANDR" missing on display ":0.0".

Fortunately, my favorite program editor and text processor still works, but I have to admit that the warning has grown old and very annoying.

I've seen these (well, the second example, anyway) before on other systems, perhaps on openSuSE back in the day and I had to ignore them without ever figuring out what to do.

Xinerama and RANDR
What I gather from reading the mostly speculative discussions is that these two are incompatible. Some say to disable Xinerama, but if you're using NVIDIA drivers, you're stuck because without it, it would appear, you cannot configure multiple monitor support in the way I like it: mapping two edge-to-edge for maximum real estate.
russ@russ-elite-book:/etc/X11> fgrep inerama xorg.conf
# Removed Option "Xinerama" "0"
Option "Xinerama" "1"
Option "TwinViewXineramaInfoOrder" "CRT-0"

What I think is happening in the second example is that an application that opens a GUI appeals to X11 for something that it cannot provide because to have Xinerama enabled is to have RANDR blocked. I've checked with the Synaptic Package Manager to see that both are present on my host. Indeed, both appear to be there:
russ@russ-elite-book:~> ll /usr/lib/libXrandr*
lrwxrwxrwx [...] /usr/lib/ ->
-rw-r--r-- [...] /usr/lib/

After so many years, you'd think those who actually know what's going on would, if not in a position in the Linux development ranks or the driver suppliers, simply issue a wiki or other form of explanation as to what's going on and clearly state the choices of action and consequences of adopting each choice.

Well, it's what I'd do. But then, my goal is always to fan away the smoke that encircles those people and technologies waving magic wands and crowned with pointy, black hats emblazoned with moons and stars.

Saturday, January 8, 2011

The new wireless printers...

Even HP's cheapest printers are now wireless and best used that way in my humble opinion 'cause who wants a printer wired to his physical host any more? And who wants his whiney daughter moaning, "Daddy, I can't print out the Internet because your computer's turned off."

Well, sadly, the Windows installation doesn't seem to work: it can never find the thing at the end after installing the drivers. So, just skip trying to make the software work—it won't and I spent a couple of hours with the HP support weenies this afternoon just to prove it. It bugs me that I can't figure out why it fails.

However, the installation does indeed install the drivers on both Windows 7 and XP. So, even though you have to abort the installation seemingly without setting up an actual printer, you can do that afterward. Once that's done, you just print to it as if a "local" IP printer. Check out my note here on how to do that on XP, the harder (interface-wise) of the two platforms to do it on.

Actually, this is an activity that takes some of us way back, but it's a nice refresher for those still basking in the sunlight of Windows XP, the last trustworthy operating system Microsoft ever sold.

It all works perfectly as long as your printer lives on your LAN. I even tried hooking up to it via my Linux host which was, as usual, easier by far than using Windows 7 or XP.

I did not try the old-fashioned USB cable route. I don't ever want to do that again.

Scanner and other stuff
And, if it's not recognized by my computer host, how ever to use the scanner?

Ah, well that seems like an obstacle, but there's a solution.

First, I've not used the client software to scan with anyway, so I can't compare.

But, knowing that all sorts of things regarding this device are accessible in my browser via (where I pegged it with a static IP address), I just went there to do some scanning. It worked nicely and I'm not real sure that I'd miss the proper, client interface even if it existed.