Tuesday, December 22, 2009

Serena Williams beats out horse to win 2009 AP Female Athlete of Year

Serena Williams received 66 of 158 votes to be selected as the 2009 AP Female Athlete of the Year. I like Serena. I like to watch her play. I like to watch her curse at referees. So I checked out this article on the big news.

And I scanned through the article until my brain stopped short on this line:

"Zenyatta, the 5-year-old mare who capped her 14-0 career by becoming the first female horse to win the Breeders' Cup Classic, finished second for the AP honor — with 48 fewer votes than Williams."

Yes, that's right. They rank human beings and horses (and dogs and all other sporting creatures, I presume) in the same poll. That doesn't seem right, does it?

And poor Kim Clijsters, another tennis player. She ranked third - behind a horse!

Saturday, December 19, 2009

An amazing way to visit Prague without leaving your computer

Prague is one of my favorite cities - my friends at Oracle (and now beyond Oracle - a "shout out" to Petra, Martin, Roman, Monique, Lenka...) have always taken such good care of me; the sidewalks are nothing short of amazing - yes, the sidewalks; great restaurants; beautiful bridges and buildings.

Wouldn't it be nice if everyone (excepts hordes of drunk Brits) could visit Prague? Well, now you can sort of, by visiting this site. It is an 18-gigapixel panorama photo of Prague that the photographer describes as follows:

"This is a super high resolution photo. Use your mouse to zoom in and see a startling level of detail. This image is currently (as of 12/2009) the largest spherical panoramic photo in the world. It is 192,000 pixels wide and 96,000 pixels tall. That’s 18.4 billion pixels, or 18.4 gigapixels! When it’s printed, it will be 16 meters (53 feet) long at regular photographic quality (300dpi). It was shot in early October 2009 from the top of the Zizkov TV Tower in Prague, Czech Republic. A digital SLR camera and a 200mm lens were used. Hundreds of shots were shot over a few hours; these shots were then stitched together on a computer over the following few weeks."

Enjoy!

Wednesday, December 09, 2009

Today is One of My Favorite Days of the Year

Today, December 9, 2009, is one of my favorite days of the year. Why is that? Because it marks the very last time in 2009 that I will be in airplane and be at O'Hare Airport.

Yes, with three weeks to spare, I will not do any more flying in 2009.

Sadly, I managed another 100000+ mile year with American Airlines - 61 "segments" = about 30 trips, so on average flying twice a month...hey, that doesn't sound too horrible does it?

Sure, AA makes it pleasant enough - pretty much automatic upgrades on all domestic flights, lots of "Thank you for your business, Mr. Feuerstein" when I step onto a plane, invitation to visit all the first class lounges of co-share partners like Japan Airlines and British Airways when I travel internationally....yes, somehow I survive.

Still and all, I very much prefer being at home (even if it is cold and snowing).

Wishing the best to everyone during the holidays,
Steven

Monday, November 23, 2009

A Report from DOAG 2009 (German Oracle User Group Conference)

I spent last week in Europe, a very nice trip in many ways. I was invited by the German Oracle User Group (DOAG) to do a keynote presentation at their annual conference in Nurnberg (Nuremberg). So I built a week of activities around that event.

First of all, I flew out to Germany from North Carolina, where I'd spent the weekend watching my nephew, Brian Daniels, play in his last college football game (actually in Danvilla, Virginia, at Averett University). Now he will continue to train hard, attend the Spring 2010 Combine, and hopefully be invited by an NFL (or other professional football league) team to actually make a living from football. Talk about tough jobs.

I have discovered that it's quite a lot fun hanging out with college football players. In my experience, these massive, heavily muscled, incredibly disciplined young men are also unfailingly polite and very sweet. Big teddy bears. Until they get on the field. Then it's all business.

Well, so from Raleigh, NC, my wife Veva went home on Sunday - and I took a flight to Heathrow. Then after a few hours layover (spent comfortably in the British Airways premier lounge in Terminal 5), I took another plane to Frankfurt, and from there a 2.5 hour train ride - and finally I was in Nurnberg. I was up for over 30 hours, but I must say my body is a strange machine. It doesn't really object too much to such situations. In fact, when I got to the hotel after being awake for some 25 hours, I went down to the fitness and exercised for an hour.

In any case, the DOAG conference was incredibly well-organized and well-attended. I did a short technical talk on Tuesday, organized at the last moment, and still had an overflow crowd of developers show up. DOAG asked me for a "head shot", so I sent my standard zip file with a wide variety of photos, mostly just to be entertaining. For example, it contains this photo:

But that doesn't mean they are supposed to use such photos, correct? Well...you never know. So DOAG (and Quest Germany) apparently decided that they wanted a somewhat "formal" appearance for me. So I arrived at the conference center and found variations of the following photo appear on agendas and signs and so forth:

I haven't seen me in a tuxedo in a long time! I sure didn't wear a tux at the conference. Heck, I didn't even bother with a suit. Lots of people still wear suits in Germany, I have found.

On Tuesday night, the DOAG board invited me (and all other English speakers) to dinner at a traditional German restaurant (the Golden Posthorne). That was fun, though I definitely ended up eating way more meat than I am used to.

On Wednesday, I did my keynote talk: Guarantee Application Success. I was determined to improve over my last keynote performance for DOAG several years ago. I really didn't think I did a very good job back then. I mostly presented the ideas of someone else (Lawrence Lessig - Code as Law) and I talked way too quickly. A number of people came up afterwards and said "That was a great presentation, Steven, but I could only understand half of what you said." That made me feel really bad.

So this year, the keynote contained all and only my own ideas, which meant I could be a bit more comfortable in my presentation. From what I can tell, it was well accepted. I certainly had a good time doing a talk in a hall that probably held 400-500 people, and offered not only a projection of my Powerpoint on a giant screen, but also threw up an image of me speaking that must have been 50 feet high.

Afterwards, I also sold and signed a bunch of my Oracle PL/SQL Programming, 5th edition. Then a hurried and truncated "Ask Steven" session, then back to the train station, and off to Prague.

So on Wednesday night I took a late flight (10 PM) to Prague and then spent the next two days teaching my Best of PL/SQL class to 25 students. This was my third class in Prague and each time I have been impressed by the quality of the students. Lots of really excellent questions, critiques of my code, new ideas for me to pursue....and I got to enjoy Prague for a little while.

It is a delightful city, especially the sidewalks and especially because I have had the very good fortune to become friends with some current and former employees of Oracle, and they seem to be perfectly to take me out for excellent meals. I had a wonderful dinner with Roman and Lenka at Trattorio Cicala on Thursday (lots of photos on the wall of the owner with big movie starts - Sean Connery, Johnny Depp, Brad Pitt, Vin Diesel - but he didn't ask to take a picture with me. How insulting! Didn't he know who I was? Guess not...), and then on Friday at La Finestra with Petra. Oh and a fine but quick lunch with Roman, Lenka and Martin, who manages the Oracle University team there in Prague. Thanks for organizing the class, Martin!

Then on Saturday morning it was time to go home, or so I thought. I got to the Prague Airport 1.5 hours in advance - and found the entire airport shut down. There had been a fire, apparently. All systems were down, no one could check in for their flight....within an hour, my British Airways flight was cancelled and I was starting to contemplate having to stay an extra night in Prague - or London/Heathrow, but then I got onto a Czech Airlines flight, and was able to catch the third and last American Airlines plane back to Chicago. We are, in fact, starting our descent into my home city right now. [At which I found out that my suitcase was not on the plane; a day later, though, it had been delivered to my house.]

Unfortunately, I go back to an empty house. About 10 days ago, my son, Chris, fell while skateboarding and broke his left leg - badly. Now he has a titanium pin in his left leg and needs lots of help. So my wife, a former nurse, flew down a few days ago to assist.

Well, my house may be empty, but it's still home and I very much look forward to sleeping in my own bed, making my own bowl of old-fashioned oatmeal for breakfast, and so on.

And in six days, I fly back to Europe, to Birmingham, UK for the UKOUG conference!

See some of you there....
SF

Saturday, October 31, 2009

Sure hope Oracle keeps mySQL!

I have decided that I really hope that Oracle gets to keep mySQL when it completes the acquisition of Sun (though I can certainly understand if the European Union draws the line and demands that it be spun off).

Why would I like this?

First, I am certain that Oracle will treat it right, probably do a better job of supporting and enhancing it than has Sun, simply because it has deeper pockets with which to finance such an effort.

