Airport (In)security

On our trip to Chicago for a funeral this week, it was painfully obvious that we’re little safer now than we were before 9/11. What we do have is a sequence of ineffectual, high-profile countermeasures that give the appearance of safety to many Americans.

Two months after 9/11, my wife and I went on our honeymoon. At the time, searching individuals at the gate was common. We had nothing to worry about, but we really didn’t feel like going through the hassle of being searched. We had arrived early at the gate due to our ground transportation getting us there early, and had about 3 hours until our plane left. Over that time, we observed about 3 other flights departing, and noticed that they’d pull about five out of the first ten people and search them. Then they’d wait until they were done searching them, and pull five more for searching. So when it came time for us to get on the plane, we waited until 5 people had been pulled and the line was short, got in line, and got on the plane undisturbed. Meanwhile, someone’s grandmother was being forced to drink from her water bottle, take off her shoes, and empty her carry-on.

Then, this week, I thought I’d save some time with early check-in through AirTran. It’s rather cool – you log onto their site, select your seats, and print your boarding passes. As we went through the airport, our boarding pass was compared to our ID, but the only time it was actually compared with the passenger list was when we checked baggage. If we had no checked luggage, all they would have confirmed is that we had a piece of paper that looks like a boarding pass, and an ID that matches it. I’m more than tired of garbage like this – we extract some of the simple joys out of life in order for security that is in no way secure. There was always a simple joy in greeting your loved ones at the gate as they got off the plane, or waiting at the gate with them. Now, you can’t. Only ticketed passengers can go to the gates, which somehow makes us safer. Apparently, terrorists with evil intent aren’t willing to buy a ticket in order to cause trouble at the gate or on the plane, and I guess they’re incapable of mocking up a fake boarding pass (that will never be scanned for validity) to match a fake id to get on a plane.

Right after 9/11, the office building I worked in began tightening security. As a part of this, all AT&T employees were subjected to daily searches on their way into their elavator lobby, for floors 1-10. Never mind that workers for other companies on floors 11 through 30-something were completely unsearched, and that floor 11 was completely vacant, unlocked, and had the building’s support-pillars exposed. Clearly, anyone wanting to cause trouble would go to floors 1-10 and subject themselves to a search rather than casing the building first and heading to the vacant floor.

Lastly, many airports have closed off portions of their garages closest to their terminals. I can only guess they are hoping to prevent someone from leaving a car bomb such as in Oklahoma City. At the same time, they allow completely unchecked traffic to pull directly next to the terminal for pick-up and drop-off. Have they completely forgotten that the 9/11 terrorists, al Qaeda, and any number of other terrorists are fully willing to die in the execution of a terrorist plot, and even consider it an honor? And if we really are concerned about security, how many high-density soft targets are out there – shopping malls, stadiums, office buildings, etc. – that could be in danger on any day?

I’m not a big fan of security such as this, in general. I think that given the amount of time and research spent on the 9/11 attacks, terrorists will find the gap in the system to exploit for their purposes. I fully believe what Benjamin Franklin said, “They who would give up an essential liberty for temporary security, deserve neither liberty nor security.” I believe that terrorist attacks can only be prevented through a vigilant population and active intelligence efforts – all other precautions will either be readily exploited or strip us of our freedoms. Yet it is even more insulting to see half-hearted attempts at security, rules and procedures that give the appearance of adding safety, but are actually easily and obviously circumvented and strip us of simple pleasures and conveniences in the process. We are giving up something, and gaining nothing in return. It’s truly pathetic.


No, Free Health Care is NOT a Right

Kerry proclaimed last night that “health care… is a right for all Americans” and that he will “will roll back the tax cuts for the wealthiest individuals… so we can invest in health care”. So the implication here is that a) he wants to make sure everyone has guaranteed health care and b) he believes it is government’s job to provide for it.

From a practical standpoint, it has been proven that socialized healthcare has numerous problems. It is difficult to point to a single example of a country with a successful socialized health care system that is not massively subsidized by a favorable trade surplus. The problem is rising health care costs, and the higher premiums individuals pay for insurance as compared to corporations. These costs are caused by some combination of increasing drug costs, increased malpractice insurance, new coverage categories, and the lack of price competition caused by employer management of health care. None of these are fixed by moving to a single, monolithic health plan. Malpractice issues remain the same, and either expose consumers to greater risk due to the potential of citizens suing the system itself or prohibit any recourse for abuses caused by the system. Coverage areas would almost certainly balloon uncontrollably, with special interests pushing to use federal money to help people fix their obesity issues, drug addictions, and eventually cosmetic operations to improve self-image. Keeping drug costs in check would be almost impossible. Cave to the drug companies and consumer demands, and a neverending train of new and expensive drugs will keep rolling in – they will fix all sorts of problems, but at an impossible cost. Alternately, punitive attempts to keep the “evil corporation” drug companies from charging too much for medicine through price controls will be directly reflected in R&D investment, slowing the development of new drugs. I trust a free market to maintain this balance much more than ANY single entity.

From an ideological perspective, it is insane to claim that this subsidized form of health care is a right. It is insulting to suggest that ANYONE’s rights involve taking money from me and giving it to them. That’s not a right, it’s theft, it’s income redistribution. It is unadulterated, Marxian, “From each according to his abilities, to each according to his needs!” in practice. A right to health care implies not just a right to basic health care – doctor’s visits, teeth cleanings, ob/gyn care, and antibiotics. It suggests a right to whatever treatment options are available, regardless of cost. At some point some drugs, some treatments are just too expensive. They would be too expensive for a fully, corporately-insured family, and they would make other decisions. Copayment structures and caps occasionally have unfortunate consequences, but more often, they foster a measure of restraint in making health care decisions. How will a system predicated on the idea that some people can’t afford health insurance possibly enforce significant copayment structures that will encourage people to seek necessary but not extravagant care.

