Written on Saturday, October 27:
Here I am in seat 31C of an old Air India 747, making my way north to Paris and from there to Chicago. In some ten hours I will be home, at long last, after two weeks away - one in Europe and one in India.
For the last six days, I traveled to four different cities in India - Delhi, Bangalore, Chennai and Mumbai (Bombay) - and in each one, my friends at Quest Software India (led by Krishnan Thyagarajan, a very tall, very smart and very experienced software industry executive), put together a busy agenda that had me exhausted by the end of each day. My time in India was also just about the most successful, gratifying and exciting country tour I have ever experienced.
I'd been told for several years that there were lots of PL/SQL developers over in India who would love to come hear me speak. And, of course, I also knew that India was a country in transition - population growing rapidly, the high tech sector exploding even faster. Well, this was one case in which knowing intellectually about something and experiencing it personally are two very different things.
And before I say anything else about my time in India, I need to say this: I saw very little of it, and most of what I saw was from the window of a moving car. Of those six days, I spent a total of four hours as a tourist, being driven around Delhi, seeing some interesting tombs, mosques, monuments, etc. The whole rest of the time, I was either (a) presenting on PL/SQL best practices and Quest Code Tester to enthused groups of developers; (b) driving in totally insane traffic between those presentations; (c) sleeping in very nice hotels (but having time to nothing but sleep in them, sadly); (d) going to and from airports; and (e) flying around in planes.
I am not complaining, though. I told Krish that I was not coming to India to be a tourist. I wanted him to make the most of my short time there, and he did just that. In the five work days, I spoke directly to some 2000 developers! My audiences ranged from 10 (which was also one of the best in terms of discussions) to 400, at my public seminar in Mumbai just last night. I usually did three or four presentations each day (and I must tell you: I do not want to even think about presenting on best practices for quite a while).
Even with that very limited view of India, I could write for pages and pages about what I experienced. Sadly, I have many other things to do. So instead I will offer a scattering of impressions and highlights.
PL/SQL Ascending!
PL/SQL is an interesting language and the people who write PL/SQL code make up a very unusual programming culture. It is relatively small - perhaps a couple million developers. And PL/SQL developer are generally more focused on getting the job done than on debating the pros and cons of methodologies like Extreme Programming and Test-Driven Development. Yet there is a broad and deep appreciation of the language, from its simplicity and ease of use to its powerful methods of accessing the Oracle database.
In the US and Europe, it is also a language that is seeing very slow growth, in terms of numbers of new PL/SQL developers. It would be fairly typical for me to present to a group of 200 at an Oracle User Group event and find that only 10 people have started using PL/SQL in the last year or two.
In India, the numbers are starkly different. In a group of similar size, easily 50-75 people will be new to PL/SQL! That really warms my heart and gives me hope of ever blossoming book sales (:-) What can I say? I still need to food on the table...). And they are so young! One of my standard jokes goes like this:
"The programs you write today are likely going to still be running 20 years from now. How many of you have children under the age of 15?"
And in the US crowds of 200, perhaps 1/3 will raise their hands.
"Then there is good chance," I continue, "that some of those kids will grow up to be programmers. And maybe, just maybe, your daughter or son will end up maintaining your code. So you have two choices: either never put your name in your code or write code that you are proud of, that will not cause nightmares for little Johnny or Sally."
That gets a pretty good laugh in most of my presentations (so yes, I admit it: I have a standard repertoire of jokes. I am a "stand up comedi-programmer."). But in India, when I ask "How many of you have kids under the age of 15?" they all stare back at me unmoving. Heck, I think some of them are 15 years old!
In India, PL/SQL developers are young, they are energetic, they are enthusiastic, they are eager to learn. It was a real joy to spend time with so many of you in this past week, and I very much look forward to my next trip!
Rock Star!
I travel around the US and Europe mostly, doing trainings and presentations. And I always remind the people who are organizing the events that while it seems like it is easy to get people to come attend my events in respectable numbers, if you want to get lots of people to show up, you have at least pretend that the event is a BIG DEAL, really super special, etc. Otherwise, why would anyone else think it was going to be a big-deal, must-attend event?
Well, Quest India really took this advice to heart. Besides the on-site presentations at something like 15 companies, Quest organized two public events, one in Bangalore and the other in Mumbai. Hundreds of people attended each one and they were greeted by quite a show. I expect to post some vide clips on YouTube soon - you will not believe your eyes. A full stage backdrop set up, with an introductory video with pounding music...and then the phony fog hisses across the stage and as I step through the door in the center, confetti explodes into the air all around me! I have never experienced anything like it (and, honestly, I am not sure how much I want to :-) It was very entertaining, but I sure did a little bit weird).
After that rousing introduction, though, I got right back down to talking about PL/SQL, running code and so on. But for those few moments, I could pretend I was a "rock star."
.... to be continued ....
Monday, October 29, 2007
Sunday, October 28, 2007
October Travelogue #2: I arrive in India!
[Note: now I am home, after flying for over 17 hours yesterday. Ugh. So nice to sleep in my own bed and hug my wife...the following was written on Tuesday, Oct 22....more to come...including photos]
Continuing my travelogue, I left Germany on Saturday morning but instead of heading home (which I would really loved to have done, given the small amount of time I have had lately to spend with my wife, Veva), I got onto a Qatar Airways Airbus 330 and headed to Doha, Qatar. This is a very popular transfer point to India (I assume Qatar is offering not only many flights but also low fares), and as a result I visited the Middle East for the first time ever.
In other words, even though I have been very active on Middle East peace issues for the last five years or so (with a focus on supporting Israeli soldiers who refuse to enforce the occupation of the West Bank), even though I was raised in a typical Conservative Jewish home on Long Island, I have never visited Israel nor any other country in that region.
And this wasn't much of a visit in Doha or the Middle East - I never left the departures area. Still, when I came down off the airplane, it felt a bit special and different to stand on this ground. I stood there in the heat and looked around, eager to make the moment last - and immediately an airlines employee began to urge me to get on the bus. Take it easy, there!
Then a long bus ride to the terminal....looking out the window, I was struck by how much the area directly outside the bus reminded me of Chicago in the winter, after a light snow. Of course, in this case, it was sand and not snow, but in the darkness, they looked much the same!
Entering the terminal, I saw that all the signs were in English and Arabic -- and was immediately struck at how beautiful Arabic lettering is. English seems very boxy and boring, all business, compared to the flowing curves of Arabic (the same is true for Sanskrit - beautiful, as I glance at the signs on the seat in front of my on my current plane ride from Delhi to Bangalore).
And a few hours later off to Delhi! I arrived in Delhi at 6 AM on Sunday and my first impressions were that this is an old airport in major need of upgrading. Which, apparently, is how the airport authority feels about it as well, since they are in the midst of a major renovation project. Then whisked away by my arranged driver for the ride to the Le Meridien hotel....I am not sure if he was just being friendly or was hoping for a better tip, but he decided to show me the sights all the way, pointing out embassies, big government buildings, etc., usually creeping along at about 3 MPH to provide his brief explanations in halting English. And all I, rather exhausted on 1 hour of sleep, wanted to do was to get to the hotel....
I finally arrived and found that the Le Meridien was a very beautiful and fancy hotel - the sort that makes me a bit nervous, because they are so well appointed. I'm just not much of a luxury sort of guy. My room was very modern, with a console for all electronic operations right at my fingertips by the bed.
And then after just a couple hours' in that beautiful room, off I went for a half day of a tour through Delhi, organized on my behalf by Quest Software India. I saw the Presidential Palace, the Parliament building, India Gate (on which are carved the names of all soldiers who have died for their nation, I believe since World War II - not sure about that. I mostly looked at it and hoped that they would not run out of space), several tombs and adjoining mosques, the Red Fort and more. It was a hot sunny day and I got worn down rather quickly. My driver, Amar Singh, was very enthusiastic and knowledgeable, though I would have enjoyed it more if he was a bit more fluent in English; discussions were rather difficult. Sadly for me, October 21 is a national holiday, so all the museums were closed - a big disappointment.
Delhi is an enormous, busy place. Usually, traffic is an utter horror. Sunday, it wasn't as bad as usual, because of the holiday, but it also made some areas and streets even more crowded, as they prepared to celebrate. I was intrigued by the three-wheeled, very small taxi vehicles that zoomed in and out of every available open space (when, that is, a motorcycle hadn't beaten them to that space). Everyone honks at everyone else, but without any real anger so far as I could tell. And, yes, the contrast between wealth (such as my hotel) and poverty (the beggars lining almost every street, knocking at the window of my car whenever we stopped at a light, accosting me as I walked around the India Gate and other places) is downright depressing. Of course, this contrast also exists in the US - and it is getting worse with every passing year, under the grand leadership of "W". Yet it is a bit more "in your face" in India, unavoidable, ever-present. I guess in the US, we have compartmentalized and hidden extreme poverty from the eyes and thoughts of every day middle class existence. And I am not saying that is a good thing, but there it is.
One of my favorite moments in Delhi was standing at the window of hotel and watching hawks circling around on the air currents, right outside my window (which was, unfortunately, quite dirty). I also saw flocks of noisy, green parrots swooping about.
The roads are full of three-wheeled, 2 stroke engine mini-taxis (they are all green in Delhi, yellow in Bangalore and their official name is "auto rickshaw"). They jam themselves in between cars. And then the endless stream of motorcycles fit into every space between the mini-taxis. So there is absolutely no room to maneuver, but everyone maneuvers endlessly.
Well, that was it. A very short visit to Delhi, a very constrained visit to Delhi. My friends here at Quest did not think it would be a good idea for me to just go out and walk around (my usual, preferred method of visiting a new city). So I was driven around, I saw the very typical tourist sites, I bought my wife a gift, and then back to the hotel.
Because by 3 PM, I was mostly sitting in the car and falling asleep, and when I was awake, I was thinking about how I would have to wake up before 5 AM to catch my flight to Bangalore.
And that is the flight I am on now....I have two days and nights in Bangalore, the highlight of which will be a public seminar on Tuesday evening to which almost 900 developers have registered (!!). So I will write another entry in my blog after we see how that goes.
Continuing my travelogue, I left Germany on Saturday morning but instead of heading home (which I would really loved to have done, given the small amount of time I have had lately to spend with my wife, Veva), I got onto a Qatar Airways Airbus 330 and headed to Doha, Qatar. This is a very popular transfer point to India (I assume Qatar is offering not only many flights but also low fares), and as a result I visited the Middle East for the first time ever.
In other words, even though I have been very active on Middle East peace issues for the last five years or so (with a focus on supporting Israeli soldiers who refuse to enforce the occupation of the West Bank), even though I was raised in a typical Conservative Jewish home on Long Island, I have never visited Israel nor any other country in that region.
And this wasn't much of a visit in Doha or the Middle East - I never left the departures area. Still, when I came down off the airplane, it felt a bit special and different to stand on this ground. I stood there in the heat and looked around, eager to make the moment last - and immediately an airlines employee began to urge me to get on the bus. Take it easy, there!
Then a long bus ride to the terminal....looking out the window, I was struck by how much the area directly outside the bus reminded me of Chicago in the winter, after a light snow. Of course, in this case, it was sand and not snow, but in the darkness, they looked much the same!
Entering the terminal, I saw that all the signs were in English and Arabic -- and was immediately struck at how beautiful Arabic lettering is. English seems very boxy and boring, all business, compared to the flowing curves of Arabic (the same is true for Sanskrit - beautiful, as I glance at the signs on the seat in front of my on my current plane ride from Delhi to Bangalore).
And a few hours later off to Delhi! I arrived in Delhi at 6 AM on Sunday and my first impressions were that this is an old airport in major need of upgrading. Which, apparently, is how the airport authority feels about it as well, since they are in the midst of a major renovation project. Then whisked away by my arranged driver for the ride to the Le Meridien hotel....I am not sure if he was just being friendly or was hoping for a better tip, but he decided to show me the sights all the way, pointing out embassies, big government buildings, etc., usually creeping along at about 3 MPH to provide his brief explanations in halting English. And all I, rather exhausted on 1 hour of sleep, wanted to do was to get to the hotel....
I finally arrived and found that the Le Meridien was a very beautiful and fancy hotel - the sort that makes me a bit nervous, because they are so well appointed. I'm just not much of a luxury sort of guy. My room was very modern, with a console for all electronic operations right at my fingertips by the bed.
And then after just a couple hours' in that beautiful room, off I went for a half day of a tour through Delhi, organized on my behalf by Quest Software India. I saw the Presidential Palace, the Parliament building, India Gate (on which are carved the names of all soldiers who have died for their nation, I believe since World War II - not sure about that. I mostly looked at it and hoped that they would not run out of space), several tombs and adjoining mosques, the Red Fort and more. It was a hot sunny day and I got worn down rather quickly. My driver, Amar Singh, was very enthusiastic and knowledgeable, though I would have enjoyed it more if he was a bit more fluent in English; discussions were rather difficult. Sadly for me, October 21 is a national holiday, so all the museums were closed - a big disappointment.
Delhi is an enormous, busy place. Usually, traffic is an utter horror. Sunday, it wasn't as bad as usual, because of the holiday, but it also made some areas and streets even more crowded, as they prepared to celebrate. I was intrigued by the three-wheeled, very small taxi vehicles that zoomed in and out of every available open space (when, that is, a motorcycle hadn't beaten them to that space). Everyone honks at everyone else, but without any real anger so far as I could tell. And, yes, the contrast between wealth (such as my hotel) and poverty (the beggars lining almost every street, knocking at the window of my car whenever we stopped at a light, accosting me as I walked around the India Gate and other places) is downright depressing. Of course, this contrast also exists in the US - and it is getting worse with every passing year, under the grand leadership of "W". Yet it is a bit more "in your face" in India, unavoidable, ever-present. I guess in the US, we have compartmentalized and hidden extreme poverty from the eyes and thoughts of every day middle class existence. And I am not saying that is a good thing, but there it is.
One of my favorite moments in Delhi was standing at the window of hotel and watching hawks circling around on the air currents, right outside my window (which was, unfortunately, quite dirty). I also saw flocks of noisy, green parrots swooping about.
The roads are full of three-wheeled, 2 stroke engine mini-taxis (they are all green in Delhi, yellow in Bangalore and their official name is "auto rickshaw"). They jam themselves in between cars. And then the endless stream of motorcycles fit into every space between the mini-taxis. So there is absolutely no room to maneuver, but everyone maneuvers endlessly.
Well, that was it. A very short visit to Delhi, a very constrained visit to Delhi. My friends here at Quest did not think it would be a good idea for me to just go out and walk around (my usual, preferred method of visiting a new city). So I was driven around, I saw the very typical tourist sites, I bought my wife a gift, and then back to the hotel.
Because by 3 PM, I was mostly sitting in the car and falling asleep, and when I was awake, I was thinking about how I would have to wake up before 5 AM to catch my flight to Bangalore.
And that is the flight I am on now....I have two days and nights in Bangalore, the highlight of which will be a public seminar on Tuesday evening to which almost 900 developers have registered (!!). So I will write another entry in my blog after we see how that goes.
Looking forward to years of sub-standard flying in the US....
Reading through the Herald Tribune (NY Times' international daily - I always look for it when in Europe because it has a daily chess puzzle), I came across this item:
Strapped US airlines fail to upgrade fleets
"In essence, a new generation of jetliners - bigger, more comfortable, more fuel-efficient - is largely bypassing U.S. airlines and their customers."
Instead, they are being purchased by European, Asian and Middle Eastern airlines. U.S. airlines have $28 billion in the bank (cash) but prefer to use it to pay down debt, rather than upgrade their fleets. We are assured that the old planes (flying for 20, 25, even 35 years) are perfectly safe. Oh, goodie.
Flying back from a two weeks in Europe and India, it just struck me as another example of how our empire is in decline. We, the citizens of the US, supposedly among the most powerful and affluent people in the world, live in a country whose bridges are falling apart, whose mass transit systems are in decay and crisis, millions of people are being foreclosed out of their homes, and we are shuttled around the country in dilapidated, dirty airplanes. Oh, and we, our government, somehow can't afford to even make sure that our children receive health care (thanks, George W, for your brave dedication to fiscal discipline by vetoing legislative that would help children instead of your cronies in Halliburton and the despotic Saudi Arabia).
Meanwhile, the very rich among us grow unimaginably richer, fly around in their own private jets, build bigger walls to stay cleanly separated from the rabble.
I know, I know - what a pathetic bleeding heart I am! Well, I'd rather my heart bleeds than is a stone, looking down from on high and urging everyone to "trust the market."
Strapped US airlines fail to upgrade fleets
"In essence, a new generation of jetliners - bigger, more comfortable, more fuel-efficient - is largely bypassing U.S. airlines and their customers."
Instead, they are being purchased by European, Asian and Middle Eastern airlines. U.S. airlines have $28 billion in the bank (cash) but prefer to use it to pay down debt, rather than upgrade their fleets. We are assured that the old planes (flying for 20, 25, even 35 years) are perfectly safe. Oh, goodie.
Flying back from a two weeks in Europe and India, it just struck me as another example of how our empire is in decline. We, the citizens of the US, supposedly among the most powerful and affluent people in the world, live in a country whose bridges are falling apart, whose mass transit systems are in decay and crisis, millions of people are being foreclosed out of their homes, and we are shuttled around the country in dilapidated, dirty airplanes. Oh, and we, our government, somehow can't afford to even make sure that our children receive health care (thanks, George W, for your brave dedication to fiscal discipline by vetoing legislative that would help children instead of your cronies in Halliburton and the despotic Saudi Arabia).
Meanwhile, the very rich among us grow unimaginably richer, fly around in their own private jets, build bigger walls to stay cleanly separated from the rabble.
I know, I know - what a pathetic bleeding heart I am! Well, I'd rather my heart bleeds than is a stone, looking down from on high and urging everyone to "trust the market."
Monday, October 22, 2007
October Travelogue #1: A week in Europe
Hello there from Chennai, India! I am halfway through my first ever visit to India, and I am simultaneously exhausted and exhilarated by the experience. What a country, and what an almost-overwhelming population of PL/SQL Developers! In the past three days, I have spoken directly to well over 1,000 programmers. It has been an absolute morning-to-night whirlwind of activity organized by my very capable friends at QSFT India: Krishnan, Selza, Berta and Christina. I will write more about my experiences in the coming week or so, but for now, I am going to post what I wrote about last week's trip through Europe:
Quest Software organized a series of seminars and Toad Conferences in Norway, the Netherlands and Germany. I volunteered to talk about my favorite topics: best practices and testing.
I started off with a visit to one of my favorite countries, Norway. I like it so much, because they are just so darned civilized. Norway, in case you didn't realize it, is a major oil exporter, extracting crude from the North Sea. As a result, the country has lots of money, but they use it wisely, compared to so many other nations.
What do I mean by "wise"? Rather than allow oil wealth to concentrate into the hands of a very few people, Norway invests in social services to provide a high quality of life for everyone. It also recognizes that oil revenue will not last forever. To address this issue, Norway has established a national pension fund that today tops $350B in value. More than that, the fund operates in a totally transparent manner, publicly listing all of its investments (which are widely and shallowly - no more than 1% investment in any one company - spread across the world) and also explaining its investment strategy to its citizens.
That's smart, that's democratic, that's a model for other countries to follow. Thanks, Norway, for leading the way!
Then on to another favorite nation and city - Netherlands and Amsterdam. I always greatly enjoy coming to the Netherlands for several reasons:
* Amsterdam was my first international destination, years ago, when I participated in a European Oracle User Group. Amsterdam was in the midst of a wonderful spring, the weather was great, everything was subtly and not-so-subtly (think: coffeeshops) different. I had a wonderful time!
* The PL/SQL community in the Netherlands is just about the most advanced I have ever encountered. Many developers are very interested in writing high quality code, in exploring different ways of creatively using PL/SQL, in engaging with PL/SQL as more than just a way of getting their jobs done.
* My good friend, Patrick Barel (PL/SQL developer, Delphi developer and about-to-be newly hired AMIS consultant), has welcomed me into his family and so whenever I can, I stay with him and renew my friendships with Quinty, Kayleigh, Mitchell and their mom, Dana. It is so nice to avoid the hotels and stay in a real home with friends!
Now, on this trip, I made a couple of too-short presentations at the Toad conference, which was held at Ajax Stadium. Ajax is the Amsterdam football team. The stadium is enormous, and while we of course presented in the conference center, we all got together for a group photo in the stadium itself. That was different. At the end of the conference, I participated for the first time in the SQL-PL/SQL quiz by Lucas Jellema and Alex Nuijten of AMIS Consulting. That was hilarious and very challenging, but I am proud to say that even though I had no idea about many of their quiz topics (centered as they were in SQL and DBA features), I was able to use logic to narrow down my choices. I ended up 1 out of 14 answers correct, and was quite happy with that.
I learned one very important lesson from this conference: never agree to speak for less than one hour in a session. I had just 45 minutes each for my talks, and it was simply not enough. From now on, I draw the line: give me at least one hour - preferably two - or leave me off the agenda!
But the Toad conference was only the first part of my day. In the evening, Ordina Consulting held its second public program featuring yours truly as its speaker. They did this the last time I was in the Netherlands (back in March) and we had a really fun time; over 200 enthusatic, easily amused people (they laughed at every one of my jokes) showed up to hear my thoughts about best practices. In October, we again had close to 200 people in the MediaPark, a futuristic, high-tech conference center in Utrecht. Once again, a very attentive and responsive audience and, once again, Ordina did a bang-up job organizing a really fine program. My warm thanks to Jenny and Frank!
What next? Ah, yes! Germany: Cologne, Berlin and finally Mannheim (near Frankfurt). I took a 6:30 AM high speed train from Amsterdam Central Station to Cologne. Very nice form of transportation. I then stepped out of the Cologne station to see the incredible Cathedral, a gothic wonder with a very tall tower (which I was to climb in a few hours). I headed over to the Hilton and a little while later performed for the "masses." Actually, the audience size was a bit on the small size, something that repeated over the next two days as well; it seems that the Toad events attracted many more DBAs than developers; I am not sure why. They were also much quieter and more serious than the Dutch, partly I believe due to a bit more of a language barrier. Yet some of the attendees gave me great ideas for new features to add to Quest Code Tester.
With the afternoon free, I went to the Cathedral and climbed the 500 steps up through a very confining circular stone stairwell. Good exercise, a great view, and a marvel of gothic architecture. Besides that, the highlight of my Cologne visit were the excellent pastries and numerous Snickers bars put out over the break. Photos to come later....
From there, to Berlin - my first time ever to this historic city. Unfortunately, time was very short and besides giving my presentations, I only had time for a short walk in the neighborhood of the Crowne Plaza hotel. Photos to come later....
And then Mannheim. Following the pattern of this trip, we traveled into the evening, then rented a big Mercedes van to drive the hour to Mannheim and the Dorint hotel, which was a major disappointment. To my and others' utter amazement, this conference center hotel only offered dial-up Internet access in the rooms; I had to sit out by the elevator to find a wireless connection, thereby sharing my conversation with my wife via Skype with anyone going in and out of the elevators. To plug in my laptop at the desk, I had to unplug the lamp. No fitness center. And to top all that off, at 7 AM construction workers started their day right outside my window, making more than enough noise to ensure that I did not need an alarm to wake up in time. Very irritating.
All in all, though, a fine trip to Germany. Many thanks to Daniela for organizing the events so professionally. And it was great to see again my friends Johannes and Thomas, two fine Quest SCs.
Quest Software organized a series of seminars and Toad Conferences in Norway, the Netherlands and Germany. I volunteered to talk about my favorite topics: best practices and testing.
I started off with a visit to one of my favorite countries, Norway. I like it so much, because they are just so darned civilized. Norway, in case you didn't realize it, is a major oil exporter, extracting crude from the North Sea. As a result, the country has lots of money, but they use it wisely, compared to so many other nations.
What do I mean by "wise"? Rather than allow oil wealth to concentrate into the hands of a very few people, Norway invests in social services to provide a high quality of life for everyone. It also recognizes that oil revenue will not last forever. To address this issue, Norway has established a national pension fund that today tops $350B in value. More than that, the fund operates in a totally transparent manner, publicly listing all of its investments (which are widely and shallowly - no more than 1% investment in any one company - spread across the world) and also explaining its investment strategy to its citizens.
That's smart, that's democratic, that's a model for other countries to follow. Thanks, Norway, for leading the way!
Then on to another favorite nation and city - Netherlands and Amsterdam. I always greatly enjoy coming to the Netherlands for several reasons:
* Amsterdam was my first international destination, years ago, when I participated in a European Oracle User Group. Amsterdam was in the midst of a wonderful spring, the weather was great, everything was subtly and not-so-subtly (think: coffeeshops) different. I had a wonderful time!
* The PL/SQL community in the Netherlands is just about the most advanced I have ever encountered. Many developers are very interested in writing high quality code, in exploring different ways of creatively using PL/SQL, in engaging with PL/SQL as more than just a way of getting their jobs done.
* My good friend, Patrick Barel (PL/SQL developer, Delphi developer and about-to-be newly hired AMIS consultant), has welcomed me into his family and so whenever I can, I stay with him and renew my friendships with Quinty, Kayleigh, Mitchell and their mom, Dana. It is so nice to avoid the hotels and stay in a real home with friends!
Now, on this trip, I made a couple of too-short presentations at the Toad conference, which was held at Ajax Stadium. Ajax is the Amsterdam football team. The stadium is enormous, and while we of course presented in the conference center, we all got together for a group photo in the stadium itself. That was different. At the end of the conference, I participated for the first time in the SQL-PL/SQL quiz by Lucas Jellema and Alex Nuijten of AMIS Consulting. That was hilarious and very challenging, but I am proud to say that even though I had no idea about many of their quiz topics (centered as they were in SQL and DBA features), I was able to use logic to narrow down my choices. I ended up 1 out of 14 answers correct, and was quite happy with that.
I learned one very important lesson from this conference: never agree to speak for less than one hour in a session. I had just 45 minutes each for my talks, and it was simply not enough. From now on, I draw the line: give me at least one hour - preferably two - or leave me off the agenda!
But the Toad conference was only the first part of my day. In the evening, Ordina Consulting held its second public program featuring yours truly as its speaker. They did this the last time I was in the Netherlands (back in March) and we had a really fun time; over 200 enthusatic, easily amused people (they laughed at every one of my jokes) showed up to hear my thoughts about best practices. In October, we again had close to 200 people in the MediaPark, a futuristic, high-tech conference center in Utrecht. Once again, a very attentive and responsive audience and, once again, Ordina did a bang-up job organizing a really fine program. My warm thanks to Jenny and Frank!
What next? Ah, yes! Germany: Cologne, Berlin and finally Mannheim (near Frankfurt). I took a 6:30 AM high speed train from Amsterdam Central Station to Cologne. Very nice form of transportation. I then stepped out of the Cologne station to see the incredible Cathedral, a gothic wonder with a very tall tower (which I was to climb in a few hours). I headed over to the Hilton and a little while later performed for the "masses." Actually, the audience size was a bit on the small size, something that repeated over the next two days as well; it seems that the Toad events attracted many more DBAs than developers; I am not sure why. They were also much quieter and more serious than the Dutch, partly I believe due to a bit more of a language barrier. Yet some of the attendees gave me great ideas for new features to add to Quest Code Tester.
With the afternoon free, I went to the Cathedral and climbed the 500 steps up through a very confining circular stone stairwell. Good exercise, a great view, and a marvel of gothic architecture. Besides that, the highlight of my Cologne visit were the excellent pastries and numerous Snickers bars put out over the break. Photos to come later....
From there, to Berlin - my first time ever to this historic city. Unfortunately, time was very short and besides giving my presentations, I only had time for a short walk in the neighborhood of the Crowne Plaza hotel. Photos to come later....
And then Mannheim. Following the pattern of this trip, we traveled into the evening, then rented a big Mercedes van to drive the hour to Mannheim and the Dorint hotel, which was a major disappointment. To my and others' utter amazement, this conference center hotel only offered dial-up Internet access in the rooms; I had to sit out by the elevator to find a wireless connection, thereby sharing my conversation with my wife via Skype with anyone going in and out of the elevators. To plug in my laptop at the desk, I had to unplug the lamp. No fitness center. And to top all that off, at 7 AM construction workers started their day right outside my window, making more than enough noise to ensure that I did not need an alarm to wake up in time. Very irritating.
All in all, though, a fine trip to Germany. Many thanks to Daniela for organizing the events so professionally. And it was great to see again my friends Johannes and Thomas, two fine Quest SCs.
Monday, October 08, 2007
An amazing Scrabble achievement
Veva and I have been playing Scrabble lots lately....
A few weeks ago I was delighted to put down this word
VOICING
Nothing terribly special, except that I was able to put it across the board in such a way that both the V and the G were on double word spaces - so I got a quadruple word score! That was the first time I had ever done that.
But this accomplishment was nothing compared to last night.
On Veva's first turn she put down BREEZES - 7 letter word -> 106 points!
I immediately countered on MY first turn with SOUTHING - another 7 letter word but "only" 74 points.
Well, from there my game definitely took a turn for the worse; I ended up with only 298 points.
But Veva...Veva...she never slowed down. She came up with a SECOND 7 letter word score: DIVERTED, good for another 70 points, followed that by CREW on a triple word score that netted 48 points and....
She ended up with a score of 437 points, an average score per turn of 21 points!
Incredible.
That was a lot of fun, though I have to admit I would have had MORE fun if I was the one who got 437 points.
:-)
A few weeks ago I was delighted to put down this word
VOICING
Nothing terribly special, except that I was able to put it across the board in such a way that both the V and the G were on double word spaces - so I got a quadruple word score! That was the first time I had ever done that.
But this accomplishment was nothing compared to last night.
On Veva's first turn she put down BREEZES - 7 letter word -> 106 points!
I immediately countered on MY first turn with SOUTHING - another 7 letter word but "only" 74 points.
Well, from there my game definitely took a turn for the worse; I ended up with only 298 points.
But Veva...Veva...she never slowed down. She came up with a SECOND 7 letter word score: DIVERTED, good for another 70 points, followed that by CREW on a triple word score that netted 48 points and....
She ended up with a score of 437 points, an average score per turn of 21 points!
Incredible.
That was a lot of fun, though I have to admit I would have had MORE fun if I was the one who got 437 points.
:-)
Sunday, October 07, 2007
Liberal Media bites again? Hah!
I find the charge that the US media is "liberal" to be especially amusing, because it is one of those claims that has no resonance in the real world. But if "you" (that is, the people taking up lots of our bandwidth on radio, TV, etc.) repeat something often and loudly enough, after a while, people seem to accept it as a sort of truth.
It is, for example, almost impossible to find a real left wing voice or face on television. And of course in recent years, all major media, even that most "liberal" of newspapers, The New York Times, went out of their way to support President Bush as he lied his way straight into the tragedy unfolding in Iraq.
Yet those are very broad-brush examples/counter-arguments. I ran across a much more concrete example this morning of how the US media is largely biased in favor of the right wing.
Check out this article on Yahoo News:
Springsteen ready for criticism over "Magic" words
From Reuters, it leads off with this text:
"Bruce Springsteen's new album "Magic" marks his return to the pop sound that propelled him to mega-stardom in the 1980s, but the hook-laden melodies mask lyrics portraying an America of despair and hopelessness.
"Springsteen says he is prepared for criticism from those who may take the lyrics on his latest album "Magic" as unpatriotic for speaking out against the Iraq war and President George W. Bush in war time."
Now, c'mon, folks - who at this point pretends that this war is popular or that criticism of this war would be considered "unpatriotic"? Just the right wing nut cases. The war is demonstrably, overwhelmingly unpopular. Many people, from all walks of life, all political parties, are criticizing Bush and Cheney and Gates.
Wouldn't a more accurate headline and overall subject for this article be something like: "Springsteen to put Bush Administration further on defensive with new album"?
This article, in other words, is not really news. It is a twisting of the news to persuade us that we should be thinking of Iraq war criticism as being "unpatriotic."
It is, for example, almost impossible to find a real left wing voice or face on television. And of course in recent years, all major media, even that most "liberal" of newspapers, The New York Times, went out of their way to support President Bush as he lied his way straight into the tragedy unfolding in Iraq.
Yet those are very broad-brush examples/counter-arguments. I ran across a much more concrete example this morning of how the US media is largely biased in favor of the right wing.
Check out this article on Yahoo News:
Springsteen ready for criticism over "Magic" words
From Reuters, it leads off with this text:
"Bruce Springsteen's new album "Magic" marks his return to the pop sound that propelled him to mega-stardom in the 1980s, but the hook-laden melodies mask lyrics portraying an America of despair and hopelessness.
Now, c'mon, folks - who at this point pretends that this war is popular or that criticism of this war would be considered "unpatriotic"? Just the right wing nut cases. The war is demonstrably, overwhelmingly unpopular. Many people, from all walks of life, all political parties, are criticizing Bush and Cheney and Gates.
Wouldn't a more accurate headline and overall subject for this article be something like: "Springsteen to put Bush Administration further on defensive with new album"?
This article, in other words, is not really news. It is a twisting of the news to persuade us that we should be thinking of Iraq war criticism as being "unpatriotic."
Saturday, September 22, 2007
PL/SQL developers converge on .... Newark!
Just back from the third Oracle PL/SQL Programming conference: OPP2007-East.
Close to 200 developers and their close friends in Quest Software, Oracle Corp, OReilly Media and Dulcian (the sponsors) gathered at the Sheraton Newark Airport Hotel to rejoice in all that is PL/SQL: two days of intensive training, conversation and contests.
Unlike the "work hard, play hard" theme of ODTUG's Kaleidoscope conference (held in June), we at OPP proudly call ourselves the "Seriously Practical" conference.
At OPP, we mostly work you hard and then work you some more.
I started off on Tuesday with a keynote at 8:15 AM, after which there were five 1.5 hour sessions organized in four tracks (Best Practices, Fundamentals, Advanced and Vendor). The sessions ended at 7:15 PM. But wait -- that's not all! For another twenty or so brave souls, it was time to participate in the third-ever PL/SQL Test-a-Thon.
The Test-a-Thon ("Who can build the most/best automated tests for a set of programs you've never seen before, in an hour?") went till 9 PM, resulting in a very pleased winner (closely beating out two others nipping at his heels): Todd Barkus of Barkus Consulting, Minneapolis. Congratulations, Todd!
That is one very long day, and with little time for sleep, we all gathered the next morning at 8 AM to listen to Bryn Llewellyn, PL/SQL Product Manager, tell us all about the wonders to come in Oracle Database 11g.
Poor fellow - his laptop powered down on its own accord twice, leaving him to explain things like the Function Result Cache, compound triggers, native compilation and more without the benefit of a single Powerpoint slide. Horrors! As expected, though, Bryn captivated his audiences with both his technical know-how and dry wit.
Cursory scans of attendee evaluations reveal the following:
Many thanks to ODTUG for taking on sponsorship of these conferences, to Kathleen McCasland and YCC for its very competent organizing of the event, to Bryn Llewellyn and the PL/SQL team for their fine work on our language of choice, to our other speakers/instructors (John Jeunnette, John Beresniewicz, Ken Atkins, Karen Morton, Paul Dorsey, Mary Hunsaker Gable, Ron Hardman, John Pocknell, Mark Sewtz and Anthony Harper).
We are thinking now about holding the next OPP in the Southwest, in the first quarter of 2008. If you would like to be informed about our Oracle PL/SQL Programming conferences, let me know by sending an email to steven@stevenfeuerstein.com.
Close to 200 developers and their close friends in Quest Software, Oracle Corp, OReilly Media and Dulcian (the sponsors) gathered at the Sheraton Newark Airport Hotel to rejoice in all that is PL/SQL: two days of intensive training, conversation and contests.
Unlike the "work hard, play hard" theme of ODTUG's Kaleidoscope conference (held in June), we at OPP proudly call ourselves the "Seriously Practical" conference.
At OPP, we mostly work you hard and then work you some more.
I started off on Tuesday with a keynote at 8:15 AM, after which there were five 1.5 hour sessions organized in four tracks (Best Practices, Fundamentals, Advanced and Vendor). The sessions ended at 7:15 PM. But wait -- that's not all! For another twenty or so brave souls, it was time to participate in the third-ever PL/SQL Test-a-Thon.
The Test-a-Thon ("Who can build the most/best automated tests for a set of programs you've never seen before, in an hour?") went till 9 PM, resulting in a very pleased winner (closely beating out two others nipping at his heels): Todd Barkus of Barkus Consulting, Minneapolis. Congratulations, Todd!
That is one very long day, and with little time for sleep, we all gathered the next morning at 8 AM to listen to Bryn Llewellyn, PL/SQL Product Manager, tell us all about the wonders to come in Oracle Database 11g.
Poor fellow - his laptop powered down on its own accord twice, leaving him to explain things like the Function Result Cache, compound triggers, native compilation and more without the benefit of a single Powerpoint slide. Horrors! As expected, though, Bryn captivated his audiences with both his technical know-how and dry wit.
Cursory scans of attendee evaluations reveal the following:
- Continued, tremendous enthusiasm for PL/SQL and the OPP conferences
- Great appreciation for the deep expertise of the instructors. (Well, it is rather hard to hide behind a superficial understanding of topics when you have one or more 1.5 hours sessions to fill!)
- "We don't want to do five sessions in one day, going from 8 AM to 7:15PM!"
- "We need more breaks - 1.5 hours straight is tough to do over and over again."
Many thanks to ODTUG for taking on sponsorship of these conferences, to Kathleen McCasland and YCC for its very competent organizing of the event, to Bryn Llewellyn and the PL/SQL team for their fine work on our language of choice, to our other speakers/instructors (John Jeunnette, John Beresniewicz, Ken Atkins, Karen Morton, Paul Dorsey, Mary Hunsaker Gable, Ron Hardman, John Pocknell, Mark Sewtz and Anthony Harper).
We are thinking now about holding the next OPP in the Southwest, in the first quarter of 2008. If you would like to be informed about our Oracle PL/SQL Programming conferences, let me know by sending an email to steven@stevenfeuerstein.com.
Saturday, September 01, 2007
I know what I did this summer
I went down to Puerto Rico and "worked the land." My wife and I built an enclosure for a vegetable garden. The enclosure was necessary because the land there is almost 100% clay. Actually, a wide variety of colors of clay. Most of it is orange, but we also found big chunks of brilliant turquoise, as well as shades of red and other colors. Veva took some of the clay back with her to Chicago to take a closer look and see if it is something she can actually use in her wonderful ceramist efforts.
This is what the vegetable garden looked like when we arrived.
In other words, an area cleared of what we decided were weeds and, though you can barely make them out, four pineapple plants in the top left corner. They are not doing too well, since it is pretty much solid clay.
To actually be able to grow vegetables there, Veva decided that several things were needed:
* Much better soil - soil that would hold water, soil that contained nutrients and minerals and whatever else tomato and lettuce and other edible plants need to grow.
* A way to keep that soil from washing away in the heavy rains that come almost every afternoon in this tropical part of the world.
* Also, a way to keep the dogs (both those that live at our place, Bunny and Panda, and those that roam Puerto Rico in packs looking for mates, fun and food) and other animals away from our vegetables.
Her decision? To build a wall with fence around this vegetable patch and then load it up with compost and sand. And then mix it all in with the clay to break up the ground and speed the conversion of all of these materials into wonderful growing soil. Do that for several months and, along with lots of sun and rain, it should be ready to start feeding us on a regular basis (or those of us who are living at the old finca).
So...we measured the size of the garden and then went to our favorite ferreteria (hardware store): Mendoza Brothers. Only two miles or so from the finca, it is run by Danny and Joey, two NJ-born guys who moved back to the island when they were kids. Also, Roger the youngest brother works there. Now, "hardware store" doesn't really accurately describe this place. It is more of an open area (fenced in) and full of wood, metal, bricks, etc. with a relatively small building that holds tools, poisons (lots of people use Roundup on the island; we use no chemicals on our land) and so on.
Well, so we ordered 120 cinder blocks, 100 ft of chicken wire, about 120 feet of rebar (steel rods that we would use to hold the chicken wire in place). I could turn this into a really long blog by explaining how much work it took to get those cinder blocks up to our place, since that entails driving a truck down a 1/4 mile access road, over a bridge crossing a creek and then up a really steep hill. Instead, I will summarize: Joey dropped the cinder blocks off just off the main road and we then moved them up to the house 30 at a time. Lots of work.
But then they were there and we laid in the first row of blocks for the wall. You can see that the level to the right is much lower than on the left (up the hill). We were such engineers!
Then we started putting in the second layer of blocks (actually a total of three on the lower end of the hill), along with some of the rebar supports.
After two days of hard, sweaty work (we mostly did this in the morning before the sun hit that area full force), we had our wall completed and even lay down an entry path to the garden area with our signatures. I know what you are thinking: this is pretty crude work. Well, I suppose so. Chris, our son, certainly thought so. In fact, he thinks what we did is incredibly ugly. Maybe so. We were definitely focusing on functionality and getting something done that could be used ASAP.
And we weren't done yet! Next we put up the chicken wire fencing to keep out the animals. Then we sunk two four-by-four posts to which the door to the enclosure would be attached by Chris (we decided he would do a much better job of this than us).
Then I spent hours raking up twelve wheelbarrow loads of dead leaves and other partially decomposed matter and dumping them onto the clay. I also dumped a large volume of sand which was sitting out at the end of our access road, left over from the monumental effort of putting in a new bridge over the creek (3 6o-foot long steel I-beams and who knows how many pounds of hand-mixed cement). Then Veva dug all of this stuff around, mizing it together and there we left it: one enclosed garden, ready for continued composting, turning over, and then finally planting!
We were and are very proud of ourselves. Major accomplishment. Could be growing our own food 3 - 6 months from now.
And while I am at it, here are a few more photos from our trip:
Insane Zuzi, the kitten, tussling with Bunny the very friendly dog. Bunny is very gentle with her, as you can see.
A storm rolling over Mayaguez and heading to Aguadilla. Incredible how you can see the rain when it is falling so heavily from clouds.
Some of the beautiful flowers growing near the house. And this magnificent bird of paradise plant is almost beyond description when blooming (right now, I am just very excited that it is growing so well, since we almost burned it to the ground last New Year's Eve, when we lit an incredible (and some might say incredibly stupid) bonfire that soared 40 feet into the air.
We planted four citrus trees: orange, grapefruit, mandarin orange, lime. These complement the others growing on the property, many of which are too high to easily pick the fruit. Again, we enclosed them in cinder block and chicken wire, so the dogs would not dig them up.
So, yes, that's what I did on my summer vacation this year: work hard, but work in a very different way from the usual work (brain work, fingertip work, eyeball straining work).
This is what the vegetable garden looked like when we arrived.
In other words, an area cleared of what we decided were weeds and, though you can barely make them out, four pineapple plants in the top left corner. They are not doing too well, since it is pretty much solid clay.
To actually be able to grow vegetables there, Veva decided that several things were needed:
* Much better soil - soil that would hold water, soil that contained nutrients and minerals and whatever else tomato and lettuce and other edible plants need to grow.
* A way to keep that soil from washing away in the heavy rains that come almost every afternoon in this tropical part of the world.
* Also, a way to keep the dogs (both those that live at our place, Bunny and Panda, and those that roam Puerto Rico in packs looking for mates, fun and food) and other animals away from our vegetables.
Her decision? To build a wall with fence around this vegetable patch and then load it up with compost and sand. And then mix it all in with the clay to break up the ground and speed the conversion of all of these materials into wonderful growing soil. Do that for several months and, along with lots of sun and rain, it should be ready to start feeding us on a regular basis (or those of us who are living at the old finca).
So...we measured the size of the garden and then went to our favorite ferreteria (hardware store): Mendoza Brothers. Only two miles or so from the finca, it is run by Danny and Joey, two NJ-born guys who moved back to the island when they were kids. Also, Roger the youngest brother works there. Now, "hardware store" doesn't really accurately describe this place. It is more of an open area (fenced in) and full of wood, metal, bricks, etc. with a relatively small building that holds tools, poisons (lots of people use Roundup on the island; we use no chemicals on our land) and so on.
Well, so we ordered 120 cinder blocks, 100 ft of chicken wire, about 120 feet of rebar (steel rods that we would use to hold the chicken wire in place). I could turn this into a really long blog by explaining how much work it took to get those cinder blocks up to our place, since that entails driving a truck down a 1/4 mile access road, over a bridge crossing a creek and then up a really steep hill. Instead, I will summarize: Joey dropped the cinder blocks off just off the main road and we then moved them up to the house 30 at a time. Lots of work.
But then they were there and we laid in the first row of blocks for the wall. You can see that the level to the right is much lower than on the left (up the hill). We were such engineers!
Then we started putting in the second layer of blocks (actually a total of three on the lower end of the hill), along with some of the rebar supports.
After two days of hard, sweaty work (we mostly did this in the morning before the sun hit that area full force), we had our wall completed and even lay down an entry path to the garden area with our signatures. I know what you are thinking: this is pretty crude work. Well, I suppose so. Chris, our son, certainly thought so. In fact, he thinks what we did is incredibly ugly. Maybe so. We were definitely focusing on functionality and getting something done that could be used ASAP.
And we weren't done yet! Next we put up the chicken wire fencing to keep out the animals. Then we sunk two four-by-four posts to which the door to the enclosure would be attached by Chris (we decided he would do a much better job of this than us).
Then I spent hours raking up twelve wheelbarrow loads of dead leaves and other partially decomposed matter and dumping them onto the clay. I also dumped a large volume of sand which was sitting out at the end of our access road, left over from the monumental effort of putting in a new bridge over the creek (3 6o-foot long steel I-beams and who knows how many pounds of hand-mixed cement). Then Veva dug all of this stuff around, mizing it together and there we left it: one enclosed garden, ready for continued composting, turning over, and then finally planting!
We were and are very proud of ourselves. Major accomplishment. Could be growing our own food 3 - 6 months from now.
And while I am at it, here are a few more photos from our trip:
Insane Zuzi, the kitten, tussling with Bunny the very friendly dog. Bunny is very gentle with her, as you can see.
A storm rolling over Mayaguez and heading to Aguadilla. Incredible how you can see the rain when it is falling so heavily from clouds.
Some of the beautiful flowers growing near the house. And this magnificent bird of paradise plant is almost beyond description when blooming (right now, I am just very excited that it is growing so well, since we almost burned it to the ground last New Year's Eve, when we lit an incredible (and some might say incredibly stupid) bonfire that soared 40 feet into the air.
We planted four citrus trees: orange, grapefruit, mandarin orange, lime. These complement the others growing on the property, many of which are too high to easily pick the fruit. Again, we enclosed them in cinder block and chicken wire, so the dogs would not dig them up.
So, yes, that's what I did on my summer vacation this year: work hard, but work in a very different way from the usual work (brain work, fingertip work, eyeball straining work).
Sunday, August 26, 2007
Check out my latest Quick and Useful code offerings!
I am now posting most of my PL/SQL-specific content over at my ToadWorld blog. In fact, Quest Software has now put together a really nice on-line home for me at:
www.ToadWorld.com/SF
So I thought I might offer a quick reminder here of what you can find there.
My latest blog entry:
Undocumented (but supported) Oracle11g Feature! Reference Fields Of Records In A FORALL Statement!
My latest Quick and Useful offerings:
Quseful #6 - Generate collections of random values
Quseful #5 - Does that string contain a valid number?
And here is a cute little package I wrote to make it easy to put in some insurance against infiinite loops in your code: the loop killer package.
www.ToadWorld.com/SF
So I thought I might offer a quick reminder here of what you can find there.
My latest blog entry:
Undocumented (but supported) Oracle11g Feature! Reference Fields Of Records In A FORALL Statement!
My latest Quick and Useful offerings:
Quseful #6 - Generate collections of random values
Quseful #5 - Does that string contain a valid number?
And here is a cute little package I wrote to make it easy to put in some insurance against infiinite loops in your code: the loop killer package.
Wednesday, August 22, 2007
Back from Puerto Rico, finding zaniness in the Chicago Tribune
I am just back from a two week "holiday" in Puerto Rico (in quotes, because I spent much of that time working very hard - but manual labor, working the earth...more on that soon) and as I was going through the Chicago Tribune today, pieces of it just seemed, well, weird. Was it because I was out of it for a while? Who knows? Here are the items that caught my eye and twisted my brain:
Tribune fined in worker's death
"The federal government has fined the Chicago Tribune $7,000 -- the maximum allowable penalty -- for a serious safety violation at its printing plant, where a worker was killed in May when he became entangled in a conveyor belt."
This is a fine demonstration of how corporations trump citizens in our democracy. Maximum allowable penalty for killing your worker is $7000. That doesn't present much of a deterrence to companies that want to cut corners to save money, or to simply aren't inclined to proactively protect their workers effectively. Now, why would our government (of the people, by the people, for the people) set up laws that so poorly protect "the people" and so nicely benefit the company? Hmmmm.....
Poll: White youths happier than others
NEW YORK - Young white Americans are happier with life than their minority counterparts, a poll has found.
According to an extensive survey of 1,280 people ages 13-24 by The Associated Press and MTV, 72 percent of whites say they are happy with life in general, compared with 51 percent of Hispanics and 56 percent of blacks.
Twenty-eight percent of minorities believe race will hurt them in the quest for a better life. Among whites, 20 percent feel their race will help.
This is a great example of the numerous polls, surveys, studies I come across that makes me think: "You need to organize a study to figure that out?" This country is still so divided racially -- and that divide (or those many divides) certainly extends into the economic sphere. And let's face it, it's hard to be happy when you work a crappy job for little bits of money, or can get no job at all.
But really, the solution is clear: "minority" youth simply need to stop believing that "race will hurt them in a quest for a better life." Think positive or whatever that latest ridiculous fad-book tells you to do: just think different and your life becomes different.
That's what's wrong with your "minority" "youth" today.
Yes, I am back in Chicago, with lots of evidence of the world crumbling to pieces around me.
Tribune fined in worker's death
"The federal government has fined the Chicago Tribune $7,000 -- the maximum allowable penalty -- for a serious safety violation at its printing plant, where a worker was killed in May when he became entangled in a conveyor belt."
This is a fine demonstration of how corporations trump citizens in our democracy. Maximum allowable penalty for killing your worker is $7000. That doesn't present much of a deterrence to companies that want to cut corners to save money, or to simply aren't inclined to proactively protect their workers effectively. Now, why would our government (of the people, by the people, for the people) set up laws that so poorly protect "the people" and so nicely benefit the company? Hmmmm.....
Poll: White youths happier than others
NEW YORK - Young white Americans are happier with life than their minority counterparts, a poll has found.
According to an extensive survey of 1,280 people ages 13-24 by The Associated Press and MTV, 72 percent of whites say they are happy with life in general, compared with 51 percent of Hispanics and 56 percent of blacks.
Twenty-eight percent of minorities believe race will hurt them in the quest for a better life. Among whites, 20 percent feel their race will help.
This is a great example of the numerous polls, surveys, studies I come across that makes me think: "You need to organize a study to figure that out?" This country is still so divided racially -- and that divide (or those many divides) certainly extends into the economic sphere. And let's face it, it's hard to be happy when you work a crappy job for little bits of money, or can get no job at all.
But really, the solution is clear: "minority" youth simply need to stop believing that "race will hurt them in a quest for a better life." Think positive or whatever that latest ridiculous fad-book tells you to do: just think different and your life becomes different.
That's what's wrong with your "minority" "youth" today.
Yes, I am back in Chicago, with lots of evidence of the world crumbling to pieces around me.
Sunday, August 05, 2007
Democratic Party control of House gives us what?
So in November 2006, a sizeable number of the American middle class finally got disgusted with the Bush Administration and his lackeys in the Republican Party, and handed control of the House of Representatives to the Democratic Party.
Fantabulous Day! Perhaps now there would be a voice of sanity to counter the Bush Administration's botched invasion of Iraq and its ongoing attack on our freedoms.
I guess not. The House voted to continue funding the war and this morning I woke up to a Sunday Chicago Tribune article (from AP) titled:
Yes, folks, the Democrats also caved when it came to our fundamental civil liberties. Here's how one US rep described this bill:
"This bill would grant the attorney general the ability to wiretap anybody, any place, any time without court review, without any checks and balances," said Rep. Zoe Lofgren, D-Calif., during the debate preceding the vote. "I think this unwarranted, unprecedented measure would simply eviscerate the 4th Amendment," which prohibits unreasonable searches and seizures.
But this is not to say that the Democractic Party did not put up a fight. Oh, no. As the article tells us, "Congressional Democrats won a few concessions in negotiations earlier in the week. New wiretaps must be approved by the director of national intelligence and the attorney general, not just the attorney general."
Oh yeah. This is good stuff. They don't trust the current Attorney General (Gonzalez) and well they should not. He is a crony through and through, but at least historically the position of the Attorney General has implied some level of distance from the White House itself. How do they fix this problem of trust by pretending that the director of national intelligence, another person appointed by the President and without any semblance of independence, is any sort of check-or-balance? Ridiculous!
You can almost see the Democratic Party writing laws today with the hope or expectation that they will win the Presidency this next time.
So....one step closer to a police state we come.
Fantabulous Day! Perhaps now there would be a voice of sanity to counter the Bush Administration's botched invasion of Iraq and its ongoing attack on our freedoms.
I guess not. The House voted to continue funding the war and this morning I woke up to a Sunday Chicago Tribune article (from AP) titled:
House Approves Foreign Wiretap Bill
- By CHARLES BABINGTON | Associated Press Write
Yes, folks, the Democrats also caved when it came to our fundamental civil liberties. Here's how one US rep described this bill:
"This bill would grant the attorney general the ability to wiretap anybody, any place, any time without court review, without any checks and balances," said Rep. Zoe Lofgren, D-Calif., during the debate preceding the vote. "I think this unwarranted, unprecedented measure would simply eviscerate the 4th Amendment," which prohibits unreasonable searches and seizures.
But this is not to say that the Democractic Party did not put up a fight. Oh, no. As the article tells us, "Congressional Democrats won a few concessions in negotiations earlier in the week. New wiretaps must be approved by the director of national intelligence and the attorney general, not just the attorney general."
Oh yeah. This is good stuff. They don't trust the current Attorney General (Gonzalez) and well they should not. He is a crony through and through, but at least historically the position of the Attorney General has implied some level of distance from the White House itself. How do they fix this problem of trust by pretending that the director of national intelligence, another person appointed by the President and without any semblance of independence, is any sort of check-or-balance? Ridiculous!
You can almost see the Democratic Party writing laws today with the hope or expectation that they will win the Presidency this next time.
So....one step closer to a police state we come.
Thursday, August 02, 2007
Want to help me regression test the PL/SQL language?
As I hope many readers of my blog know, I have gotten rather obsessed with helping PL/SQL developers test their programs more effectively.
Back in 2000, I released utPLSQL, the Junit analogue for PL/SQL. It was (and is) a big advance over 100% hand-coding tests, but it still requires you to write hundreds, even thousands of lines of code. That fact will always greatly limit who will use that open source utility.
So in 2005, I decided to try again and with the help of many at Quest, we have produced Quest Code Tester for Oracle, a truly amazing automated testing tool that generates almost all of your test code.
Well, I had a brainstorm rumbling around in my head when I woke up this morning:
Wouldn't it be cool beyond cool to build a regression test in Code Tester for the built-ins of the PL/SQL language themselves?
Sure, Oracle has their own extensive regression tests, but we could all have our own! Want to ensure that SUBSTR really does all it is supposed to do? Run the test. Want to make sure that a new version of PL/SQL doesn't have any obvious or critical bugs? Run the test.
I have already "thrown together" a PL/SQL package that will work as a pass through to the programs in STANDARD. We can use Quest Code Tester to specify tests against this API, which will in turn exercise the underlying PL/SQL code.
Well....I am just turning this idea over in my head for now, but thought I would share it with the world....I certainly couldn't do this by myself, but as a community, hundreds of PL/SQL developers certainly could pull this off.
It would be like SETI@home. We could call it testPLSQL@home.
So what do you think? Interested in participating? Feel free to drop me a note and let me know: steven.feuerstein@quest.com.
Back in 2000, I released utPLSQL, the Junit analogue for PL/SQL. It was (and is) a big advance over 100% hand-coding tests, but it still requires you to write hundreds, even thousands of lines of code. That fact will always greatly limit who will use that open source utility.
So in 2005, I decided to try again and with the help of many at Quest, we have produced Quest Code Tester for Oracle, a truly amazing automated testing tool that generates almost all of your test code.
Well, I had a brainstorm rumbling around in my head when I woke up this morning:
Wouldn't it be cool beyond cool to build a regression test in Code Tester for the built-ins of the PL/SQL language themselves?
Sure, Oracle has their own extensive regression tests, but we could all have our own! Want to ensure that SUBSTR really does all it is supposed to do? Run the test. Want to make sure that a new version of PL/SQL doesn't have any obvious or critical bugs? Run the test.
I have already "thrown together" a PL/SQL package that will work as a pass through to the programs in STANDARD. We can use Quest Code Tester to specify tests against this API, which will in turn exercise the underlying PL/SQL code.
Well....I am just turning this idea over in my head for now, but thought I would share it with the world....I certainly couldn't do this by myself, but as a community, hundreds of PL/SQL developers certainly could pull this off.
It would be like SETI@home. We could call it testPLSQL@home.
So what do you think? Interested in participating? Feel free to drop me a note and let me know: steven.feuerstein@quest.com.
Saturday, July 28, 2007
Update on my beautiful Insight
As I expected, State Farm has declared the car a total loss. The estimate for repairing the car came to over to $8000. The pleasant State Farm fellow told me that the cash value of the car is $7750. I get an extra $900 for low mileage (51000 in 7 years!), plus $600 for good condition.
Sigh....it is very sad to see the results of all my efforts to keep the car in fine shape and drive it minimally results only in an extra $1500.
Add in sales tax and per diem reimbursement for rental car (which I didn't use, but still I get the per diem), and State Farm stands ready to hand over about $10600 for my wreck of a car.
Which I suppose is not bad considering I paid twice that seven years ago.
But for now, I do not intend to purchase another car. I can do without. Instead, I will check out Zipcar or I-Go, car-sharing services. And ride my bicycle whenever and wherever possible.
Goodbye Insight, it was nice to drive you....
Sigh....it is very sad to see the results of all my efforts to keep the car in fine shape and drive it minimally results only in an extra $1500.
Add in sales tax and per diem reimbursement for rental car (which I didn't use, but still I get the per diem), and State Farm stands ready to hand over about $10600 for my wreck of a car.
Which I suppose is not bad considering I paid twice that seven years ago.
But for now, I do not intend to purchase another car. I can do without. Instead, I will check out Zipcar or I-Go, car-sharing services. And ride my bicycle whenever and wherever possible.
Goodbye Insight, it was nice to drive you....
Sunday, July 15, 2007
Nasty Karma - goodbye Insight....
Sigh....Eli and I went to NY this weekend to celebrate my mom's 75th birthday, plus Sally's 4th birthday, plus Laurie's birthday...and we had a great time, made even more enjoyable by my more or less accidentally renting a red mustang convertible:

So that was fun, and the water balloons were fun, and Evan did some great cooking, and so on....then on Sunday Eli and powered our way back to LaGuardia and managed to hop standby onto an earlier flite. We arrived at O'Hare an hour earlier than expected, hopped into my Insight and off we went.
And two miles from home, stopped at a red light, an absolute jerk of a driver SLAMMED into the back of the Insight, at maybe 20 or 30 MPH. And now my beloved automobile, with only 58000 miles on it after 7 years, averaging 50 MPG, no longer sold by Honda, looks like this:

We were covered with glass chunks. My back and neck got whipped around; hopefully I won't be stiff as a board tomorrow. Eli, too. But we are OK right now, anyway. I am very bummed out, though. I didn't have collision on the car any longer, so I have filed a claim with Sandra "My brakes didn't work" Luke's insurance company and sure they will pay, but probably not to fix it, just declare it totaled and write me a check. Goodbye Insight.
Very sad day for me....and to get hit by an idiot who actually puts the following on her windshield:

That is, upside down: If you can read this....ROLL ME OVER.
In other words, she advertises the fact that she is a reckless driver. What a loser.
No, I am the loser. Ah well, I just have to tell myself over and over: it's just a car, just a thing.
But it was such a nice thing. The best car I ever owned.
So that was fun, and the water balloons were fun, and Evan did some great cooking, and so on....then on Sunday Eli and powered our way back to LaGuardia and managed to hop standby onto an earlier flite. We arrived at O'Hare an hour earlier than expected, hopped into my Insight and off we went.
And two miles from home, stopped at a red light, an absolute jerk of a driver SLAMMED into the back of the Insight, at maybe 20 or 30 MPH. And now my beloved automobile, with only 58000 miles on it after 7 years, averaging 50 MPG, no longer sold by Honda, looks like this:
We were covered with glass chunks. My back and neck got whipped around; hopefully I won't be stiff as a board tomorrow. Eli, too. But we are OK right now, anyway. I am very bummed out, though. I didn't have collision on the car any longer, so I have filed a claim with Sandra "My brakes didn't work" Luke's insurance company and sure they will pay, but probably not to fix it, just declare it totaled and write me a check. Goodbye Insight.
Very sad day for me....and to get hit by an idiot who actually puts the following on her windshield:
That is, upside down: If you can read this....ROLL ME OVER.
In other words, she advertises the fact that she is a reckless driver. What a loser.
No, I am the loser. Ah well, I just have to tell myself over and over: it's just a car, just a thing.
But it was such a nice thing. The best car I ever owned.
Wednesday, July 11, 2007
How Oracle describes PL/SQL for 11g
It is summertime, right? I hate it when I am so busy that I barely notice summer in Chicago. Aw, that's an overstatement. I've been out. I've ridden my bicycle a couple of times. I've seen people visiting the beach. I even played some basketball with teenage nephews who absolutely ran circles around and over me. [I will, however, state for the record that in one game, I scored 7 of the 15 points. Dang, I was hot.]
And I also did some work on Oracle 11g during the beta program (which officially ended on July 11, with the launch of Oracle latest and greatest version).
So I eagerly downloaded the Oracle Database 11g Application Development PDF to check out its high level commentary regarding PL/SQL and other dev languages available for use against and within the Oracle database.
Under the heading of PL/SQL, this document offered several interesting statements:
"PL/SQL is an imperative 3GL..." An imperative 3GL? I'd never seen or heard of that before. Now, as some of you may know, this ignorance of mine should not be a big surprise. I have little formal training in computer programming (three 101 classes in 1979, to be precise), so lots of the fancy verbiage goes whistling past my head. This one sure did. Imperative? What the heck is that? Thank the heavens for Wikipedia, which tells us that an imperative language is "a programming paradigm that describes computation as statements that change a program state. In much the same way as the imperative mood in natural languages expresses commands to take action, imperative programs are a sequence of commands for the computer to perform." Oh, OK, right. PL/SQL is a procedural language.
"It...supports exactly the same datatypes as SQL." Now this really surprised me. I think I know what Oracle intended to say....that PL/SQL supports all the datatypes of the SQL language, and that is the case. But let's be clear: PL/SQL's set of datatypes is a superset of the SQL datatype domain. For example, PL/SQL supports Booleans, which Oracle's SQL language does not.
"While it is available in other environments, this document focuses on PL/SQL that is stored and compiled in the Oracle database." This sentence my eye because of the word "environments." I know that PL/SQL can be run on the "frontend" inside the Oracle Developer Suite: Forms and Reports (which, interestingly, Oracle refers to as Traditional Oracle Tools). But where else do you use PL/SQL? Perhaps they are talking about Application Express, but that is still PL/SQL code that is stored in the database, I believe. So what are all those other environments?
And, finally, the most delightful aspect of this high level description:
"A best practice used by many Oracle customers is to have client code access Oracle Database only by calling PL/SQL subprograms." Yes! This is one my mantras, these days. Namely, "SQL is bad" aka "All SQL statements are hard-coding and hard-coding is bad" aka "Hide all your SQL behind a procedural (imperative!) API." It's very nice to see this argument for using PL/SQL highlighted in Oracle's description. By the way, for more details on what I am talking about here, check out Practical Best Programming.
I will, in a near future blog on ToadWorld, talk more about the actual new features of PL/SQL for Oracle Database 11g. Now, however, it is time to head to the airport for a weekend in NY to celebrate my mom's 75th birthday.
Adios!
And I also did some work on Oracle 11g during the beta program (which officially ended on July 11, with the launch of Oracle latest and greatest version).
So I eagerly downloaded the Oracle Database 11g Application Development PDF to check out its high level commentary regarding PL/SQL and other dev languages available for use against and within the Oracle database.
Under the heading of PL/SQL, this document offered several interesting statements:
"PL/SQL is an imperative 3GL..." An imperative 3GL? I'd never seen or heard of that before. Now, as some of you may know, this ignorance of mine should not be a big surprise. I have little formal training in computer programming (three 101 classes in 1979, to be precise), so lots of the fancy verbiage goes whistling past my head. This one sure did. Imperative? What the heck is that? Thank the heavens for Wikipedia, which tells us that an imperative language is "a programming paradigm that describes computation as statements that change a program state. In much the same way as the imperative mood in natural languages expresses commands to take action, imperative programs are a sequence of commands for the computer to perform." Oh, OK, right. PL/SQL is a procedural language.
"It...supports exactly the same datatypes as SQL." Now this really surprised me. I think I know what Oracle intended to say....that PL/SQL supports all the datatypes of the SQL language, and that is the case. But let's be clear: PL/SQL's set of datatypes is a superset of the SQL datatype domain. For example, PL/SQL supports Booleans, which Oracle's SQL language does not.
"While it is available in other environments, this document focuses on PL/SQL that is stored and compiled in the Oracle database." This sentence my eye because of the word "environments." I know that PL/SQL can be run on the "frontend" inside the Oracle Developer Suite: Forms and Reports (which, interestingly, Oracle refers to as Traditional Oracle Tools). But where else do you use PL/SQL? Perhaps they are talking about Application Express, but that is still PL/SQL code that is stored in the database, I believe. So what are all those other environments?
And, finally, the most delightful aspect of this high level description:
"A best practice used by many Oracle customers is to have client code access Oracle Database only by calling PL/SQL subprograms." Yes! This is one my mantras, these days. Namely, "SQL is bad" aka "All SQL statements are hard-coding and hard-coding is bad" aka "Hide all your SQL behind a procedural (imperative!) API." It's very nice to see this argument for using PL/SQL highlighted in Oracle's description. By the way, for more details on what I am talking about here, check out Practical Best Programming.
I will, in a near future blog on ToadWorld, talk more about the actual new features of PL/SQL for Oracle Database 11g. Now, however, it is time to head to the airport for a weekend in NY to celebrate my mom's 75th birthday.
Adios!
Saturday, June 16, 2007
Who would've thought that fighter jets have ideologies?
I read today an obituary for Brigadier General Robin Olds (1922 - 2007). He flew 107 combat missions in 1944 and downed 12 enemy aircraft. But he is apparently best known for leading the biggest air battle in Vietnam, and I quote from the Los Angeles Times obit:
"Commanded an Air Force wing that shot down seven communist MIGs over North Vietnam."
Who would've thought it? A communist MIG. Not even "Communist MIG". No, that MIG apparently believed that wealth should be re-distributed equitably throughout society (or perhaps just among other MIGs?).
Perhaps the silliness of this statement would be clearer if the obit applied the same rule to both "sides", as in:
"Commanded a capitalist Air Force wing that shot down seven communist MIGs over North Vietnam."
Ridiculous, eh?
What's my point? That the propaganda of that war ("Stop the spread of communism!") was so insidious, is so deeply ingrained in our society that even decades later, the writers of the obit could not bring themselves to describe those planes as the Viet Cong MIGs they were.
Back in the 1960s, President Johnson lied to the US people about a fictitious battle in Tonkin Bay to justify the war in Vietnam. That lie, and the millions of others, large and small, that followed all the way up through 1975 (not the least of which involved Henry Kissinger's war crime of secretly diverting B2 bombers to devastate Laos and Cambodia with which we were not at war), fueled the "line" that the US of A was on the front lines of the battle to stop the spread of Communism.
In fact, the military my parents supported through their tax dollars conducted a brutal war against an entire people, killing some 2,000,000 Vietnamese - many of them women and children.
Yet this still cannot be generally and easily acknowledged in our media. How sad, how tragic, how disturbing.
Especially given the same process is now being used to conduct the war in Iraq. And now they are my tax dollars being used to fund the way. This really sucks. What a crappy democracy we have here. Soon, I will have the exciting choice of Clinton vs Guliani or Clinton vs McCain or Obama vs Romney or.... well, it is really very nice of those in control to at least give us two people between which to choose.
'Cause if I could only choose from one person, well, then clearly we would not have a democracy.
Of course, when I am using a black-box voting machine built by Diebold or Sycamore (both companies controlled by heavy contributors to George Bush and the Republicans), who knows? I might only really be choosing from among one person!
"Commanded an Air Force wing that shot down seven communist MIGs over North Vietnam."
Who would've thought it? A communist MIG. Not even "Communist MIG". No, that MIG apparently believed that wealth should be re-distributed equitably throughout society (or perhaps just among other MIGs?).
Perhaps the silliness of this statement would be clearer if the obit applied the same rule to both "sides", as in:
"Commanded a capitalist Air Force wing that shot down seven communist MIGs over North Vietnam."
Ridiculous, eh?
What's my point? That the propaganda of that war ("Stop the spread of communism!") was so insidious, is so deeply ingrained in our society that even decades later, the writers of the obit could not bring themselves to describe those planes as the Viet Cong MIGs they were.
Back in the 1960s, President Johnson lied to the US people about a fictitious battle in Tonkin Bay to justify the war in Vietnam. That lie, and the millions of others, large and small, that followed all the way up through 1975 (not the least of which involved Henry Kissinger's war crime of secretly diverting B2 bombers to devastate Laos and Cambodia with which we were not at war), fueled the "line" that the US of A was on the front lines of the battle to stop the spread of Communism.
In fact, the military my parents supported through their tax dollars conducted a brutal war against an entire people, killing some 2,000,000 Vietnamese - many of them women and children.
Yet this still cannot be generally and easily acknowledged in our media. How sad, how tragic, how disturbing.
Especially given the same process is now being used to conduct the war in Iraq. And now they are my tax dollars being used to fund the way. This really sucks. What a crappy democracy we have here. Soon, I will have the exciting choice of Clinton vs Guliani or Clinton vs McCain or Obama vs Romney or.... well, it is really very nice of those in control to at least give us two people between which to choose.
'Cause if I could only choose from one person, well, then clearly we would not have a democracy.
Of course, when I am using a black-box voting machine built by Diebold or Sycamore (both companies controlled by heavy contributors to George Bush and the Republicans), who knows? I might only really be choosing from among one person!
Thursday, June 14, 2007
Photos from Paris
I spent one afternoon in Paris. Took the Metro from the Grand Arch (La Defense) to Hotel du Ville, walked to the Pompidou, had a great time there, enjoying much interesting art and snorting in disbelief at other, more absurd pieces (like three big canvasses of white, nothing but white). Then walked over to the Louvre, checked out Mona Lisa (a bit disappointing - too much security), ignored the crucifixions and portraits of dead people, and found some amazing "Islamic Art" from centuries past. Enjoy!
http://www.flickr.com/photos/60694364@N00/sets/72157600346060716/
(See if you can figure out which art is from the Louvre and which from Pompidou.)
http://www.flickr.com/photos/60694364@N00/sets/72157600346060716/
(See if you can figure out which art is from the Louvre and which from Pompidou.)
Monday, June 11, 2007
Upcoming trainings by yours truly in Europe
A reader asked me to post details about my end of summer trip to Europe to do a triplet of two day trainings for Oracle. Here's the info and links:
I hope to see some of you there. Please do come up and say hello if you learned about the class through this blog (come up and say hello anyway!).
Thanks, SF
PS - I am now in Brussels (it is 12:30 AM on Tues June 11). I spend Sun and Mon in Paris. On Sunday, visited both the Lourve and the Pompidou Center. Incredible places. Will be posting photos soon on Flickr.
Czech Republic (30th and 31st of August)
Croatia (homepage)(3rd and 4th of September 2007)
Slovakia (6th and 7th of September)
I hope to see some of you there. Please do come up and say hello if you learned about the class through this blog (come up and say hello anyway!).
Thanks, SF
PS - I am now in Brussels (it is 12:30 AM on Tues June 11). I spend Sun and Mon in Paris. On Sunday, visited both the Lourve and the Pompidou Center. Incredible places. Will be posting photos soon on Flickr.
Wednesday, June 06, 2007
Summery Activity
I can sort of remember a time when I spent lots of time outside in the summer, really noticed the season (and it is a fine one in Chicago...I don't mind it when Chicago occasionally gets very hot). Lately, though, I seem to be so busy on books or products or trainings - and traveling - that the last couple of years, I will suddenly notice the color of the leaves turning and say to myself: "Wait a minute! How did it get to be Fall?"
And the upcoming summer is looking like another one of those, since I am preparing for or working on all of the following:
* My presentations and test-a-thon materials for ODTUG Kaleidoscope on June 18 - 21 in Daytona Beach, Florida. This most-excellent developer's conference has lots of PL/SQL content, plus we (ODTUG, Quest Software and O'Reilly Media) are organizing the second-ever PL/SQL Test-a-Thon! I hope you are coming. You can find more information about, and register for, Kaleidoscope here.
* The second Oracle PL/SQL Programming 2007 conference will be held in mid-September in New Jersey. Two days of intensive training, discussions and test-a-thons for PL/SQL developers. Which means I need to start organizing those materials as well! Almost 300 developers came for OPP2007-I in February. If you missed that one, join us for OPP2007-II!
* The new Quest Code Tester Trial Challenge: we just set up a new and hopefully fun way to learn about Code Tester and possibly win a signed set of my books. Simply download the trial version of Code Tester, install it and explore. Then answer the ten questions in the Challenge and submit your answer. If they are all correct, your name will be added to the pile from which a winner of my books will be chosen (courtesy of O'Reilly Media!).
* I head back to Europe at the end of August to visit Prague, Zagreb, Ljubljana and Bratislava, doing two-day Oracle trainings and Quest seminars. I very much look forward to returning to Prague and seeing Croatia, Slovenia and Slovakia for the first time. But before then I need to write a bunch of new training materials. Sigh....
* Finishing up the second edition of Oracle PL/SQL Best Practices. I originally planned to do a fairly minor rewrite, add some new best practices and update old references, but otherwise leave it unchanged. Ha! That plan has certainly changed. I have, instead, decided that this book needed to stop taking itself so seriously, and have a bit more fun with best practices. I think you will be both entertained and enlightened as you read the exploits of a four person development team (Sunita, Delaware, Lizbeth and Jasper), part of the (fictitious) My Flimsy Excuse dotcom venture. More on this book soon....
* Quest Code Test development: we are QAing release 1.6 (automated XML testing, many bug fixes, much faster performance with a remote database, and much more) and then moving right into development of release 1.7 (major improvements in usability and much smarter test case generation, to name just two key enhancements). I would love to do nothing but help develop Code Tester. It isn't possible, but I cherish every moment I get to work on the backend code! By the way, you can download the 1.6 beta here.
Well, that's what my summer is looking like. I hope you are finding more time for leisure in yours.
Hey, but I am not complaining! I work from my home, take lots of breaks, go outside - life is good, very good, just busy.....
And the upcoming summer is looking like another one of those, since I am preparing for or working on all of the following:
* My presentations and test-a-thon materials for ODTUG Kaleidoscope on June 18 - 21 in Daytona Beach, Florida. This most-excellent developer's conference has lots of PL/SQL content, plus we (ODTUG, Quest Software and O'Reilly Media) are organizing the second-ever PL/SQL Test-a-Thon! I hope you are coming. You can find more information about, and register for, Kaleidoscope here.
* The second Oracle PL/SQL Programming 2007 conference will be held in mid-September in New Jersey. Two days of intensive training, discussions and test-a-thons for PL/SQL developers. Which means I need to start organizing those materials as well! Almost 300 developers came for OPP2007-I in February. If you missed that one, join us for OPP2007-II!
* The new Quest Code Tester Trial Challenge: we just set up a new and hopefully fun way to learn about Code Tester and possibly win a signed set of my books. Simply download the trial version of Code Tester, install it and explore. Then answer the ten questions in the Challenge and submit your answer. If they are all correct, your name will be added to the pile from which a winner of my books will be chosen (courtesy of O'Reilly Media!).
* I head back to Europe at the end of August to visit Prague, Zagreb, Ljubljana and Bratislava, doing two-day Oracle trainings and Quest seminars. I very much look forward to returning to Prague and seeing Croatia, Slovenia and Slovakia for the first time. But before then I need to write a bunch of new training materials. Sigh....
* Finishing up the second edition of Oracle PL/SQL Best Practices. I originally planned to do a fairly minor rewrite, add some new best practices and update old references, but otherwise leave it unchanged. Ha! That plan has certainly changed. I have, instead, decided that this book needed to stop taking itself so seriously, and have a bit more fun with best practices. I think you will be both entertained and enlightened as you read the exploits of a four person development team (Sunita, Delaware, Lizbeth and Jasper), part of the (fictitious) My Flimsy Excuse dotcom venture. More on this book soon....
* Quest Code Test development: we are QAing release 1.6 (automated XML testing, many bug fixes, much faster performance with a remote database, and much more) and then moving right into development of release 1.7 (major improvements in usability and much smarter test case generation, to name just two key enhancements). I would love to do nothing but help develop Code Tester. It isn't possible, but I cherish every moment I get to work on the backend code! By the way, you can download the 1.6 beta here.
Well, that's what my summer is looking like. I hope you are finding more time for leisure in yours.
Hey, but I am not complaining! I work from my home, take lots of breaks, go outside - life is good, very good, just busy.....
Tuesday, June 05, 2007
Quseful #3: Don't put COMMIT; in your application code!
Why would I say that? Because a COMMIT; in your code is an example of hard-coding, and as we all know, hard-coding is bad. "Hard-coding?" you ask, "What is Steven talking about?"
Well, to find out, please visit my ToadWorld blog. I have decided to publish my Quseful's over there, rather than on my personal blog!
Regards, Steven
Well, to find out, please visit my ToadWorld blog. I have decided to publish my Quseful's over there, rather than on my personal blog!
Regards, Steven
Wednesday, May 30, 2007
Back from a week in Europe - a travelogue
I have a been a very busy boy. Just spent the last week living in (well, visiting anyway) a different hotel every evening, moving between six cities in four countries in Europe as follows: Frankfurt, Dusseldorf, Zurich, Munich, Stockholm, Copenhagen.
Some might find that exhausting, but I am a lucky fellow: my body and mind are not much affected by jet lag nor by many hotel changes. Plus, I try to stay very disciplined about exercising each day and eating lots of fruit and vegetables, avoiding meat. So I made it back home without getting sick, without getting tired, actually returning totally energized by my time in Europe, because....
I gave my latest best practice presentation, now titled Practical Best Programming, to a total of over 400 developers (with the single largest turnout - over 150! - taking place in Dusseldorf, at an event cosponsored by Quest Software, the German Oracle User Group, and Trivadis). You can download this presentation at:
http://oracleplsqlprogramming.com/PracticalBestPLSQL.html
How bad can a trip be when I spend a big chunk of it talking to lots of people who actually seem to want to hear what I have to say, laugh at lots of my jokes (so kind!), and show proper appreciation for my (Quest's) amazing new tool: Quest Code Tester for Oracle?
Can't be bad at all. Here are some highlights:
* First, the weather. It was sunny and warm, even hot, throughout. The downside of this fact is that I felt absolutely compelled to abandon my laptop and hotel room and go outside whenever possible to enjoy the real world.
* The Das Stadel and Modern Art (MMK) Museums in Frankfurt were very enjoyable. Lots of the art in the MMK was whimsical and amusing. Some of it seemed, well, ridiculous. Blobs of formless clay strewn about on the floor. Dates ( "12 OCT 1997") painted on small canvasses, filling a whole room. Not my cup of tea. But others...well....check out the photos: Frankfurt
* A lovely run along the Isar River in Munich, very close to the Hilton, where I stayed and presented. A very beautiful park, full of mothers and their children enjoying the outdoors, people riding bicycles....I wish that my legs and lungs were stronger so I could have covered more territory and breathed in even more of that clean air...photos: Munich
* Hotel breakfast buffets: while I am trying to lower the importance of food in my life (with the intention of reducing the quantity of food I ingest), I definitely take every possible opportunity to eat fresh fruit. Most business class hotels in Europe feature extensive breakfast buffets containing a wide variety of fresh fruit, yogurt, healthy cereals, fresh juices and so on. Eating fruit makes me feel great!
* My friends at Quest, in particular Daniela, Calle and Patrick. Daniela and Calle worked very hard to organize my week of events and she is clearly a professional - very organized, great attention to detail, strong commitment to carrying out the highest quality programs. Patrick, an SC, shared the agenda with me for three days, showcasing critical best practice functionality in Toad, including CodeXpert, SQL Optimizer and Benchmark Factory.
* Raffling my books: O'Reilly Media generously provided books to raffle off to participants at each location. That wasn't the highlight, though it was certainly a great thing for those who won. What I liked most about the raffle is that we used PL/SQL technology to pick the winners! At first, I used this simple block of code to pick winners (we had a number forevery name):
BEGIN
DBMS_OUTPUT.put_line (ROUND (DBMS_RANDOM.VALUE (1, 70)));
END;
/
But that led to duplicates (randomly!) and also since there some no-shows at each event, I would have to run this block lots of times to give everything away. It was a bit clumsy. So I enhanced this simple block into a stored procedure with this header:
PROCEDURE pick_winners_randomly (
total_count_in IN PLS_INTEGER
, winner_count_in IN PLS_INTEGER
, ineligible_in IN VARCHAR2 DEFAULT NULL
, delimiter_in IN VARCHAR2 DEFAULT ','
)
With this procedure, I pass in the total number of attendees, the total number of possible winners (how many prizes we have), the list of ineligible numbers (those next to the names of people not in attendance) and delimiter for the inelgibile list. Then we could pick and immediately show all raffle winners in a matter of a second or two with a block like this:
BEGIN
pick_winners_randomly (50, 10, '4,22,27,33,47');
END;
If you would like to see the code for this handy program and possibly use it yourself, click here.
* I am now flying back and was lucky enough to get an upgrade. So I can work for 6+ hours on the way home! Very exciting. Really. Sadly, at this point in my life, I am SO busy and traveling so much, that I feel like I need to stay in my hotel room and order room service to minimize time spent on meals. And I try to fill every available chunk of time with typing on my laptop. Sigh....well, I have a great life and I chose to take on all the work I am doing. Anyway, I just learned something very interesting and useful: on American Airlines, odd numbered flights mean that the flight attendants ask Business Class passengers for their menu preferences from "aft to forward" - meaning if you don't eat meat, like me, then you want a seat towards the back so they won't have run out of fish or vegetarian meals. And on even-numbered flights, ask for a seat up towards the front. Now that's the sort of information I would rather not have be important in my life. But there you have it.
* My last day on the trip was spent in Copenhagen. We finished the morning seminar and lunch at 1 or so. After visiting the Quest offices nearby, I went out for a long walk, meandering through several really nice parks and ending up at the Statens Museum of Art. I've gotten tired of seeing paintings of crucifixions and little baby Jesus from the Middle Ages, but I always enjoy finding the relatively few modern paintings that affect me deeply. On the way back from the museum, I found the Assistens Kirkegard, an enormous cemetery containing the graves of many famous Danes, like Soren Kirkegard and Hans Christian Anderson. It is a truly beautiful, incredibly peaceful place. And that evening I visited the expansive Frederiksberg park. Most striking there were the raucous nesting birds - and I am talking big birds like herons. They made a LOT of noise and it was very fascinating. Photos: Copenhagen
* Another unusual and troubling site at the Frederiksberg park was this. As far as I could tell, it was used by parents to hang items that belonged to a child who had died, as a way of saying goodbye. Pretty darned spooky.
Oh and by the way, if you are looking for some entertaining ways to pass the time and still use your knowledge of PL/SQL, check out the brand new Toad Squared Flash game:
http://www.toadworld.com/LandingPages/ToadSquared/tabid/168/Default.aspx?qac=ToadSquaredBloggers
Some might find that exhausting, but I am a lucky fellow: my body and mind are not much affected by jet lag nor by many hotel changes. Plus, I try to stay very disciplined about exercising each day and eating lots of fruit and vegetables, avoiding meat. So I made it back home without getting sick, without getting tired, actually returning totally energized by my time in Europe, because....
I gave my latest best practice presentation, now titled Practical Best Programming, to a total of over 400 developers (with the single largest turnout - over 150! - taking place in Dusseldorf, at an event cosponsored by Quest Software, the German Oracle User Group, and Trivadis). You can download this presentation at:
http://oracleplsqlprogramming.com/PracticalBestPLSQL.html
How bad can a trip be when I spend a big chunk of it talking to lots of people who actually seem to want to hear what I have to say, laugh at lots of my jokes (so kind!), and show proper appreciation for my (Quest's) amazing new tool: Quest Code Tester for Oracle?
Can't be bad at all. Here are some highlights:
* First, the weather. It was sunny and warm, even hot, throughout. The downside of this fact is that I felt absolutely compelled to abandon my laptop and hotel room and go outside whenever possible to enjoy the real world.
* The Das Stadel and Modern Art (MMK) Museums in Frankfurt were very enjoyable. Lots of the art in the MMK was whimsical and amusing. Some of it seemed, well, ridiculous. Blobs of formless clay strewn about on the floor. Dates ( "12 OCT 1997") painted on small canvasses, filling a whole room. Not my cup of tea. But others...well....check out the photos: Frankfurt
* A lovely run along the Isar River in Munich, very close to the Hilton, where I stayed and presented. A very beautiful park, full of mothers and their children enjoying the outdoors, people riding bicycles....I wish that my legs and lungs were stronger so I could have covered more territory and breathed in even more of that clean air...photos: Munich
* Hotel breakfast buffets: while I am trying to lower the importance of food in my life (with the intention of reducing the quantity of food I ingest), I definitely take every possible opportunity to eat fresh fruit. Most business class hotels in Europe feature extensive breakfast buffets containing a wide variety of fresh fruit, yogurt, healthy cereals, fresh juices and so on. Eating fruit makes me feel great!
* My friends at Quest, in particular Daniela, Calle and Patrick. Daniela and Calle worked very hard to organize my week of events and she is clearly a professional - very organized, great attention to detail, strong commitment to carrying out the highest quality programs. Patrick, an SC, shared the agenda with me for three days, showcasing critical best practice functionality in Toad, including CodeXpert, SQL Optimizer and Benchmark Factory.
* Raffling my books: O'Reilly Media generously provided books to raffle off to participants at each location. That wasn't the highlight, though it was certainly a great thing for those who won. What I liked most about the raffle is that we used PL/SQL technology to pick the winners! At first, I used this simple block of code to pick winners (we had a number forevery name):
BEGIN
DBMS_OUTPUT.put_line (ROUND (DBMS_RANDOM.VALUE (1, 70)));
END;
/
But that led to duplicates (randomly!) and also since there some no-shows at each event, I would have to run this block lots of times to give everything away. It was a bit clumsy. So I enhanced this simple block into a stored procedure with this header:
PROCEDURE pick_winners_randomly (
total_count_in IN PLS_INTEGER
, winner_count_in IN PLS_INTEGER
, ineligible_in IN VARCHAR2 DEFAULT NULL
, delimiter_in IN VARCHAR2 DEFAULT ','
)
With this procedure, I pass in the total number of attendees, the total number of possible winners (how many prizes we have), the list of ineligible numbers (those next to the names of people not in attendance) and delimiter for the inelgibile list. Then we could pick and immediately show all raffle winners in a matter of a second or two with a block like this:
BEGIN
pick_winners_randomly (50, 10, '4,22,27,33,47');
END;
If you would like to see the code for this handy program and possibly use it yourself, click here.
* I am now flying back and was lucky enough to get an upgrade. So I can work for 6+ hours on the way home! Very exciting. Really. Sadly, at this point in my life, I am SO busy and traveling so much, that I feel like I need to stay in my hotel room and order room service to minimize time spent on meals. And I try to fill every available chunk of time with typing on my laptop. Sigh....well, I have a great life and I chose to take on all the work I am doing. Anyway, I just learned something very interesting and useful: on American Airlines, odd numbered flights mean that the flight attendants ask Business Class passengers for their menu preferences from "aft to forward" - meaning if you don't eat meat, like me, then you want a seat towards the back so they won't have run out of fish or vegetarian meals. And on even-numbered flights, ask for a seat up towards the front. Now that's the sort of information I would rather not have be important in my life. But there you have it.
* My last day on the trip was spent in Copenhagen. We finished the morning seminar and lunch at 1 or so. After visiting the Quest offices nearby, I went out for a long walk, meandering through several really nice parks and ending up at the Statens Museum of Art. I've gotten tired of seeing paintings of crucifixions and little baby Jesus from the Middle Ages, but I always enjoy finding the relatively few modern paintings that affect me deeply. On the way back from the museum, I found the Assistens Kirkegard, an enormous cemetery containing the graves of many famous Danes, like Soren Kirkegard and Hans Christian Anderson. It is a truly beautiful, incredibly peaceful place. And that evening I visited the expansive Frederiksberg park. Most striking there were the raucous nesting birds - and I am talking big birds like herons. They made a LOT of noise and it was very fascinating. Photos: Copenhagen
* Another unusual and troubling site at the Frederiksberg park was this
Oh and by the way, if you are looking for some entertaining ways to pass the time and still use your knowledge of PL/SQL, check out the brand new Toad Squared Flash game:
http://www.toadworld.com/LandingPages/ToadSquared/tabid/168/Default.aspx?qac=ToadSquaredBloggers
Sunday, May 27, 2007
Google's goal to organise your daily life
As I traversed Germany this past week (more on that in my next blog entry), I came across an article in the Financial Times (May 23) with the title:
Google's goal to organise your daily life
I found the lead paragraph quite alarming:
"Google's ambition to maximise the personal information it holds on users is so great that the search engine envisages a day when it can tell people what jobs to take and how they might spend their days off."
Someday, according to Eric Schmidt, Google CEO, we could head over to Google for answers to the question: "What shall I do tomorrow?"
Does that sound good to you? Frankly, I find it a bit terrifying.
My feeling is that one of the biggest problems facing humanity today is that so many people have abandoned critical, self-aware thinking. Instead, they absorb hours of high-bandwidth programming in the form of ads, sponsored links, pop-ups, and brand-saturated television and movies. They rely on the narrowest sources of information conceivable to "educate" them about what is going on in the world (and they are getting narrower and more focused and directed all the time).
And they, we, all of us, are completely overwhelmed by data. We have more "information" available to us than ever before, but it is not making us better-informed or more sophisticated in our thinking. Instead, we act more and more like sheep, being led about with gentle prodding and the occasional nip at our heels. We voluntarily give up our privacy in the form of personal information, in search of a "free" search engine or a "free" video or a "great deal" on another electronic gadget.
Every step along the way, we come closer and closer to the ideal world -- for corporations and marketers, that is. A world in which our every move is closely tracked (voluntarily) and our every purchase is driven by, virtually determined by, tightly-beamed messages that enter our brains through ever "richer" formats (amazing graphics, extraordinary resolution, fantastic sound) that are impossible to ignore (we are wired that way).
And so at some point, when we need to decide what our next job should be, we will ask Google what we should do. Hell, by that time, Google will probably wake us up at 7 AM Monday morning and tell us: "You are dissatisfied with your job. It's time to move on. And Coca Cola is offering some fantastic positions for people just like you!"
Not interested?
Then opt out from the Eyeball Economy: Don't click on any sponsored links. Don't click on pop-ups. Don't give up any personal information and take every opportunity to turn off a company's gathering of your data. Seek out varied sources of information (check out thenation.com - that should give you a different perspective on life and politics in the US and around the world).
AND TURN OFF THE TELEVISION! Don't watch commercial TV. I think that television is much too powerful, compelling and addictive -- we are hard-wired genetically to respond to and be drawn to human voices speaking to us, to react to moving images that closely resemble the real world. We really can't turn away from the tube once it is blaring into our faces. Best to stay away.
Instead, go out and do something instead: exercise, walk around the nearest park, visit your public library (one of the most precious resources any free society has to offer and support), hang out with friends, play board games, discuss politics instead of sports and weather (ask yourselves: why did we, the citizens of the "greatest democracy on earth" let George Bush steal two presidential elections - Florida in 2000 and Ohio in 2004? That should be good for an hour of two of animated talk).
So much to do, so little time to watch.
Google's goal to organise your daily life
I found the lead paragraph quite alarming:
"Google's ambition to maximise the personal information it holds on users is so great that the search engine envisages a day when it can tell people what jobs to take and how they might spend their days off."
Someday, according to Eric Schmidt, Google CEO, we could head over to Google for answers to the question: "What shall I do tomorrow?"
Does that sound good to you? Frankly, I find it a bit terrifying.
My feeling is that one of the biggest problems facing humanity today is that so many people have abandoned critical, self-aware thinking. Instead, they absorb hours of high-bandwidth programming in the form of ads, sponsored links, pop-ups, and brand-saturated television and movies. They rely on the narrowest sources of information conceivable to "educate" them about what is going on in the world (and they are getting narrower and more focused and directed all the time).
And they, we, all of us, are completely overwhelmed by data. We have more "information" available to us than ever before, but it is not making us better-informed or more sophisticated in our thinking. Instead, we act more and more like sheep, being led about with gentle prodding and the occasional nip at our heels. We voluntarily give up our privacy in the form of personal information, in search of a "free" search engine or a "free" video or a "great deal" on another electronic gadget.
Every step along the way, we come closer and closer to the ideal world -- for corporations and marketers, that is. A world in which our every move is closely tracked (voluntarily) and our every purchase is driven by, virtually determined by, tightly-beamed messages that enter our brains through ever "richer" formats (amazing graphics, extraordinary resolution, fantastic sound) that are impossible to ignore (we are wired that way).
And so at some point, when we need to decide what our next job should be, we will ask Google what we should do. Hell, by that time, Google will probably wake us up at 7 AM Monday morning and tell us: "You are dissatisfied with your job. It's time to move on. And Coca Cola is offering some fantastic positions for people just like you!"
Not interested?
Then opt out from the Eyeball Economy: Don't click on any sponsored links. Don't click on pop-ups. Don't give up any personal information and take every opportunity to turn off a company's gathering of your data. Seek out varied sources of information (check out thenation.com - that should give you a different perspective on life and politics in the US and around the world).
AND TURN OFF THE TELEVISION! Don't watch commercial TV. I think that television is much too powerful, compelling and addictive -- we are hard-wired genetically to respond to and be drawn to human voices speaking to us, to react to moving images that closely resemble the real world. We really can't turn away from the tube once it is blaring into our faces. Best to stay away.
Instead, go out and do something instead: exercise, walk around the nearest park, visit your public library (one of the most precious resources any free society has to offer and support), hang out with friends, play board games, discuss politics instead of sports and weather (ask yourselves: why did we, the citizens of the "greatest democracy on earth" let George Bush steal two presidential elections - Florida in 2000 and Ohio in 2004? That should be good for an hour of two of animated talk).
So much to do, so little time to watch.
Lots of photos for your viewing pleasure....
I finally got around to loading up photos on Flickr from my recent international trips, so if you would like to see what catches my eye as I travel, here are some links:
Buenos Aires
Bogota
Medellin
Frankfurt
Munich
Copenhagen
Enjoy!
Buenos Aires
Bogota
Medellin
Frankfurt
Munich
Copenhagen
Enjoy!
Sunday, May 13, 2007
Where in the world was Steven Feuertein?
I have decided to keep track of the places I've visited around the world, focusing primarily on those locations outside the United States.
On the one hand, I have no reason to think anyone but me would be interested.
On the other hand, I realize that the fact that I have been able to see so much of the world (and there is so much more to see) is a privilege that most others can never experience. I want to honor and acknowledge that privilege by publishing my WITWWSF.
You can see it here. Enjoy!
On the one hand, I have no reason to think anyone but me would be interested.
On the other hand, I realize that the fact that I have been able to see so much of the world (and there is so much more to see) is a privilege that most others can never experience. I want to honor and acknowledge that privilege by publishing my WITWWSF.
You can see it here. Enjoy!
An Ode to Oscillococcinum
Oscillococcinum - a strange name for a very wonderful medicine!
I just spent a week in Latin America, performing (it does seem these days that I perform as much I inform) Best Practice seminars organized by Quest Software and its partners in Buenos Aires, Bogota and Medellin.
On Friday, two hours before my talk in Medellin, I came down with flu symptoms: bad headache, every inch of my skin sensitive to the touch and painful, very tired. This was bad news. I had a three hour talk to do.
Fortunately, I was carrying a dose of Oscillococcinum in my bag for just this situation. I quickly poured the first dose of a hundred tiny white pills under my tongue.
It didn't help me over the next few hours; it doesn't take effect that quickly, but afte taking the other two doses over the rest of the day, I woke up Saturday morning at 4:30 AM ready to head to the airport and home, completely free of flu symptoms.
Oscillococcinum had done it again, for me! Incredible....
Oscillococcinum is a homeopathic remedy made by Boiron. It is incredibly effective and the fact that you probably don't know about it says a lot about the power of the pharmaceutical industry.
I urge you to find Oscillococcinum at your nearest natural food store and stock up. Also, visit your nearest drugstore (CVS, Walgreens, etc.) and if they do not carry Oscillococcinum, ask them to do so.
I just spent a week in Latin America, performing (it does seem these days that I perform as much I inform) Best Practice seminars organized by Quest Software and its partners in Buenos Aires, Bogota and Medellin.
On Friday, two hours before my talk in Medellin, I came down with flu symptoms: bad headache, every inch of my skin sensitive to the touch and painful, very tired. This was bad news. I had a three hour talk to do.
Fortunately, I was carrying a dose of Oscillococcinum in my bag for just this situation. I quickly poured the first dose of a hundred tiny white pills under my tongue.
It didn't help me over the next few hours; it doesn't take effect that quickly, but afte taking the other two doses over the rest of the day, I woke up Saturday morning at 4:30 AM ready to head to the airport and home, completely free of flu symptoms.
Oscillococcinum had done it again, for me! Incredible....
Oscillococcinum is a homeopathic remedy made by Boiron. It is incredibly effective and the fact that you probably don't know about it says a lot about the power of the pharmaceutical industry.
I urge you to find Oscillococcinum at your nearest natural food store and stock up. Also, visit your nearest drugstore (CVS, Walgreens, etc.) and if they do not carry Oscillococcinum, ask them to do so.
When AP is the enemy, who is our friend?
AP = Associated Press
AP is one of the major news content providers to newspapers, websites, etc.
In April 2007, Tom Curley, AP president and CEO, said this about reporting in Iraq, and particularly the Anbar province: "It is about the Associated Press. We are the target. Freedom of the press is the target....There has been an extreme effort to shut down coverage from an out-of-control place. That is what the facts show.”
I read this quote in today's Sunday Tribune's column by Clarence Page, Held without charges.
Page informs us that two journalists, including Bulil Hussein of AP, have been detained and held without charges, by the US military. In the case of Hussein, AP has thoroughly investigated his activity in Iraq and can find no evidence to back up even the vague speculations made public by the Pentagon regarding Hussein.
If people like the CEO of Associated Press, must now openly declare that he and his company are the targets of the US government and military, we are in a very bad, very dark moment in our history.
And it is going to get darker and worse, unless U.S. citizens find their voices and do more than elect a Democrat in 2008.
Our nation is not perfect. But it is surely one of the best efforts to create a society of humans in which the rule of law holds sway over the actions of its individual members. That rule of law establishes the foundation for our democracy (also very imperfect), and it is something of which we should all be proud.
George Bush and Dick Cheney trample on those laws and undermine our democracy. They lie to us and barely even bother to cover for those lies. They hand over billions of our tax dollars to their friends in companies like Halliburton and Blackwater, even as those companies provide the most corrupted, degraded services in exchange for those funds.
And we let it happen. Well, I don't know that there's much I can do about it, but I will state publicly and add my name to whatever efforts are going on towards this end:
George Bush and Dick Cheney should both be impeached. They should be removed from office as quickly as possible. Indictments should be brought against them, and they should be arrested for their crimes.
Impeach Bush
Impeach Cheney
AP is one of the major news content providers to newspapers, websites, etc.
In April 2007, Tom Curley, AP president and CEO, said this about reporting in Iraq, and particularly the Anbar province: "It is about the Associated Press. We are the target. Freedom of the press is the target....There has been an extreme effort to shut down coverage from an out-of-control place. That is what the facts show.”
I read this quote in today's Sunday Tribune's column by Clarence Page, Held without charges.
Page informs us that two journalists, including Bulil Hussein of AP, have been detained and held without charges, by the US military. In the case of Hussein, AP has thoroughly investigated his activity in Iraq and can find no evidence to back up even the vague speculations made public by the Pentagon regarding Hussein.
If people like the CEO of Associated Press, must now openly declare that he and his company are the targets of the US government and military, we are in a very bad, very dark moment in our history.
And it is going to get darker and worse, unless U.S. citizens find their voices and do more than elect a Democrat in 2008.
Our nation is not perfect. But it is surely one of the best efforts to create a society of humans in which the rule of law holds sway over the actions of its individual members. That rule of law establishes the foundation for our democracy (also very imperfect), and it is something of which we should all be proud.
George Bush and Dick Cheney trample on those laws and undermine our democracy. They lie to us and barely even bother to cover for those lies. They hand over billions of our tax dollars to their friends in companies like Halliburton and Blackwater, even as those companies provide the most corrupted, degraded services in exchange for those funds.
And we let it happen. Well, I don't know that there's much I can do about it, but I will state publicly and add my name to whatever efforts are going on towards this end:
George Bush and Dick Cheney should both be impeached. They should be removed from office as quickly as possible. Indictments should be brought against them, and they should be arrested for their crimes.
Impeach Bush
Impeach Cheney
Saturday, May 05, 2007
$100M worth of sand?
I can still remember many years ago when, after I sat through a "blockbuster" (and quite dull) Schwarznegger movie with an enormous budget, I vowed not to go to the theaters to watch any movie with a budget of $100 milllion and higher. Talk about ridiculous uses for so much money!
So when I read the following juicy details about the special effects in Spiderman 3, well, I felt a little bit ill:
http://www.wired.com/wired/archive/15.05/pl_screen_p78.html
Blockbuster season's most expensive movie star isn't a clean-cut actor. It's a pile of sand. It took a 30-person f/x team two years of CG-heavy lifting to crank out Thomas Haden Church's villainous Sandman. The laborious supporting character is also rumored to be a big reason Spider-Man 3 ran an estimated $100 million over its original $200 million budget. "This isn't just an effect like a twister or a tidal wave," says Scott Stokdyk, visual f/x supervisor. "Because it's a character, each particle of sandpile has to roll and have a direction and a target and start forming in and be part of a flow that forms into a volumetric shape." The illusion meant a crash course in developing software simulators that made sand behave like a fluid or a gas one instant and a sack of tiny marbles the next. Sand supervisor Doug Bloom says: "We did six years of R&D in two years. We honestly started the project not knowing how we'd be able to finish it." But will Spidey 3 hit box office pay dirt? Only time will tell.
They spend $100M just on getting the special effects right for the Sandman villain? What the hell is wrong with them, and wrong with us, with humans, that we would tolerate such a disgusting expenditure of money at a time when there is so much pain, so much need?
I know, I am such a whiner. Fine. Whiner, I will be. I will not see Spiderman 3 in the theaters. Maybe I will bother to watch it someday on an airplane, or at home.
So when I read the following juicy details about the special effects in Spiderman 3, well, I felt a little bit ill:
http://www.wired.com/wired/archive/15.05/pl_screen_p78.html
Blockbuster season's most expensive movie star isn't a clean-cut actor. It's a pile of sand. It took a 30-person f/x team two years of CG-heavy lifting to crank out Thomas Haden Church's villainous Sandman. The laborious supporting character is also rumored to be a big reason Spider-Man 3 ran an estimated $100 million over its original $200 million budget. "This isn't just an effect like a twister or a tidal wave," says Scott Stokdyk, visual f/x supervisor. "Because it's a character, each particle of sandpile has to roll and have a direction and a target and start forming in and be part of a flow that forms into a volumetric shape." The illusion meant a crash course in developing software simulators that made sand behave like a fluid or a gas one instant and a sack of tiny marbles the next. Sand supervisor Doug Bloom says: "We did six years of R&D in two years. We honestly started the project not knowing how we'd be able to finish it." But will Spidey 3 hit box office pay dirt? Only time will tell.
They spend $100M just on getting the special effects right for the Sandman villain? What the hell is wrong with them, and wrong with us, with humans, that we would tolerate such a disgusting expenditure of money at a time when there is so much pain, so much need?
I know, I am such a whiner. Fine. Whiner, I will be. I will not see Spiderman 3 in the theaters. Maybe I will bother to watch it someday on an airplane, or at home.
Thursday, May 03, 2007
What is wrong with this picture?
Wednesday, May 02, 2007
Quseful #2: The String Tracker Package
What's the point?
Sometimes you need to be able keep track of strings (names of some sort, usually) that you have used, so you do not use them again. I ran into this need, in fact, when I was building some backend code for Quest Code Tester for Oracle. We generate test code (a PL/SQL package) for the tests you described through the UI. That generated code includes declarations of variables. I can't declare a variable with the same name more than once. So I need to remember what I previously declared. To do that I built the qu_used package, which evolved into the string_tracker package.
The package requires Oracle Database 9i Release 2 and above, since it takes advantage of string-indexed collections. It is, I believe, an excellent demonstration of the elegance possible in one's code through the use of this structure.
I hope you can get as much value out of this package as I have.
Show me the code!
Sorry, rather than show you all the code here (very clumsy), I offer the source code and any supporting files in this zip file.
You can also download my entire "demo zip", containing all the scripts and reusable code that are part of my regular trainings. The zip for this Quseful is inside that zip as well.
Here are the files in the Quseful2.zip:
string_tracker3.pks - the lastest and greatest specification of the string_tracker package
string_tracker3.pkb - the lastest and greatest body of the string_tracker package
string_tracker.sql - a demonstration of using this code (also found below)
q##STRING_TRACKER.qut - a Quest Code Tester export of the test definition I built to veirfy that string_tracker works. You can import this into an installation of Code Tester and confirm for yourself that string_tracker works as advertised.
How do I use it?
The package contains several programs:
string_tracker.clear_all_lists Deletes all lists you may have defined in string_tracker in your session.
string_tracker.clear_list Deletes just the list specified in the call to clear_list.
string_tracker.create_list Creates a new list. Provide the name of the list, whether or not you want the strings in the list to be case-sensitive, and if you want to overwrite a list that already exists with this name.
string_tracker.mark_as_used Mark the specified string as "used" in the specified list.
string_tracker.string_in_use If the specified string is currently "used" in the specified list, return TRUE. Otherwise, return FALSE.
Examples
Here is an example of using string_tracker that mimics my own actual application of this package inside Code Tester.
I have a collection of outcomes (the tests I will perform after I test is run). For each outcome, I need to declare a local variable to hold the data. Since I can create more than one outcome for a particular OUT argument, I must be sure to avoid duplicate declarations.
Gotchas
Keep the following in mind:
I'd love to hear what you think of this utility and, in particular, if you found it useful. So please don't hesitate to post a comment on this blog or send me a note at steven@stevenfeuerstein.com.
About Qusefuls
A Quseful is a Quick and Useful (as opposed to Quick and Dirty) tip on now to write programs in the Oracle PL/SQL language more effectively. I will publish Qusefuls on my blog (feuerthoughts.blogspot.com) on a regular basis. Each Quseful contains a description of the tip ("What's the point?"), some PL/SQL code you can install in your environment to implement the tip ("Show me the code!"), an example of how to use the code to help you get your job done ("How do I use it?").
Sometimes you need to be able keep track of strings (names of some sort, usually) that you have used, so you do not use them again. I ran into this need, in fact, when I was building some backend code for Quest Code Tester for Oracle. We generate test code (a PL/SQL package) for the tests you described through the UI. That generated code includes declarations of variables. I can't declare a variable with the same name more than once. So I need to remember what I previously declared. To do that I built the qu_used package, which evolved into the string_tracker package.
The package requires Oracle Database 9i Release 2 and above, since it takes advantage of string-indexed collections. It is, I believe, an excellent demonstration of the elegance possible in one's code through the use of this structure.
I hope you can get as much value out of this package as I have.
Show me the code!
Sorry, rather than show you all the code here (very clumsy), I offer the source code and any supporting files in this zip file.
You can also download my entire "demo zip", containing all the scripts and reusable code that are part of my regular trainings. The zip for this Quseful is inside that zip as well.
Here are the files in the Quseful2.zip:
string_tracker3.pks - the lastest and greatest specification of the string_tracker package
string_tracker3.pkb - the lastest and greatest body of the string_tracker package
string_tracker.sql - a demonstration of using this code (also found below)
q##STRING_TRACKER.qut - a Quest Code Tester export of the test definition I built to veirfy that string_tracker works. You can import this into an installation of Code Tester and confirm for yourself that string_tracker works as advertised.
How do I use it?
The package contains several programs:
string_tracker.clear_all_lists Deletes all lists you may have defined in string_tracker in your session.
string_tracker.clear_list Deletes just the list specified in the call to clear_list.
string_tracker.create_list Creates a new list. Provide the name of the list, whether or not you want the strings in the list to be case-sensitive, and if you want to overwrite a list that already exists with this name.
string_tracker.mark_as_used Mark the specified string as "used" in the specified list.
string_tracker.string_in_use If the specified string is currently "used" in the specified list, return TRUE. Otherwise, return FALSE.
Examples
Here is an example of using string_tracker that mimics my own actual application of this package inside Code Tester.
I have a collection of outcomes (the tests I will perform after I test is run). For each outcome, I need to declare a local variable to hold the data. Since I can create more than one outcome for a particular OUT argument, I must be sure to avoid duplicate declarations.
DECLARE
/* Create a constant with the list name to avoid multiple,
hard-coded references. Notice the use of the subtype
declared in the string_tracker package to declare the
list name. */
c_list_name CONSTANT string_tracker.list_name_t := 'outcomes';
/* QCGU: A collection based on a %ROWTYPE associative array type */
l_outcomes qu_outcome_tp.qu_outcome_tc;
BEGIN
/* Create the list, wiping out anything that was there before. */
string_tracker.create_list (list_name_in => c_list_name
, case_sensitive_in => FALSE
, overwite_in => TRUE
);
/* QCGU: get all the outcome rows for the specified test case. */
l_outcomes := qu_outcome_qp.ar_fk_outcome_case (l_my_test_case);
/* For each outcome... */
FOR indx IN 1 .. l_outcomes.COUNT
LOOP
/* IF the string has not already been used... */
IF NOT string_tracker.string_in_use (c_list_name
, l_outcomes (indx).variable_name
)
THEN
/* Add the declaration to the test package. */
generate_declaration (l_outcomes (indx));
/* Make sure I don't generate duplicate declarations. */
string_tracker.mark_as_used (c_list_name
, l_outcomes (indx).variable_name
);
END IF;
END LOOP;
/* Clean up! */
string_tracker.clear_list (c_list_name);
END;
Gotchas
Keep the following in mind:
- With string_tracker, you can keep track of multiple (approximately 4.3 billion) of lists of used strings. Each list may contain approximately 4.3 billion strings in it.
- These lists only persist for the duration of your session (they are stored in package variables), and they consume PGA memory.
- The package requires Oracle Database 9i Release 2 and above, since it takes advantage of string-indexed collections.
I'd love to hear what you think of this utility and, in particular, if you found it useful. So please don't hesitate to post a comment on this blog or send me a note at steven@stevenfeuerstein.com.
About Qusefuls
A Quseful is a Quick and Useful (as opposed to Quick and Dirty) tip on now to write programs in the Oracle PL/SQL language more effectively. I will publish Qusefuls on my blog (feuerthoughts.blogspot.com) on a regular basis. Each Quseful contains a description of the tip ("What's the point?"), some PL/SQL code you can install in your environment to implement the tip ("Show me the code!"), an example of how to use the code to help you get your job done ("How do I use it?").
Subscribe to:
Posts (Atom)