Second, as you may have read by now, IBM has announced support for PL/SQL-based applications on DB2 9.7. So? Well, I think there is a rather good chance that in a few years, all of IBM's DB2 variants will support PL/SQL.

And if Oracle keeps mySQL, it seems to me that there is every reason to believe that Oracle will port PL/SQL over to mySQL, so that it has a solid programming language with which to manipulate mySQL data (the current state of mySQL's stored procedure language is not very encouraging).

Add to that the fact that PL/SQL now also runs on Oracle's Times Ten database, and it is possible for me to dream about a day when PL/SQL will become the de facto standard database programming language for SQL/RDBMS databases (well, except for Microsoft SQL Server).

What does that mean? I can sell more books! Do more trainings and webinars!

Go, PL/SQL, go!

Monday, October 26, 2009

An opossum in our tree

We thought we had a squirrel nest in the English Oak in our backyard - we certainly saw squirrels running around in the tree, and we could see a big bunch of leaves collected in the heart of the tree.

It also looked like the squirrels were actually able to bend down a branch from the English oak (which grows vertically for a long time and does not spread its branches) to form a bridge over to the pear tree and then to the garage.

But then recently I saw that a very thick branch had been bent at a sharp angle across to the neighbors yard:














Today, that branch above was bent almost down to the fence. It looked clearly broken - I investigated. It was. So I sawed it off and then Veva said: "Look, there's an opossum in the nest!" And then all became clear: that was no skinny little squirrel bending these branches. It was a big fat opossum:



Very cute!

Friday, October 09, 2009

Software Developers as Gods

Software - and testing it - is a very funny thing. Seems to me that in some ways software is our (humanity's) closest attempt to be gods - to create our own worlds.

In the real world, the "organic" one, stuff just happens and it is beyond beautiful. In the cyberworld, we - humans - must be the gods who pay attention to every detail. And every detail has to be right - which is awesomely overwhelming as tasks go.

To achieve the goal of a functioning, sustaining world, we have to explicitly and thoroughly test our software. In the real world, when stuff doesn't work, it does and does not make it to the next generation.

Can you imagine telling a god that it has to test its creation before we are expected to live in it? What an insult! The resulting fury would surely scorch a civilization or two to embers (perhaps that was really the sin of Sodom). So you can understand why we programmers do so little and so ineffective testing. It is insulting to think that what we wrote does not work, does not meet the needs of our users.

Well, it's hard being a god, but after a while you get used to it. You drink another Diet Coke, make snide comments to other gods about the fickleness of your subjects, and think up another methodology that will hopefully get you that much closer to perfection.

Somehow, I don't think that humans are up to this task.

But from one software developer to another (if that is what you, my reader, are), BEST OF LUCK!

Friday, October 02, 2009

Congratulations to Rio!

I am so happy. The Summer Olympics will not be in Chicago in 2016.

I thought it was such a bad idea. It was basically an attempt by Mayor Daley to establish his "legacy" of making Chicago a "great" city. It would have been a disastrous mis-allocation of resources very much needed elsewhere.

I tell you what, Mayor Daley, how about if you establish your legacy by ending the almost every day killings of children (almost always African-American) in your city?

It really burned me up that he could spend so much of his time, our money, etc., on trying to get the Olympics and so little of his time, effort, our money on making this city safe and healthy for its children. Disgusting.

Saturday, September 26, 2009

Joel Silva, How Could You Be So Mean?

Got this email from my Dad (turns 80 next month) yesterday:

Subject: Twitter
From: sheldon feuerstein

I took a look at Twitter and asked to see what was there for you and found one comment that asked "hasn't anyone told Steven that PL/SQL is dead?" I hope not...
DAD

I tracked down this message to Joel Silva, who wrote: "Going to attend Steven Feuerstein conference today. Can anyone tell him PLSQL is dead!?"

First of all, if it is dead, why are you coming to my event in Porto, Portugal? :-)

Second, you got my dad all worried....
Joel, Joel, how could you be so mean?

So please people: be careful what you say on the Internet (about me, anyway). There are the tender sensibilities of parents to keep in mind!

:-)

Monday, September 21, 2009

OOW PL/SQL sessions with a multimedia focus

My friend and PL/SQL expert, Marcel Kratochvil, will be at OOW (up from Australia) to talk about his experiences using PL/SQL to deliver multimedia-rich applications. If you have any interest in this area, I strongly encourage you to check out his two sessions.

The first is at the Unconference, and covers Internet PL/SQL development Tips:
Wednesday - Oct 14, 1 PM
Overlook II: Mod PL/SQL Development Tips - including Google Maps, Spatial Integration and sending HTML formatted emails with graphics.

The second is a workshop to be held at the Oracle Develop Conference at the Hilton, and is a hands-on workshop for building an internet based multimedia PL/SQL application. Here are the details:

Tuesday Oct 13, 2.30pm -3.30pm Hilton Hotel
Build Fast, Secure Web Applications with the PL/SQL Gateway and Oracle Multimedia
In this hands-on lab, learn to build fast multimedia Web applications on Oracle Database with minimal code. Build a Web interface to query and view multimedia data with relational data. For example, query and retrieve a photograph, audio clip, or document in one piece of code. Tune the database so multimedia data will fly off the disk into the application.

Tuesday, September 08, 2009

Online Training for the New Economy

When the going gets tough and budgets get tight, money for training is often cut first. You still, however, need to learn how to best leverage the PL/SQL language and write high quality code. To help you, Quest is offering a three-part, webcast training series that I will be teaching. Each session consists of two hours of in-depth coverage of a specific functionality area or best practice.

The cost is far less than you would be for an onsite or public training - and I don't have to travel (and neither do you)!

More information about session logistics and registration are available through these links below. For much more detail on each session, please check out the descriptions at the end of this posting.

Webcast Details
I hope that you can take advantage of this opportunity. Click here toget more details and to register.

Optimize PL/SQL Execution with Bulk Processing

This session focuses on how to turbo-charge the performance of multi-row SQL statements executed from within a PL/SQL using FORALL and BULK COLLECT. These features have been around since Oracle8i, but many developers still don't use them or only scratch the surface of what is possible.

The Bulk Processing webinar will talk about why these features were needed and how they work. Steven will start with simple examples and syntax and drill down into all nuances, including the LIMIT clause for BULK COLLECT and the SAVE EXCEPTIONS, INDICES OF and VALUES OF clauses for FORALL.

After attending this webinar, you will be able to both create new programs built around these features and also redesign existing programs safely to improve performance.

Writing Maintainable PL/SQL Code

Software managers (and, therefore, their developers) are very focused on delivering applications "on time" (that is, to meet the current production deadline). Sure, that's important. But as (or maybe even more) important is to build applications so that they can be maintained and enhanced without consuming all the resources of the development team (thereby interfering with new development).

This webinar offers a wide-ranging set of techniques to make your code easy to understand and maintain over time. These techniques include: the use of subtypes and local modules; how to activate and check compliance with standards; and encapsulation (information hiding).

After attending this webinar, you will be able to write code that minimizes the amount of development resources needed to maintain that code.

Error Management Features of Oracle PL/SQL

Consistent, robust error management is a critical feature of any successful application. Developers need to know all that is possible in PL/SQL regarding the raising, handling and logging of errors, and that standardize the way in which those tasks are performed.

This webinar takes you beyond the basics of exception handling in PL/SQL to explore the wide range of specialized error management features in Oracle, plus recommendations for best practices for consistent, robust application construction.

We will cover FORALL's SAVE EXCEPTIONS, DML error logging with the DBMS_ERRLOG package, the AFTERSERVERERROR trigger, the DBMS_UTILITY.FORMAT_ERROR_BACKTRACE function, and more. In addition, we will talk about hiding error management functionality behind a PL/SQL packaged API and then deploying it as a set of services for application developers.

After attending this webinar, you will be able to fully leverage PL/SQL error management features and follow best practices for consistent error management across your entire development team.

Thursday, September 03, 2009

Those Europeans are so sensible

When I first read that Oracle would buy Sun, my immediate reaction was:

"How bizarre, to think that Larry Ellison, the King of Proprietary Software for so many years, now would own and control Java and mySQL!"

I have no doubt that Oracle will strongly support and enhance Java; it committed itself to the Java platform years ago.

But you've got to wonder about the future of mySQL. Sure, Oracle would royally piss off millions by letting mySQL dwindle, but it would likely offer a powerful alternative (like the free Oracle XE) - and would also likely be able to ride out the firestorm of protest.