How long before my tax dollars are used to pay for an abortion for someone who got pregnant “on accident”, to pay for stomach staples for overweight Americans too lazy and gluttonous to watch their diet or go jogging, to repeatedly try and detox someone who keeps returning to their drug habit, or to treat AIDS in someone who engages in risky behaviors? Certainly all of these people are free to engage in these behaviors, and free to pursue whatever treatment they feel is necessary for them. I, however, should be free from the obligation to pay for their poor decisions, and I should be obligated to pay for my own poor decisions. If I don’t brush my teeth, it’s my job to pay for fillings and root canals, and noone else’s. If I ram my car into a brick wall and break every bone in my body, that shouldn’t be your problem. (Granted, many of these issues exist in group health care as we now know it, but they would all be magnified by socialization.)

I hope that we do explore ways to reform our health care system. The costs are too high, and consumers are too detached from the health care decision-making process. Legislation should be pursued to create viable ways for groups of individuals and small businesses to purchase health care at better rates than they currently can. Lawmakers need to get out of the pocket of medical associations, trial lawyer groups, and drug manufacturers, and start worrying more about the pockets of individuals. Loosen some regulations to allow more forms of competition. Show me a functional, prospering socialist government. Compare their quality of life to ours. Point out one U.S. social program that has not rampantly exceeded its cost targets and failed remarkably to achieve its stated goal. Point out one example of socialized medicine that compares to what is being proposed that isn’t fundamentally flawed. It can’t be done, and for the sake of the taxpayers, it shouldn’t be done here.


Atlanta – Java Conference coming your way!

Hard to believe, but the Atlanta Java Software Symposium is already just around the corner. Set for October 15th, 2004, at the W Hotel in Atlanta, with early registration at $625 per person, it’s one of the best conference values I know of. After I returned last year giving the conference rave reviews, my company has agreed to send 2 people this year, and with 5 concurrent sessions, I think it will pay off.

The slate of speakers is perhaps a shred better than last year. Most of last year’s excellent speakers, including Dave Thomas, Bruce Tate, Stuart Halloway, David Geary are returning (those are the ones I heard last hear, I heard some of the other returning presenters were also good), and some solid additions have been made – Richard Monson-Haefal and Ted Neward are additions I recognize. Additionally, many of the good speakers seem to be doing more presentations. Add it all up, and it looks like another great program. Hopefully the TBA sessions will be of similar quality, and we won’t see the addition of any marginal, vendor-driven astroturfing sessions such as one I attended last year. If you join the Atlanta Java Users Group mailing list, you’ll probably see a discount code before long. I hope to see you there – if not, I’ll probably try some live blogging, although that will depend. Last year’s wi-fi access was spotty at best.


Lazy-loading objects using Hibernate

It’s painfully obvious how to lazily load collections in Hibernate. Simply set lazy=”true” and you’re ready to go. Doing the same for associated objects can be a bit more intimidating. The use of the term “proxy”, and no sign of the familiar lazy loading terminology can be a bit intimidating, but it really is just as trivial.

It’s not as intuitive because it’s accomplished indirectly. You actually have to change the related object rather than changing the relationship. Suppose we have a Cat object (the preferred object of Hibernate documentation), and each Cat has an Owner class associated with it via a many-to-one relationship. To ensure that the Owner is lazily loaded, we simply change the definition of the mapping of the Owner class, adding proxy=”net.sf.hibernate.Owner”. Now, any class that has a 1-1 or N-1 relationship to an Owner will default to lazily-loading the Owner object.

In practice, the proxy functionality allows so much more than this, but for a quick solution, it works like a charm. Especially interesting is how Hibernate uses CGLib to create the proxy interface for the class on-the-fly. It appears to create a wrapper class around your object that extends each method to first check for the initialization of the object, and then, if/when initialized, returns the expected result.

One gotcha here is that specifying a proxy makes lazy loading the default behavior for all relationships. To override this, I believe an “outer join fetch” is needed in an HQL query. Still, this sort of strategy is used when tuning an application, so outer join fetches and such are a necessary evil(?) anyhow.


Discovering the Obvious

“I am the man who with the utmost daring discovered what had been discovered before.” – G.K. Chesterton

In the opening chapter of Chesterton’s Orthodoxy, he discusses the simultaneous wonder and folly that he found in his discovery of Christianity. I feel that we often do the same thing in the world of technology.

Every single day, literally dozens of “Aha!” entries on developer weblogs extol the virtues of framework x, pattern y, technology z, with a sense of amazement. There is a sense of pride and excitement in finding the answer to their problem, the elegant solution to their needs. At the same time, it is humbling, humbling to realize that not only did someone already know it enough to create the technology we are marveling at, but further to realize that each week before, dozens of others arrived at the same conclusion.

Aside from the self-deprecation that Chesterton enjoys so much, his point is that the process of the discovery is what makes the truth all the more true to us. It isn’t so important for us to know the fact of how MVC can improve our applications, it is coming to understand and believe that fact that makes it relevant. Further, each of us learns a bit differently, and by sharing our learnings in a way that makes sense to us, there is a chance it will make sense to someone else, that when they google for the terms we used that gave us no useful results, they will find our useful result, and they too will capture that excited moment of discovery. Now if you’ll excuse me, I need to go express a discovery of the obvious, Velocity templates.