Of course, the U.S. Justice Department said "No problem, Oracle. You go and swallow up Sun."

But the European Union is much more suspicious of corporations, which makes perfect sense to me. After all, the stated purpose of a corporation (maximize profits) has many unavoidable "conflicts of interest" with the stated purpose of democratic and civilized nations. As a consequence, it has raised concerns about this acquisition, specifically as it concerns mySQL.

I expect the acquisition will go through, but perhaps Oracle will have to make some sort of commitment to maintain and enhance mySQL, or maybe shed it entirely (reversing Sun's $1B acquisition of the software a year ago, which I think was a darned strange thing to do for a company in such bad shape).

Wednesday, August 26, 2009

A trip to Australia, Singapore, Seoul

I wrote this a few days ago...] Once again, at 35000 feet, on my way from Tokyo to LA - returning from two weeks in "APAC" - Asia Pacific theater. I spent a week in Australia (Sydney, Melbourne and Perth) then three days in Singapore and finally a very fast day in Seoul. All because there were enough Oracle developers in each of these locations who actually wanted to listen to what I have to say. What a lucky fellow I am!

Here's a recap of the highlights of my trip....but first, you can see all my photos at:

Australia: http://www.flickr.com/photos/60694364@N00/collections/72157622028021941/
Singapore: http://www.flickr.com/photos/60694364@N00/sets/72157622027981843/
Seoul: http://www.flickr.com/photos/60694364@N00/sets/72157622152297286/

Looooong flight from San Fran to Sydney, but I got lucky and they put me into a premium economy seat (Qantas), so I slept for 5 hours and worked for 8. Arrived Monday morning and headed over the Quest office. My big public event was on Tuesday, but Monday evening I presented a PL/SQL Quiz to the Sydney Oracle Meetup group organized by Alex Gorbachev. That was fine. I got to drink some beers first, so that my explanations were properly slurred. And, as is so often the case, I made my quiz questions too hard. Out of the 25 people there, the best anyone could do (3 people) was 5 out of 10 right. So then we did a tie-breaker. I figured the tie-breaker was for the really sharp folks. So my first tie-breaker question was:

Explain which feature of PL/SQL is related to this number: -24381

They just laughed at me. Are you laughing, too? Sure, it's obscure...but I bet some of you know the answer. Oh well....anyway, someone finally won - a copy of my soon to be released Oracle PL/SQL Programming 5th edition (up through Oracle 11.2).

Well, my seminars in Sydney, Melbourne and Perth went very well. Sponsored and organized by the AUSOUG, we had lots of enthusiastic attendees and many excellent questions. I renewed my acquaintance with several Oracle ACEs (and ACE directors) including Tony Jambu and Chris Muir. I like Australia. Not only are the folks generally friendly, but there is lots of interest in PL/SQL and many advanced developers. My kind of country.

I didn't have much time to wander around Sydney or Melbourne, so my photos are very "hit or miss"....

I visited Perth for the first time (western edge of that enormous island continent) and presented to some 100 Oracle technologists on Friday. They were very pleased to have me there - apparently very few people ever bother to go to Perth. But when they do - the weather stinks. "Oh, Perth is great - warm and sunny," they told me. I arrive and find it overcast and windy. On Saturday, my free day....40 km/h winds! Apparently Tom Kyte had the same bad luck. I presented from 9 to 4, more or less, and very few people fell asleep. We played Set and Mastermind, and did some PL/SQL, too. It was a great day.

And the poor weather was not going to hold me back. I walked all over, discovered the impossible triangle, enjoyed the Art Gallery of Western Australia, and spent some time in Kings Park. In East Perth, I came across a remarkable sculpture of an "impossible triangle" devised by Sir Roger Penrose in the 1950s. As you move around it, the different unconnected edges gradually merge into what appears to be a triangle with "one side". Penrose's work served as inspiration for a number of M.C. Escher pieces.

You can check out my impossible triangle photos at: http://www.flickr.com/photos/60694364@N00/sets/72157622026683017/

Many thanks in particular to Chris Muir and Conner McDonald (they sacrificed a night of their lives to have dinner with me - and Chris even let me hold and snuggle with his three month old baby), as well as the rest of the AUSOUG officers and volunteers who made my events a success! Thanks as well to Ling, Silvana, Ceci, Alf and others at Quest Australia who helped make the week such a fine and productive time.

Then on I went to Singapore. I must admit: I really like Singapore. I like the weather (hot and humid), so much like Puerto Rico. I like the people: all sorts of people from all over, very informal, very easy going, great sense of humor. I even like the way the society it works - it's not a democracy; there is no free speech (though there is, I discovered a Speakers Corner, kind of like in London, where people can openly complain, once they get permission from the nearby police station). Instead, the government offers a trade: we will give you a decent quality of life, subsidizing housing, health care, public transport, etc. - and in exchange, YOU WILL BEHAVE. Criminals are treated most severely and lots of things are crimes. I am not saying I want the US to be like this, but it is lots easier to criticize such a setup from afar. From inside, it seems pretty nice. As long as the economy goes OK, and they have been hit hard, being very dependent historically on the US and UK financial industries. Hopefully the recovery is under way.

But there sure are lots of enthused PL/SQL developers. The Quest folks told me that even before they sent out the first email invite, they had people calling to reserve their seats. They had a waiting list of over 20 people, who kept calling: "Can I attend? Can I please attend?" I did a full day of presentations (same as in Perth) and then that evening I was to fly off to Seoul (red eye). After the event was over, Jason and Mark were asking me: "Have you ever had a foot massage?" Well, sort of but not really. So off we went - I got a foot massage, then a great dinner of chili crab (a Singaporean classic - very tasty and very very messy), then back for another full body massage that was just fantastic - then off to the airport....8 hours later, I arrived in my hotel room in Seoul (9 AM). Got a few hours sleep, anyway.

Before continuing with my "saga".....many many thanks to Clara, a truly professional and highly competent events organizer. Once again, she did a fantastic job pulling the third Oracle Experts Day together. Thanks also to Jason, Mark, Stanley, Beth and everyone else in the Quest office for making my stay so enjoyable (Beth even let me drive her car! Crazy lady!). And finally, most of all thanks to Gayathri for being so generous with her time and not only driving me to the Night Safari but even spending the evening walking around there with me.

See you again in 2010!

My last day was in Seoul - just one day, which was most unfortunate. But we put it to good use. They (Chaeyoung, Jihee, Jackson, Yuji and everyone else) pulled together an event of 100 people - which is very remarkable, considering that very few people are comfortable with English there, so we needed a translator (who apparently left much to be desired), and of course that reduces the number of people who will attend. It certainly reduced the numbers of words I could speak and and number of demonstrations I could do. But we had pocket references for everyone and I even remembered to bring my business cards, so I signed lots of books and mostly got the names right, and correctly offered my business card to many. Everyone seemed pleased with the results.

They told me in advance: plan to wear a suit and bring your business cards. I did both - and then ironically Raymond, the Quest country manager, showed up for lunch and the evening presentation dressed in a polo shirt, jeans and sneakers. "This is an event for developers!" he said. "They don't get dressed up." So I was dressed like a sales manager, and he was dressed like a developer. I was very jealous.

He also make a point in his introduction to tell people how old I am (just about to turn 51). People generally say that I look younger than my age, but I found that in Singapore and Korea, they were really blown away by my age. In Singapore, over and over people said "I can't believe you are 50." But usually they don't bother to mention it in the introduction. Jihee, Quest marketing manager, explained that in Korea alot of respect is paid to the elders. So I think that Raymond felt that it was important to tell people (mostly young developers) that I was actually OLD - and they should therefore listen to what I had to say. OK!

And the folks at Quest took very good care of me, taking me out to lunch (Mongolian - excellent food) and then dinner at a famous, traditional Korean restaurant. I was told (by friends in the US) to expect to drink lots of soju (Korean whiskey), get very drunk, and sing karaoke. Instead we had a seemingly endless delivery of very tasty and interesting dishes, along with some rice wine, and no one insisted that we go out and sing. Maybe that's because they knew I was running on 3 hours of sleep, and had to leave the next morning at 8:20.

So that's it. Two weeks away from home, and I added another country to my list of those I have visited (South Korea). I spoke directly to something like 400 developers and hopefully will have a ripple effect on many more. I greatly enjoyed visiting Perth and Seoul for the first time, and enjoying once again Sydney, Melbourne and Singapore.

I remain amazed, deeply gratified and feeling just downright lucky that so many people are interested in hearing what I have to say and reading what I write (both book-wise and code-wise). My deepest thanks to all those who organized the events and all those who feel they have something to learn from me.

Thursday, August 13, 2009

Another idea for more equitable pay distribution

A long time ago, on my old and very colorful website (thanks to the artwork/design of Chris Silva, my son), I offered my thoughts about excessive executive compensation and an idea for avoiding the enormous gaps between rich and poor in our supposedly democratic country: 25X&NOMORE. Here's the basic idea:

The highest-paid employee of your company shouldn't earn more than 25 times what the lowest-paid employee is paid.

Why would I suggest something like this? Because we have a serious problem in this country:

"The pay disparity between CEOs and U.S. workers is increasing to alarming levels. In 1965, CEOs made 44 times the average factory worker's salary. Today, CEOs make 326 times the average factory worker's pay."

Oddly enough, corporate America has not heeded my call. Nor has Congress. Ah well...sometimes all you can really do is be a prophetic and wise voice in the wilderness. This makes you (and pretty much no one else) feel a little bit better.

I recently came across another effort to achieve similar goals: Open Year ("It's good to share."). It's quite different from my idea, depending on social networking and influence models. I think you will find it interesting and I encourage you to check it out.

Sunday, August 09, 2009

Travel tip: Big fat neck pillow great for feet!

I am flying from San Francisco to Sydney. Fourteen hours. Not fortunate enough to be upgraded to business class. And when flying coach and trying to sleep, I find that one of my biggest problems is finding a comfortable position for my feet. If I plant them flat on the ground, my legs are not relaxed and it is hard to sleep. If I stretch them out (as far as the seat in front of me will allow, anyway), then my feet dangle forward or to the side and they end up stressing my ankles. Keeping me awake and needing to shift position.

Who knows? Maybe somebody out there somewhere sells something specifically for this problem. I have not found it. I have found, however, an alternative that works really well.

Lots of companies sell inflatable neck rings that are supposed to help support your head and make it easier to sleep. One particular such ring is big and fat: the Komfort Kollar.

I don't find it all that useful to wear around my neck. I recently realized, though, that if I put it on the floor in front of me, I can comfortably nestle my feet in and on the ring. I can then sleep more easily. Simple, cheap solution to a vexing (at least to me) problem.

OK, three more hours to Sydney! I slept for about 5 hours and now I am wide awake and ready to type type type. So far on this trip I have:

* written my latest ODTUG magazine column, Confessions of a Quick and Dirty Programmer
* put together a quiz and answers for my Sydney Oracle Markup presentation and pizza for later this evening
* continued enhancing the Code Tester backend to support automated testing of object types
* eaten too many sweet snacks
* written a bunch of Q&As for a database of quiz questions I am constructing (about which you will hear lots more very soon)

Back to work!

[ And now I am in my hotel in sunny, bright, too-cool Sydney, after some 25 hours of flying...time to exercise, eat breakfast, and head to the Quest office! ]

Tuesday, July 28, 2009

Photos and t-shirts by two fabulous artists

The two fabulous artists: my son Chris Silva and his wife Lauren Feece.

They recently created an installation on the beach in Puerto Rico. Photos here.

Chris has also put several very nice designs on t-shirts, which you can order here.

Sunday, July 12, 2009

Corporate Stockholm Syndrome

For most of us, a job constitutes a straightforward, though often very unpalatable trade-off: you, the employee, hand over enormous chunks of your life (time and sentience) to a corporation, and your employer hands you back some money.

Needless to say, for the vast majority of people in this world, it's a poor trade. They work exceedingly long hours, endure poor to horrible working conditions, and are paid ridiculously small amounts of money.

Yet there is clear evidence to suggest that after an extended period of time, employees develop a Stockholm Syndrome-like response to their employers. They become grateful for the smallest crumbs that are handed to them. Here is an example I recently came across....

===============================
Improving employee morale with incentives a challenge in tough economic times
By Wailin Wong | Chicago Tribune reporter

ThoughtWorks, a Chicago-based information technology consulting firm, gives its employees a three-month paid sabbatical when their tenure reaches 10 years.

Nancy Kistler took her leave last summer after 14 years at the company, where she oversees several large client accounts. Instead of traveling around the world like some of her colleagues, Kistler stayed home in Grand Rapids, Mich., with her two young children. It was a welcome break after having traveled weekly for 14 years.

"I was really thankful for getting that opportunity because you don't get that anywhere these days, and having it be fully paid makes a huge difference," Kistler said. "To me, it really said a lot about how I'm valued by the company."
=================================

And there you have it, folks. This woman spends FOURTEEN YEARS traveling every week for her company (and I am sure paid quite well). For at least several of those years, she is separated from her children for a large part of the time.

And she ends up being really thankful for three months of time with her family.

I guess it's a whole lot better than being bitter.

Friday, June 26, 2009

Another most excellent ODTUG

I am just back from the latest ODTUG (the Oracle Development Tools User Group) Kaleidoscope conference, this time in Monterey, California. It was, as usual, a very well-run and successful event (their attendance actually grew from 2008, which is saying an awful lot given the state of the global economy).

It is easy to pick out the highlight of the conference for me: the ODTUG board of directors very graciously bestowed upon me their first Lifetime Achievement Award. Here, I can prove it to you with (what else?) Twitter: http://twitter.com/odtug/status/2273902345

[ How did we ever get by without Twitter? Aw, just kidding. I do without Twitter every single day of my life. :-) ]

Anyway, back to the seriously wonderful stuff: I was very honored by ODTUG and deeply appreciate the award, except I have to wonder if the "subtext" of the award is "Enough already, Steven. Time to chill out and let other people have their way with PL/SQL."

Maybe, maybe....I will give it some thought - after I finish the next edition of Oracle PL/SQL Programming (due out in October at Oracle Open World), implement object type support for Quest Code Tester, wrap up my best practice video series on PL/SQL Obsession, and come back from my Asia-Pacific summer tour (Australia, Singapore and Seoul).

Of course, I don't like ODTUG just because they treat me so nicely (oh, and they have also agreed to let me publish a regular column named "Confessions of a Quick and Dirty Programmer" in their magazine). This is my favorite user group organization precisely because of its focus on developers. At a time when Oracle barely seems to remember that it has this great programming language (excepting the PL/SQL dev team, Oracle Magazine and OTN, of course), ODTUG offers an annual love fest for PL/SQL developers.

Hmmm, actually two love fests: the general ODTUG Kaleidoscope conference (it covers much more than just PL/SQL) and the annual Oracle PL/SQL Programming conference (it covers nothing but PL/SQL). OPP2009 will take place on Nov 10-11 in Atlanta. It will feature an expanded agenda, which means that, more than ever before, if you are looking for an intensive training in PL/SQL, OPP2009 is the best place to spend your scarce training dollars.

Enough shameless promotion of a conference for which I am technical co-chairperson.

So....thanks once more to the ODTUG board and its many fantastic volunteers, as well as Your Conference Connection, which does the on-the-ground organization of ODTUG events. Special kudos to Jeff Jacobs, Kaleidoscope conference chairperson, Mike Riley (ODTUG president, and husband of the very delightful Lisa Riley, with whom I had several excellent conversations) and Kathleen McCausland, ODTUG executive director.

If you've never attended a Kaleidoscope or OPP conference and you are a PL/SQL developer, I strongly urge you to get them on your calendar ASAP.

Wednesday, June 10, 2009

Quest Code Tester for Oracle 1.8.3 Now Available

Version 1.8.3 of Quest Code Tester (the most powerful automated testing tool for PL/SQL currently available, and my main obsession these days) is now available for downloading from Quest's on-line SupportLink (after being prompted to log in you will be taken directly to the download page). If you write PL/SQL code or manage a team that does so, you really owe it to yourself to check out this tool. Thirty-day free trial available at www.quest.com/code-tester-for-oracle.

I strongly urge all Code Tester users to upgrade to this version. It is, without doubt, the most stable and richly-featured release of this automated testing tool.

Of course, you would expect that it would have more features, which I detail below. How, you might ask, can I be sure to make my claim of "most stable"?

Very simple: because for 1.8.3, we finally "ate our own dog food" in a very big way and constructed an automated regression test of the backend functionality of Quest Code Tester.

You might have thought that since this is an automated testing tool, we would have done this from the very start. Yes, that would have been ideal, but so little about our lives are ideal, would you agree?

Certainly, we used Code Tester to test elements of the backend right from the beginning, but that is a different thing from building anything approaching a complete and automated regression test.

That is the most important new "feature" of 1.8.3, and we did it by creating a new utility to complement (and eventually be folded into) Code Tester, which we are calling Test Launcher. I talk more about Test Launcher in a follow-on post to this blog. We will soon be posting Test Launcher on the Code Tester community library in the Downloads and Upgrades section. You will all be able to use Test Launcher yourselves (though initially it will not be supported by Quest Support - you will need to report issues through the community).

New Features in 1.8.3

Besides fixing over 75 bugs, we added some very nice new features. The following information is also available in the release notes.

New Export/Import Architecture

Code Tester now writes export files as an XML document. It will import both the legacy ".QUT" export files as well as the new .XML formatted files. Merging is now only supported for XML exports. The new export format will be much more reliable and easier to support.

Expanded Set of "Hooks"

Code Tester now offers a greatly expanded set of hooks via the my_codetester package to customize the behavior of Code Tester at key points like before and after import, before and after running a test, etc.

Reports for Suites

All reports defined for individual test definitions are now available for suites as well.

View All Test Definitions in Test Dashboard

You can now change the schema selector to "All Schemas" so that you can see the list of all test definitions to which you have access (run and/or edit) at once, without changing the selected schema.

Use Windows Name to Track Changes to Test Definition

You can use the my_codetester package to specify to Code Tester that the "created by" and "changed by" audit columns on test definition tables be populated with the name of the Windows user, rather than the Oracle schema name returned by the USER function.

Test Package Formatting on Demand

Code Tester will no longer automatically format the generated test code (this will improve overall performance of generation). You will now need to explicit request a format and recompile in the Test Code tab of Test Editor.

Improved Support for Wider Set of Datatypes

Code Tester will now allow you to create test definitions properly for all kinds of timestamps and intervals. You can also create a test definition for an object type, though you will still need to write the actual test logic yourself.

Wednesday, June 03, 2009

Hurrah for Barack Obama: another step towards normalization with Cuba

How very exciting! The U.S. policy towards Cuba has been an obscenity for decades, even to the extent of supporting and allowing acts of terrorism on our own soil by so-called Gusanos (worms) against other Cubans supporting the Castro government. Normalization with Cuba would be a big step towards a new, less imperialistic era of relations between the US and Latin America.

OAS revokes 47-year-old suspension of Cuba

SAN PEDRO SULA, Honduras (CNN) -- The Organization of American States on Wednesday revoked a 1962 decision suspending Cuba from the multinational group.Patricia Rodas, the minister of foreign relations for Honduras, made the announcement at the conclusion of the two-day meeting of the 35 member nations.The United States, which led the push to suspend Cuba at the height of the Cold War, was represented at the meeting by Secretary of State Hillary Clinton.U.S. officials had no immediate comment.

Force me to take a break, will you?

Two of the biggest problems we developers have are (a) we are addicted to writing software and don't want to stop, and (b) we generally think we're pretty sharp people and can solve any problem that comes our way.

Why are these problems? Because the net result is that we tend to work too hard and too long without breaks, with a resulting reduction in code quality. This dynamic is particularly obvious when it comes to fixing a bug.

I don't know about you, but when something is demonstrably wrong with my code, I feel nothing short of a compulsion to find the cause of the bug and fix it. Now. Immediately.

But, of course, most bugs are not fixed immediately. Instead, I analyze my code, I run traces, I try this, I try that. My back starts to ache. My eyes get all squinty. I thirst, I hunger, but I cannot, will not stop until I get my code running....

BAD IDEA! If you can't fix your bug quickly, say within 15 minutes, there's a really good chance you won't find it for hours - if you don't take a break. The problem is that we can get too deep inside the code and replace perspective with urgency.

A much better idea is to take a break, get up, drink a big glass of water, move around, stretch, run around the block, take a nap - do anything to stop thinking directly about your problem. Instead let your brain take a break and think "for itself." There's a really good chance that the solution will just "pop" into your head by the time you sit yourself back down in front of your screen.

Of course, when you are desperately engaged with your code, it can be hard to muster the discipline to step away. In those situations, it's nice to have someone or something remind you that it's time for a break.

A few days ago, I got a note from Danilo, who said:

"I always read your personal blog, and i find it really interesting and full of useful tips. So today i would like to share an application that really helps my way to code and relax. I do take lots of breaks during coding, and I have found atool that is a perfect reminder to fight my instinct to code continuously for hours without interruptions. It is called WorkPause and you can download it at http://www.praven3.com/workpause."

I downloaded and installed the 30 day free trial and I find that I like it. It's very customizable. So now after 30 minutes of work, my screen locks and a 15 second countdown starts. I can't do anything with my laptop. My immediate reaction is anger.

"Hey! Why can't I type? What's going on?"

Then I remember why this has happened and I sit back, take a deep breath, and wait it out. After the 15 seconds, I can unlock it if I want. Or I can take a real break.

Either way, I am forced to pause. Thanks, Danilo. I am going to buy WorkPause. And I urge all the other developers reading this entry to give it a try. It will save you lots of time and make you feel better, too.

Thursday, May 28, 2009

Naming Conventions and Coding Standards, the Feuerstein Way

I am often asked about the naming conventions and coding standards that I use. My answer is usually a combination of muttering and vague statements and hand-waving.

That's because I have a confession: I don't have a single naming conventions and coding standards document that I use. Why not? Because I am a software developer! That is, I feel (well, I am) very busy, overwhelmed by deadlines. I don't feel like I have the time to stop and write down the few rules that I might actually follow more of less consistently. And it seems that a part of me is somewhat resistant to being accountable to a standard. Sound familiar?

Sigh...unfortunately (no, make that very fortunately), lots of other PL/SQL developers look to me for advice about how to "do things right." Ah, the pressure, the pressure!

Ah, the hypocrisy. That's what it really comes down to: I am a big hypocrite. I routinely violate just about every best practice I push on others. I sound high and mighty, but when I write code, I feel the same pull to do the quick and dirty.

So I've decided to take a few moments out of my various plane rides (I am now - when I started this document, anyway - flying from Manchester, UK, to Sweden to do a presentation to the Stockholm OUG, then a couple of days of customer visits in Stockholm and Milan, then two days of training for Oracle in Helsinki) to jot down what have become my de facto coding standards.

You see, I do have standards, and I even follow them, more or less. I just didn't want to take the time to write them down.

So that's what (finally) you'll find here. It's a combination of the naming conventions I follow, certain naming conventions with which I disagree, and a variety of other suggestions. I hope you find it useful. I'm not going to make much of an effort to justify my approach or explain away the inconsistencies. I'll just show you what I do and you can decide for yourself if you'd like to use my path as a model for your own journey.

I also hereby declare this to be a work in progress. So...

1. If you have disagreements with my approach, let me know. Perhaps I will agree with you, and change my document (you will get the credit).

2. If you have a suggestion for something to add to the document, send it to me. If I like it, I will put it into the document (and give you credit).

3. If you would like to offer your own set of naming conventions and coding standards to the world of PL/SQL developers, I will add it to the webpage (after you send it to me).

The URL for my standards document is:

www.ToadWorld.com/SF/standards

Thursday, May 21, 2009

Why can't Dick Cheney just sink back into his "undisclosed location"?

How strange. When Dick Cheney was the Vice President and, many argue, the main force behind the Bush Administration's policies, he was largely invisible, holed up in an "undisclosed location" and acting is an un-democractic a fashion as seemed possible.

Then his party loses the election, in large part precisely because his policies had wrecked more than one country in the last eight years, including ours.

You'd think he'd show a little humility in the face of this rejection, but no.

Instead, he seems to have taken it upon himself to hit the airwaves and share his grim, foreboding, scolding, destructive perspectives on the Obama Administration with the world.

Please, Dick, stop being a dick. Just shut up and go back to reaping the many financial rewards of steering billions in government contracts to companies in which you have a stake or some really good friends. Surely that should be enough for the closest thing to a Darth Vadur we have in this country today.

New blog on Quest Code Tester

As you may know, besides writing about and playing with PL/SQL, I have helped create an automated testing tool for PL/SQL code name Quest Code Tester for Oracle. If you have any intention of methodically and repeatedly testing the code you write, Code Tester is without doubt the best option you have for doing this, since it generates almost all of your test code. Click here for more information on the product.

The point of this entry, however, is to make sure you are aware of a new blog at ToadWorld.com focusing specifically on the topic of automated testing of Oracle code named "Real Automated Code Testing for Oracle." Here's the URL:

http://toadworld.com/Community/Blogs/tabid/67/BlogID/32/Default.aspx

I co-author this blog with Finn Ellebaek Nielsen, a Danish consultant who has been working with Oracle technology for a long time and is one of the most knowledgeable and advanced users of Code Tester I have run across to date.

You will find at this blog my introductory entry announcing the blog, plus Finn's first contribution. I hope you like it. Please leave a comment!

Regards, Steven

Saturday, May 02, 2009

Advice for dealing with ridiculous interview questions

I received an email last week with this question: "What is the maximum number of triggers that can be defined on a single table?"

My answer was: "Heck if I know. Check the Oracle documentation."

To which he replied: "Actually Oracle documentation does not mention anything about this. But this a favorite question asked during interviews for PL/SQL jobs in India."

A favorite interview question? How absurd! When I interview a person for a job as a PL/SQL developer (which I admit I have not done all that often). I am much more interested in:

Problem solving skills (MOST IMPORTANT): Can you think logically? If you are not well versed in symbolic logic (whether or not you know it as such), then it will be very difficult to solve your programming puzzles, debug your code, and understand other people's code.

Language familiarity (SECOND MOST IMPORTANT): Do you know about and have experience with critical, non-beginner features of the PL/SQL language, such as collections, FORALL, BULK COLLECT, AUTHID, autonomous transactions, etc.?

Awareness of limitations like the maximum number of triggers doesn't play any role in writing high quality code. In fact, one might argue that a brain filled with such arbitrary and irrelevant data is less likely to have a solid grasp of fundamentals and principles.

But if you really want to know the answer, the best way to check/prove the limit on the number of triggers you can define on a table is to test it with code (documentation can always be wrong, but the code is...the code...the "reality" within this particular chunk of cyberspace). Here's a script you can use to do just that:

SET SERVEROUTPUT ON

CREATE TABLE limits_table (n NUMBER)
/

DECLARE
n PLS_INTEGER := 1;
BEGIN
LOOP
EXECUTE IMMEDIATE 'create or replace trigger limits_table'
|| n ||
' before insert on limits_table for each row begin null; end;';
DBMS_OUTPUT.put_line ('Created ' || n || ' triggers!');
n := n + 1;
END LOOP;
END;
/

SELECT COUNT ( * )
FROM user_triggers
WHERE trigger_name LIKE 'LIMITS_TABLE%'
/

BEGIN
FOR rec IN (SELECT *
FROM user_triggers
WHERE trigger_name LIKE 'LIMITS_TABLE%')
LOOP
EXECUTE IMMEDIATE 'drop trigger ' || rec.trigger_name;
END LOOP;
END;
/

The result on Oracle Database 11g Release 1 was interesting: I ran this script while flying from Chicago down to Florida for Collaborate09. I started this script and many minutes later, I had to turn off the laptop since we were landing. By that time, over 5000 triggers had been created on the same table. Maybe I will run this later and let it run overnight, but really what's the point? No one is ever going to create that many triggers on a single table. Perhaps there is a lower, hard limit like 12 on Oracle Database 10g or earlier versions. Why don't you run this script on your database and let me know what you get?

To conclude, I suggest that if your interviewer asks you silly questions like this one, you should answer as follows:

"Why do you think it matters if I know this information? How will it help me be more successful on your team? And how do you know you've even got the right answer? Let's build a script to prove that the answer is right!"

Then whip out your laptop, throw together a script and show what a good problem solver you are. I guarantee you will have a much better shot at your job with this kind of answer.

Thursday, April 30, 2009

iPorn - are 100000000 "apps" really what we need now?

A friend of mine recently wrote to me:

"I just spent 2 hours on the phone with Apple to get Outlook to sync calendars with my iPhone (still not done but I hope successful); now that will get you confused and wondering about your sanity for wanting that sexy phone..."

I wrote this response to her (then sensibly chose not to send it - no need to be rude!):

Ooooooh, an IPorn....:-) Sorry, silly "typo" - it does seem to me, though, that Apple products are essentially techporn. So sexy and cool - feeding our narcissism and absorption with superficial applications of technology. And the sleek, minimalist, modernist lines? I am sick of them. Give me some "good, old-fashioned" ornamentation.

I am not really a Luddite, but I have become decidely (or, at least, relatively) low-tech in my view on life. I have a cell phone, but it is just a phone - no camera, no MP3 player. I don't want a PDA, I don't want to stick things into my ears, I don't want to wall myself off from the world around me, escaping into a private space of infinite playlists, twits, and life-as-iPhone-app.

"Wow, I can blow into an iPhone and make it sound like a flute."

That is incredible, don't get me wrong. But really who cares? Or to put it a better way: is this really what we should be caring about these days?

Capitalism is Dead, Long Live the iPhone!

Wednesday, April 22, 2009

An interview with yours truly

In case you simply can't get enough of Steven Feuerstein (no, I don't generally talk about myself in the third person and definitely never in the royal "we"), I invite you to check out this interview. I had an awful lot of fun answering the questions, and you might be entertained reading them.

Monday, April 20, 2009

Need to parse a delimited string? Use this package!

For several years now, anyone who was interested could download my "demo.zip" file, which consists of some 2000 files that I use in my trainings. This zip contains demonstration scripts, but also some generic utilities, like the parse package, which parsed a delimited string and returned a collection of the individual elements.

I recently enhanced the package to allow me to easily parse lists of lists, and even named lists of lists. Rather than just "bury it" inside the demo.zip, I thought I would tell you about it on my blog and give you a direct link to the code.

My objective is to reduce the possibility that any other PL/SQL developers will ever need or want to take the time to build their own parsing utility. Oracle PL/SQL should, of course, provide such a program for us. Sadly, it does not. Or, rather, it offers DBMS_UTILITY.COMMA_TO_TABLE, which is so eccentric and limited in its functionality that I find it embarrassing.

So....the parse package offers three different overloadings of the string_to_list function:

PACKAGE parse
IS
SUBTYPE maxvarchar2_t IS VARCHAR2 (32767);
TYPE items_tt IS TABLE OF maxvarchar2_t INDEX BY PLS_INTEGER;
TYPE nested_items_tt IS TABLE OF items_tt INDEX BY PLS_INTEGER;
TYPE named_nested_items_tt IS TABLE OF items_tt INDEX BY maxvarchar2_t;

FUNCTION string_to_list (string_in IN VARCHAR2, delim_in IN VARCHAR2)
RETURN items_tt;

FUNCTION string_to_list (string_in IN VARCHAR2
, outer_delim_in IN VARCHAR2
, inner_delim_in IN VARCHAR2
)
RETURN nested_items_tt;

FUNCTION string_to_list (string_in IN VARCHAR2
, outer_delim_in IN VARCHAR2
, name_delim_in IN VARCHAR2
, inner_delim_in IN VARCHAR2
)
RETURN named_nested_items_tt;
END parse;


Here are examples of using each one:

DECLARE
l_list parse.items_tt;
BEGIN
l_list := parse.string_to_list ('a,b,c,d', ',');
END;

DECLARE
l_list parse.nested_items_tt;
BEGIN
l_list := parse.string_to_list ('a,b,c,d|1,2,3,4', '|', ',');
END;

DECLARE
l_list parse.named_nested_items_tt;
BEGIN
l_list := parse.string_to_list ('letters:a,b,c,d|numbers:1,2,3,4', '|', ':', ',');
END;


The package also contains helper programs to display the contents of lists and compare collection records for equality. This latter function is utilized by Quest Code Tester to automatically test the package. The zip file contains a Code Tester export file (.qut) that you can import into Code Tester 1.8.3 or higher and verify the behavior of these programs. Currently, 1.8.3 is in beta and you can download it here.

I hope you find them useful! If, of course, you find a bug, please let me know so I can fix it. Even better, add the test case that reproduces the bug to the Code Tester test definition, then fix it yourself and send me all of the modified files.

That would be a really friendly thing to do. :-)

Sunday, April 19, 2009

What a strange life I lead

I am flying back to Chicago after a week in Europe (more or less). Monday and Tuesday in Istanbul, teaching a two-day course for Oracle. Zurich on Wednesday, Munich on Thursday, Frankfurt on Friday - presenting "Guaranteeing Application Success with the Toad Development Suite" for Quest Software, my employer.

So I am in seat 31B of an American Airlines 777. That means it is an exit row coach seat with a big open space in front of me. Even better, 31A is empty, so I have "spread out", my laptop is plugged into the power outlet, and I am very pleased with myself.

What? Pleased? Having to sit in an enormous metal cylinder hurtling through the air at 542 miles per hour?

Yes. I just realized that I am actually enjoying myself, because I am getting a lot of work done. Specifically, I am editing chapters for the fifth edition of Oracle PL/SQL Programming (available in September 2009, covering all features of Oracle PL/SQL through Oracle Database 11g Release 2). Earlier, I fixed several bugs in Quest Code Tester, revamped my Best of PL/SQL course materials in advance of my two day training on this topic in Salt Lake City next week.

On an eight hour flight back to Chicago, I probably manage to get about 5-6 hours of work accomplished. I am actually more productive on the plane than I am in my own home office. Why? Fewer distractions - most notably, I cannot check my email. So I can't respond to my emails. I can't go online and play my games of chess (at GameKnot.com, a really wonderful site if you happen to enjoy chess).

Given how much I travel on American Airlines (over 230,000 miles in the last two years), I can get upgrades pretty much whenever I want. But I also realized recently that as long as I can get one of these row 31 aisle seats (31B or 31H), I'd rather not upgrade. If I do, I am fed more often, it takes longer to eat, and I am more tempted to drink alcohol. I get less done and in no more comfortable an environment.

This is what my life has come to.

Well, I suppose it could be worse. :-)

Friday, March 27, 2009

A chat with some of my favorite people: the makers of PL/SQL

On Tuesday this past week (March 24), I had the honor of spending some time at Oracle headquarters with two guys from the PL/SQL Team -- Charles Wetherell, the brains behind the optimizing compiler, and my long-time sparring partner Bryn Llewellyn, the public face of the team. I make the pilgrimage to HQ every year or so to share PL/SQL stories, meeting different team members each time.

I talk about what I am doing with PL/SQL and what I see out there in the big world of PL/SQL developers. They talk about what they are doing with the language, and where they see it going. They usually even pretend to give consideration to my viewpoints! Aw, just joking. They are most respectful.

Now that Oracle Database 11g Release 2 is well into its Beta Program, most of the developers at Oracle HQ are hard at work on the end-game activities -- while some are already starting to plan the content of the next major release. It was great to have the chance to talk, strictly off the record, with Charles and Bryn about their ideas for the next big steps in PL/SQL, and to put forward some of mine.

And while I cannot go into any details, I can tell you that it is very clear that Oracle remains committed to supporting and enhancing the PL/SQL language in very substantial and, in at least one case, for me, quite surprising, ways.

I can also report that the team generally pays attention to input from their users (PL/SQL developers). Not only that, but the ideas proposed and voted on at ILovePLSQLAnd.net are treated with the utmost consideration. So please, please, please....if you have not yet visited this website, please do immediately and vote on the PL/SQL enhancements you feel would benefit you the most. When Oracle Database 11g Release 2 becomes generally available, I will update the list on ILovePLSQLAnd.net to show what has been implemented.

And, as always after a meeting with my friends on the PL/SQL team, I am reminded of two things:

1. How glad I am that we have people of their caliber (real computer scientists) planning out and implementing changes to PL/SQL - and not people of my caliber (that is, largely self-trained and quite amateurish by comparison).

2. That for many years to come, PL/SQL will continue to be a truly fine language in which to write software and implement business requirements.

So, happy coding, my fellow PL/SQL developers! Rest assured; our future selves will be more productive and ever more pleased with the language with which we spend so much of our time.

Thursday, March 05, 2009

Random reactions to Consumer Reports' Auto Issue

The mouths of real men don't water when they hear that the Sports Illustrated swimsuit issue is going to hit the newstands. That's adolescent stuff.

No, real men get all excited when they hear that Consumer Reports is about to publish its latest Auto Issue.

Consumers Union (publisher of Consumer Reports, consumerreports.org and many other invaluable resources) is an amazing organization. They exist for one reason only: to provide unbiased information to consumers to help them buy the highest quality, safest, most reliable product that best fits our needs. CU accepts no money from corporations, and certainly nothing from the companies that create the products CU evaluates. CU has no axe to grind, no reason to do anything but totally objectively test and analyze stuff, to help consumers get the best deal (not necessarily the lowest price).

Companies are even barred from using CU results in their own advertisements (usages like "Look, CU says our car is the best!" are quickly challenged in court - and won).

The Auto Issue offers detailed evaluations of hundreds of cars, both new and used. It is a must-read for anyone planning to buy a vehicle (not that there's much of that going on these days). I definitely do not plan to buy a new car. I hope to never again have to buy another car again, in my lifetime. At least not one that uses gasoline. But it is still fun to read.

Here are some things that caught my eye:
  • First the cover: at first glance, it looks like many other magazine covers. Lots of bright colors, very nicely laid out, etc. But there is something really different about it: right on the cover, next to the titles of articles and sections in the magazine, are the page numbers on which those articles appear! Page numbers? Radical! Usually, magazines hide page numbers so you have to leaf through the magazine to find the article of interest, coming across ads in the process. Since Consumer Reports has no ads, there is no reason to do that.
  • On page 15, CR offers "Automaker report cards", overall scores of brands (Honda, GM, Hyundai, etc.), rather than particular models. Honda is #1 with a score of 78. 95% of the vehicles tested are recommended by CR. Incredible. Second is Subaru, with a slightly lower score but 100% recommendations (disclosure: we are a Subaru family; my wife loves the all-wheel drive). Toyota is third. Out of the 45 brands shown on the page, four of the last (lowest scores) five brands are Ford, GM and Chrysler, in that order. And, horribly, CR could not recommend even a single Chrysler model. That is just downright embarrassing.
  • Oddly, the cover shows a Honda Fit as the "top value" for 2009, but in its "Top Picks" section, the Fit does not appear. CR must have some very interesting algorithms for making its choices.
So the bottom line is that if you are thinking of purchasing a car, you would be downright nuts to not consult the Auto Issue first.

Best thing to do is subscribe online: just $26 a year gives you full online, searchable access to all of CR's information. You will recoup that small investment many times over, both in terms of money and value for you and your family.

One final comment: I believe that CU has the potential to radically transform the distribution of power in our capitalist society. Today, corporations push products at us, convincing us to buy their stuff mostly through manipulation (ads), coercion (high pressure sales) and ignorance (most Americans are poorly educated, non-critical thinkers). With CU, you can ignore the ads and focus solely on the data; at a minimum, you can use CU to avoid purchasing unsafe, nasty, poorly-designed products.

I strongly urge you to join CU today, and help make it more effective, able to test more products and take more action to protect consumers. It will be the best investment you make in 2009. I guarantee it.

Thursday, February 26, 2009

Hard to blog through sadness....

It's been a long time since my last blog. A big part of my noted absence (ha!) from the blogosphere is that we are busily freezing code for release 1.8.3 of Quest Code Tester, plus I am building a thorough automated regression test for this tool. Wow, that takes a lot of time, even when I use Code Tester to help me test....Code Tester.

I wish, though, that that's all it was.

Instead, I have had a hard time returning to my blog because on February 2, a 23-year old friend of my son, who we have known since he was six, committed suicide by jumping from the top of his apartment building.

His suicide hit me hard, not only because I knew Jeff when he was little (we hadn't actually seen him for more than a few passing words and minutes for the last several years) and because his father was a good friend of ours. But also because it has been hard for my mind to not stray into thinking what it would have been like if Eli (same age, many similar general life circumstances)....

And then my mind shuts down in pain and horror, and I move away from those thoughts, leaving just emptiness, sadness, and little motivation to gush about the bright corners of the world.

Friday, January 23, 2009

Scrabble Oddities

Veva and I have been playing Scrabble nightly for a while, and tonite I was quite amazed at the pattern of my tiles. Of course, every game is unique and it is not uncommon for some strange coincidence to happen (for example, two night ago to choose who goes first, Veva chose a Q. "Wouldn't it be funny if you picked a U?" she said. I shook the bag, stuck in my hand, grabbed a tile, and announced without looking at the tile "A U!" and it was). But this was one remarkable game.

Here are my letters through all but the last few turns (? is a blank):

KGIEAOE
EEEOOOA
EEEAAAO
SEEAAIO
SSEAAOI
SYAAOOI
NEEOOAI
NPAAIOO
EEOAAI?
VEEAIO?
EEUUOI?

Out of all the consonants with more than one point, Veva had:

QXZJHHVYPWWDDDCBB

And I had

KGYPVCD

What an unbalanced game!

Oh and four nights ago, she picked an X to choose who goes first...and I chose a Y!

What are the odds of any of this happening? I find that actually to be a silly question. There are no odds. It's just stuff that happens.

Thursday, January 22, 2009

Ah the blatant cynicism of Israeli leadership

Check out this article (text at end of this post in case the article disappears):

http://news.yahoo.com/s/nm/20090122/ts_nm/us_palestinians_israel_swap_1

I find it somewhat astonishing....here's what struck me:

** One of the main justifications that Hamas used to resume its rocket attacks is that Israel violated the truce the whole way through by not relaxing the blockade and allowing Gazans economic freedom and growth so they could live normal lives.

** One of the main aims of the latest awful attack on Gaza was to decimate Hamas leadership.

** Then Israel unilaterally calls an end to its hostilities, clearly driven by the desire to not have an active war going on as Obama is inaugurated. Plus its attacks on civilians, civilian infrastructure and THE UNITED NATIONS became so blatant and revolting that even Israel could not withstand the international condemnation.

** Now they refuse to relax the blockade for anything but minimal flow of humanitarian aid (all agencies complain that they cannot get what is needed into the strip) until Shalit is released!

** And it looks like they are agreeing to release 450 "senior militants" of Hamas, previously they had balked at this.

So...they find yet other ways to continue to collectively punish all Palestinians in Gaza, which strengthens Hamas and weakens Abbas. And they will now send back into Gaza a previous generation of leadership of Hamas, that will now step forth and become the NEW generation of leaders.

Isn't this just insane? Is there any reason to really honestly believe that the Israeli government and military is interested in anything but keeping this conflict going?

After spending years (from 2001 to 2007) working obsessively on this issue (Not In My Name, Junity, Refuser Solidarity Network), I have come to the following conclusion:

If you want to try to predict what will happen next in the Israeli-Palestinian crisis, then just imagine the worst possible scenario. That is almost certainly what will unfold. So here is my prediction:

Israel wants to make life so horrible for Palestinians in the Gaza Strip (effective imprisonment through military blockade and deprivation of 1.5 million people) and West Bank (effective imprisonment through the "Security Wall" and endless stealing of their land through "settlement" expansion) that some small, but growing number of Israeli Palestinian citizens will choose (feel driven to) violence (suicide bombings) to protest.

Then Israeli Jews can claim that they tried everything, but even their own fellow citizens who are Arabs will not let them live in peace. And then the ethnic cleansing of Palestinians from within the current boundaries of Israel may commence - thereby ensuring the "Jewish democratic majority" (ah, the oxymoronsn!) of Israel.

Well, I sure am ranting today, so I will finish it off with this:

I believe that the greatest existential threat to the State of Israel comes from the Ameerican Jewish community, whose leaders and organized constituents treat Israel as a kind of Golden Calf, idolizing it and serving as apologists for it, no matter how awful its actions.

And this blind support for Israel will allow it to dig itself into a deeper and deeper hole, until it becomes a true pariah state. Hey, but at least it will be "Jewish."

TEXT OF YAHOO ARTICLE

After Gaza war, Israel sees Hamas prisoner swap

By Dan Williams

JERUSALEM (Reuters) After battering Hamas in the Gaza Strip, Israel now hopes to push through a prisoner swap to retrieve a soldier held by the Palestinians since 2006, Israeli officials said Thursday.

They said Israel was conditioning any lifting of its Gaza blockade on immediate progress in Egyptian efforts to free Gilad Shalit, and would be willing to relax its objections to a list of Palestinian prisoners which Hamas wants released in exchange.

The Islamists demand amnesty for 1,400 inmates, including 450 senior militants. Israel long balked over the latter group, saying their release would sap Palestinian President Mahmoud Abbas's peace strategies by bolstering rival hardliners.

But after its 22-day offensive against the Hamas administration in Gaza, Israel appears to be more flexible.

"There is a sense that we can afford to relax our criteria on the prisoner release, as any benefit to Hamas would be more than offset by the damage it sustained in Gaza," said one Israeli security official.

The official said Prime Minister Ehud Olmert wanted to clinch a deal before he is replaced in a February 10 election, though it was not clear whether the Israeli security cabinet could approve all of the names on the Hamas release roster.

Addressing reporters Thursday, Olmert said: "I believe that the military operation in Gaza created levers that can help in speeding the return of Gilad Shalit ... I will not elaborate."

Security cabinet minister Binyamin Ben-Eliezer told Israel's Army Radio that new discussions on a possible prisoner swap had not yet taken place. He added: "I am among those who would be willing to pay the highest price for Gilad's return."

EGYPTIAN MEDIATION

A top Israeli defense official, Amos Gilad, travelled to Cairo Thursday to discuss ways of consolidating a January 18 truce which ended the Gaza offensive. Security sources said Gilad would raise Shalit in his talks with the Egyptians.

The Gaza offensive killed 1,300 Palestinians, many of them civilians, and wrecked the impoverished strip's infrastructure.

Western powers have since called for Gaza's borders with Israel and Egypt to be more open, while supporting Israel's demand that Palestinian cross-border rocket salvoes cease and that Hamas arms-smuggling from the Egyptian Sinai be choked off.

Israel stepped up the crippling Gaza embargo after Hamas, which won a 2006 Palestinian election, seized control of the territory in a brief war with Abbas's forces the following year.

The Israelis rule out restoring normal operations at Gaza's border crossings unless there is a deal on Shalit, an army conscript seized by Hamas-led gunmen in a June 2006 border raid.

"I'll tell you this here, in plain Hebrew: apart from (the passage of) humanitarian goods, there will be no crossings (opened) without Gilad Shalit," Ben-Eliezer said.

(Additional reporting by Nidal al-Mughrabi; editing by Andrew Roche)

Wednesday, January 07, 2009

Entering the new year with a bang

First, happy new year to all my readers (no matter how few you may be). I hope the holidays were good to you.

As you no doubt are aware, Israel has once again attacked with missiles, bombs, artillery, tanks and ground troops one of the most densely populated areas in the world: the Gaza Strip.

Ostensibly, this was done to stop the rocket attacks from Gaza. Only the most apologistic of Israel's supporters really believe this. These attacks have been going on sporadically for years, with very few casualties (though every single death is awful and anyone authorizing the firing of those rockets against civilian targets should be considered a war criminal and brought to the Hague for a trial).

Now with Israel's latest application of the fifth most powerful military force in the world, not only have over 100 Palestinian women and children been killed, but more Israels have been killed in the last ten days than in the several years previous.

And does anyone really think this will stop the rocket attacks? I don't think there is a chance of that happening as long as Israel continues to treat Gaza as the world's largest open air prison, controlling (and greatly restricting) access to food, medical supplies, energy, etc.

Anyway, most seasoned observers think this invasion has more to do with upcoming Israeli elections, and the need for Labor (whose head is now the Minister of Defense - Ehud Barak, who is in my mind another war criminal who should be sent to the Hague) to show that it can be as tough on the Palestinians as the most right-wing Likudnik.

I am sure that is at least partly true. I believe, however, that the invasion and destruction of Gaza is first and foremost intended as a message for incoming President Obama. Israel (its civilian and military leaders, in any case) is showing that it controls events when it comes its own sphere of dominance. It is saying to Obama "We decide what happens around here, not you."

It is, really, quite a big and obnoxious "f#%k you" from Israel to Obama.

Think about it. With this invasion, Israel has forced a change in the agenda for the incoming President. Obama must (and intended to) focus on the economy and spend political capital immediately to get a recovery plan in place (one that helps more than financiers).

Yet now he must address the violence in Gaza, and what will he do? Is he going to do or say anything that is critical of Israel, thereby risking a firestorm of criticism in his first days in office? The Israel apologists will go ballistic: "See, we told you! He is no friend of Israel." No way. He is going to eat it, all of it. He is going to acquiesce to Israel's terrible and terrifying destruction and killing of innocents. He will join the chorus blaming Hamas entirely. And in doing so, he will send a clear message to the Arab world: expect nothing different from me when it comes to Israel.

Leaving Israel (its screwed-up, "kill now and kill later" leadership, in any case) to go further down the path to stoking flames of hatred, ensuring war, and diminishing its chances of survival as a Jewish state.

Poor Israel. Just when it most needs a real friend, it will force that potential friend to become merely another servant to the cause of Jewish extremists.