Tuesday, October 31, 2006

This site owes me a new monitor!

Because I destroyed one spraying coffee all over it when I read this posting.

I laughed out loud at it at first, and then got really sad.  Sad - because it is so very very true.  Silly stuff like that is done every day, all of the time, over and over.

At Oracle Open World this year, I did a tongue in cheek talk on "Database Worst Practices".  One of the slides was simply:


Probably... Indeed.  I quit my first job after six years because of this "let us reinvent everything" syndrome.  I was the technical lead and had people working on tasks like:

  • Implement two phase commit generically
  • Write a database independent stored procedure language compiler/runtime engine
  • Write a SQL 89 query parser
  • Develop a distributed query optimizer

It was nuts - here I was reading the Oracle 7.0 documentation which described all of the above.  We had already purchased the technology - but we had to be "database independent".  That made me walk.  Interesting side note: I didn't walk straight to Oracle, I actually had another job all lined up, it was pure serendipity that brought me to Oracle by accident in August 1993.

I followed that slide up with the reasons you "probably" should reinvent the wheel:



Using builtin functionality will not demonstrate to your manager how good of a coder you are!  So true isn't it?

The builtin stuff only does 99.99% of what you specified, it is deficient, you have to code it yourself.

Absolutely - so true (not).

But it is done all of the time, every day, constantly.  And when the developer (who is only 1/4th the way through the implementation) is told "hey, it already does that" - do they stop?  No, not a chance - for you see, you have the time already invested, it would be such a waste to just discard it wouldn't it?

Drives me nuts...

Monday, October 30, 2006

SQL Developer...

Sue Harper has a nice blog entry about the SQL Developer exchange.  A site that frankly I was not aware of till I read her blog.

Very nice idea, tell them what you want.  Vote on them.  Check it out!

Sunday, October 29, 2006


Or as he is likely to say in his talks "cunning".  Jonathan Lewis finally gets with the program.

I must now go about finding a true blogroll site to manage my subscriptions - too many to update anymore.

Saturday, October 28, 2006

Back home...

After a long week at OOW.  The conference was pretty good I thought - even though there were lots of people there, I didn't see any huge masses of people getting stuck in crowds.  Since they spread it all over - at the Hilton, Marriott, all of Moscone, the Argent hotel and maybe even some others - there was plenty of space.  It was tiring though.

Anyway, picked up a couple of links over the week and thought I'd point them out now.  The first is from Dave Taylor who writes "When did conference attendees become so rude?"  I gave three talks at OOW - to fairly large audiences, and I have to say I found what he says there to be true.  In each and every one - at least one cell phone went off.  It is very distracting.  I've been in the audience when people let their phone ring audibly and then they sit there and actually take the call.  Just turn them off please.

Next was "Just say not to XML"! Hear hear.  I've never even considered thinking that XML is a programming language - it is a markup thing.  Using it as a programming language just seems bizarre.  I liked the list of things the author feels developers need to have mastered:

This list includes a deep understanding of data structures and key algorithms, a little math (set theory, logic, a little statistics), mastery of analysis-and-design techniques, both process (e.g., RUP or XP) and structure (e.g., design patterns), and database structure and use (e.g., SQL). You also need to know how the hardware works.

Comes down to understanding lots of things.  I liked the reference to "a little math" and "database structures".  Many people would skip those as pre-requisites. 

And lastly - 36 Humorous Methods of Proof.  I liked them all but these stood out as "brilliant"

  • Proof by Obviousness: the proof is so clear that it need not be mentioned
  • Proof by Imagination: Well, we'll pretend it is true...
  • Proof by Convenience: It would be very nice if it were true, so...

Oh, never mind, I'll end up just copying the entire list :)  Ok, one more:

  • Proof by Tautology: it's true because it's true

Thursday, October 26, 2006

Podcast and a quick video...

They just released a podcast I did last night at OOW - check it out here (ctl-f for kyte).

And Eddie Awad video'ed a small bit of my keynote from Tuesday morning, you can see it here.

Wednesday, October 25, 2006

Search Terms...

I use http://www.statcounter.com/ to track traffic to this blog.  One of the things they track for me are the search terms people used on google.com or whatever to find my page.  Sometimes they are interesting to read, here are some recent ones (none of these are made up, simple cut and pastes...)

Now, not all of them were so "innocent" of course, funny though (I am the #1 hit for all of these):

Good thing "tom kyte is not paranoid" :)

Anyway, almost done with day 3 of OOW - did two customer events so for this day.  Just waiting to record a podcast interview with Tom Haunert of Oracle Magazine then I'm done for the day.  Yesterday my first talk was at 7:30am, this morning at 8:30am - and staying out at a hotel so so far away meant early trips downtown.  At least tomorrow, I don't have to be on site until 10:30am for my "meet and greet" session.

And if you missed my "Database Worst Practices" on Monday and wanted to see it - I'll be redoing it Thursday afternoon at 2pm in 308 Moscone South.

OOW Tuesday...

Long day...  Started at 7:30am with a customer breakfast (they got to eat, I got to talk).  Then off to the Oracle Develop conference to do the keynote for the morning.  It was scary watching this room fill up:


It sat a lot more than the room yesterday - and it filled.  It went rather well I thought though.  A short 45 minute talk - timed it almost perfectly (went over by about 1.5 minutes - not too bad).  Then it was off to a customer site for the afternoon.  Did not get to see too much of the conference - but should be able to get some in tomorrow.

Get to sleep in - don't have to be downtown until about 8am, so can sleep till at least 6am tomorrow :)

They are doing a repeat of my Monday presentation on Thursday - so if you are at the conference and didn't get to see it, it'll be at 2pm on Thursday in 308 Moscone South - see you there.

Tuesday, October 24, 2006

Monday at OOW

Busy day today... Went to the initial keynotes and because I thought my meet and greet was at 11:30, not 11:00 (as it was) I showed up late.  It worked out OK though as we stayed for an extra half hour till 12:00 and everyone stayed.  It was a good event, lots of questions and I appreciate Tim Hall being there on time (really, I'm never late, this is the first time in forever I can remember messing up the timing like that!)

Later, I had my first talk.  It was nerve wracking watching the room go from this:


to this:


but I wasn't really nervous until this guy came in:


Ken Jacobs - aka "Dr DBA".  I had to make him part of the presentation and quickly did - from the very first slide.  He was instrumental in founding the division I work in and I've known him for a long long time.  When I got a question on asktom once about "why is dual named dual?" he was the only one that could help get the true answer! (although as I look back at that thread, I really like the answer I gave to the next 'review' - "I will never talk to you again" :)

Anyway, full room, lots of chuckles (when I expected them, not during any of the serious parts...) - all in all, I thought it worked out OK.

Tomorrow, another busy one - it'll slow down by Thursday.  Sort of glad I'm staying way off the beaten path.  Makes me get to the hotel early at night and into bed at a reasonable hour.

Monday, October 23, 2006

A new blog to check out...

Kevin Closson - once sort of an Oracle insider (Sequent porting team), now back doing hardware plus software related stuff outside of Oracle.  I think you'll find it interesting - it'll have lots of stuff about "disk" I believe.

Hope he doesn't burn out - looks like he wrote a lot on his very first time out.

First day at OOW

Just finished the first day at Oracle Open World.  Got in around noon local time (got up early for my flight from the east coast).  Went downtown to register and was greeted by the tent:

Coming to OOW

I don't drive in San Francisco everyday (never really) so I don't know how much of a hassle closing the street is - but it will make for a better conference (spent much time waiting for the lights before - now we don't have too...).

Anyway, after registering I was walking down the street.  A group was taking  a photo and upon seeing a lone person walking - asked me to take their picture.  I obliged.  I had to laugh when they saw my name tag - and knew me.  That was fun - they were pleased to have their photo taken by "me" (which is a bit strange, but fun).

After meeting with some people, I had a bit of time to kill - walked around China Town for a while:

China Town

All of the times I've been to San Francisco - never took the time to walk there - very nice/interesting.  Spent about an hour walking around until it was time for the Oracle ACE dinner, there I met up with Mark Rittman and Tim Hall (Oracle ace of the year he is!):

Mark Rittman, Tim Hall (ace of the year!)

The Oracle ACE of the year is on the right, Mark Rittman on the left,  can you tell?

There were many "luminaries" there - including this pair (Bryn Llewellyn - owns PLSQL, Steven Feuerstein - known to know how to write PLSQL).  You should not draw any conclusions about the effects of lots of PLSQL coding and hair from this picture!  I am sure it is entirely coincidence...

Steven and Bryn

Anyway - tomorrow kicks off with keynotes and then much work.  I'll check in sometime during the day to give a quick update...

Saturday, October 21, 2006

Off to OOW...

I'm off to Oracle Open World early tomorrow morning for the week.  I have a rather hectic schedule this year with two talks, two "meet and greet" sessions, a podcast interview, six customer talks/presentations, various group meals (like the ACE Dinner and maybe the blogger get together if I get back from a customer dinner early enough).

Add to that the fact that I'm book into a hotel at the SFO airport about 13.5 miles away - and that some of the events I have start at 7:30am downtown and finish at or after 9pm, it'll be a long long week.

Plus, I plan on putting an entry or two here with some photos over the week (and yes, still monitor asktom of course...)

At least it is only one hotel - that always makes it nice.  When you have to go from hotel to hotel every day - packing every morning and trying to keep the clean from the dirty - that can be a pain.

Friday will be good - spend the day on a plane, get home in time for dinner.  Looking forward to next weekend already...

Wednesday, October 18, 2006

Slow by Slow...

Was reading the "theDailyWTF" site - and saw Alex going on about slow by slow processing (in a sqlserver database no less).  Really hits home - I see it all of the time.

Why do people feel compelled to write code like:

for x in (select * from t1)
insert into t2 (c1,...) values (x.c1,...);
end loop;

Instead of just "insert select".  I'll never ever understand it.  Just last week on asktom - a similar thread came up.  The "boss" wanted the developer to not use a single SQL statement to process data, but loops of loops (a do it yourself nested loop join!!!).

I was working with a customer who was seriously considering moving to another database because "Oracle was slow".  So, I asked for a chance to see if we couldn't speed things up.  I was given some of their code - it looked like this:

insert into t ( empno, effective_date, .... )
select empno, effective_date, ....
from t1, t2, t3, t4, ...
where ....;

delete from t
where (empno, effective_date) in
(select empno, min(effective_date)
from t
group by empno
having count(1) > 1);
exit when sql%rowcount = 0;
end loop;

Now, do you see any problems with that?  This was a data warehouse - big table.  Basically the logic was to try to "keep the most recent employee record".  How did they do that?  They got ALL employee records (filling the table up) and then removed bit by bit the ones they did not want.  Assume every employee had at least two historical records - you would have a table that is half empty after the first pass (most had more than one!) and not only that, but you would constantly full scan the table T over and over until you found no records to remove (just one employee with 100 records - you loop 101 times).

Further, I explained that not only does it remove the "old" records - if two records existed for some employee on the newest date - both of them would disappear (no records for that employee).  They said "no way, that isn't what that code does" - had to prove it to them (just put in two records with the same empno/effective_date and run the loop - bamm - they both go away).

I rewrote the code as follows:

 insert into t ( empno, effective_date, .... )
select empno, effective_date, ......
( select empno, effective_date, .... ,
max(effective_date) OVER ( partition by empno ) max_edate
--count(effective_date) OVER ( partition by empno, effective_date ) cnt
from t1, t2, t3, t4, ....
where .... )
where effective_date = max_edate
--and cnt = 1;

We added the comments to the COUNT check after determining that it was a bug in their code.  This insert as select ran faster than their insert did (far far far fewer records to insert), resulted in a table with no "whitespace" (which was nice for their data warehouse and subsequent full scan queries!). And the delete loop - it was gone

Turns out Oracle wasn't slow, the hired consultants wrote slow code.  Anyone can write slow code :)

My mantra, that I'll be sticking with thank you very much, is:

  • You should do it in a single SQL statement if at all possible.

  • If you cannot do it in a single SQL Statement, then do it in PL/SQL.

  • If you cannot do it in PL/SQL, try a Java Stored Procedure.

  • If you cannot do it in Java, do it in a C external procedure.

  • If you cannot do it in a C external routine, you might want to seriously think about why it is you need to do it…

think in sets...

learn all there is to learn about SQL...

Analytics rock and roll...

Tuesday, October 17, 2006

I can relate...

To this dilbert.blog entry...

It is a little nuts at the "security" line sometimes.  Last week I was flying from Boston to Augusta ME (only took me 7 hours! And they did not even charge me extra).  I went through security without a hitch (no gels, no liquids of any sort) taking my carry on suitcase and backpack right through security.

Then I realized I had no cash and the taxi's in Augusta ME, well, they are not "state of the art" if you know what I mean (the name of the cab company is Al's Taxi - sometimes Al in his own Taxi picks you up).  So, I looked around for a cash machine - none to be found.  I knew there were some down by baggage claim though and since my flight was so delayed - I had plenty of time.

So out I went, downstairs, get money, get back into the security line.

This time - my bag (which had not been opened or touched really since last time through) was pulled.  Apparently there was a suspicious looking "something" in there.  So they started going through it (this was the last night of a week long trip, nothing like digging through someone's dirty laundry).  Couldn't find anything.  I mentioned that "last time through it was OK, not sure what it could be".  Well - that was not the right thing to say.  Obviously I was questioning their veracity.  They sent my luggage and laundry through one piece at a time.  I decided to just stand there and smile nice at that point.  Nothing found - they dug and zipped and unzipped and searched and sent the bag through - everything.

Never could find what they were looking for - so it was deemed "safe" at that point.

And it only took about 10 minutes - must have been a slow night for them.

Monday, October 16, 2006

Signs that make you go hmmm...

I've gotten to see some interesting signs in my travels:

Some things transcend language

I found this one tonight at my daughters soccer (football for those outside the US) field:

Nothing Personal

No personal dumping... Sort of limits the options there doesn't it.

Ok, so now you all know it does not take very much to amuse me at all.

Thursday, October 12, 2006

What it looks like from the other side...

Normally, I would post a photo like this:


That is, me taking a picture of "them".  This is what is looks from the other side:

A bunch

From left to right:

  • Graham Wood
  • Jonathan Lewis
  • Anjo Kolk
  • James Morle
  • Mogens Norgaard
  • Cary Millsap
  • Tom Kyte

As I spied Hans Driessen snapping photos of us, I snapped one of him... He sent it along last night to let me see what it looked like.

Looks like we all work in retail given the pile of T-shirts in front of us :)

Wednesday, October 11, 2006

I call them "coders"

They call them programmers.  Whatever you call them - not good :)

I don't think I was ever a programmer - I would like to think I was always a (database) Developer.  At least according to their metrics.

I remember way back when, I decided to go for a Masters in Information Science.  I was attending George Washington University and George Mason.  In addition to being taught absolutely nothing relevant to real work (although I did learn to write a compiler in Lisp - very interesting...) as it applied to me - I had to listen to a professor explain that "there is no such thing as a programmer/analyst" (the job title in vogue at that time for developers).  His theory was "there are analysts, they do not write code, they architect solutions, then there are coders, programmers - they take this perfection and make code from it".  I didn't agree then, I don't agree now.  He thought anyone that thought they were a programmer/ analyst was a really bad coder that couldn't think right.

Now, I'm not saying that 19 years ago, I was a really good "analyst" (what we call architects these days).  But I really disagreed with the thought that a developer could not be both a "writer of code" and someone with some smarts business wise - who could "architect" the system. 

And I still do - see that link, makes a good read.  I think they got it mostly right.

Software engineering, not yet a true profession, places no minimum standards and requirements upon practitioners. Until that changes, hobbyist programmers will remain free to masquerade as software development professionals.


KCOUG Training Day...

I'm currently at the KCOUG (Kansas City OUG) training day. I just did the "keynote" talk and then sat in on this guys presentation (first time I met Steven Feuerstein in person):

Me and Steven Feuerstein

He had a bit of a problem projecting with his laptop - just would not work at all. I ended up sharing my laptop with him and he drove his talk from there. That was a bummer because much like me - he uses live demonstrations to drive home a point, but since this was so last minute (in fact he started late because of this problem), it was all we could do to get the slides over. Hopefully, we'll have that fixed for the afternoon session.

It was a bummer to miss the demonstrations though, would have made the points he was making that much stronger. One thing he did I liked a bit and will have to play with myself was "drawing on the screen" while talking:

Steven Feuerstein slide

All of the red on there - added by mousing it in as he was talking. I thought it was pretty effective - not sure that I've seen it before (or if I have, it wasn't done in a useful fashion :). It worked well.

Anyway, it was the first time I met Steven, his talk was pretty good - he is an excellent presenter - very comfortable up there in front of the room. He rolled with the "lack of projection" issue easily enough - some people would freak out and not be able to continue or be so flustered by the problem it would affect their entire talk, for him - it was just a bump in the road.

Looking forward to the rest of the day - two more talks to go... Then off for Rhode Island, Boston and home.... (for a week, no travels next week)

Monday, October 09, 2006


I was emailing with a friend Kevin Closson recently and he wrote:

hey, on a different note, I saw your flickr and surfed there a bit. I have to say that you have a really good eye for photography...I especially enjoys those of Eastern Europe...very nice!

Nice compliment, have received others like it in the past about my photos (maybe it is true :), but it made me think for a moment.


How did I learn to photograph?  Well, it started with I was about 16.  I bought a Ricoh 35mm SLR camera.  And then I bought film.  Film cost money.  Developing film cost more money.  You thought about the pictures you were going to take.  You set them up, you spent time getting just the right shot.  You had to get it right the first time.  You were not going to get instantaneous feedback (heck, one hour developing was "new" back then - and really expensive).  Normally, I would have to mail my film in and wait for it to come back (days, or more likely week/weeks later).

So, the quality of the shots - back then, each one had to be of the highest possible quality.  You didn't get 2nd, 3rd, ... 50th tries.  You learned the fundamentals, you read a lot about the topic, you asked questions.  You tried to become as expert as possible.  All to get one good shot.

Now we have digital cameras.  You can take hundreds of shots, thousands actually, for nothing.  There is no penalty for the bad shot.  Getting it right the first time around - doesn't count.  Just take enough photos and something is bound to look OK.  Reminds me of a saying we used to use on the project (that made me quit my first ever job):

Even a blind squirrel occasionally finds a nut

We said that because the project was so "not scoped out", no one had a clue where to begin or what to do. 

I think some of my photos are good because I learned the fundamentals - I had to learn what went into making a good shot, what would work and what would not work.  There wasn't a second chance, you needed to do it right the first time around.  In order to take good photos, you need to know the fundamentals of setting up a shot.  You will not frequently find a nut by accident.

Then I thought about programming, developing software.  I didn't learn inside of a debugger.  I didn't write code "on they fly, making it up as we go along".  I had to write maintainable code - maintainable by me or others.  I had to write code that would not even run on the machine I was logged into (we submitted the code in JCL, compiled it on the other machine, then ran JCL to run the code).  I could not compile locally.  I could not execute locally.

Want to guess how many times my code would compile on the first or second try? 

Without debuggers (crutches I think they are mostly - they can be useful in some small set of cases but in general, they make you lazy), I had to write code defensively, it was heavily instrumented.  Sometimes the diagnostic output was much larger than the program output (many times actually). 

Want to guess how often that code would run "correctly" and if it didn't - it would immediately fail with something useful to diagnose the error with?  No "when others then null;" to be found in that stuff.

So, in the course of asking permission to quote Kevin's email, we got to discussing "fundamentals".  He wrote:

...funny (odd) you say that because I use that concept as a topic on occasion when I present technology. Not in a preaching way, other than preaching to the converted I suppose, but the idea that the fundamentals are being waxed over and lost seems to resonate with people. I know for certain platform fundamentals are not as interesting to people these days as they were in the open systems tech run-up of the 90s. Back then you could get DBAs / Developers / managers to sit in on platform discussion much more that these days and I'm quite certain it is a reflection of just how stinking overburdened these datacenter professionals are these days. Barely enough time to gain proficiency in their core interest, more less broaden their horizons. So, all too often that lack of low-level knowledge winds up biting folks...

I think that is the nail being hit on the head.  It aggravates me - how many people feel the need, no demand for themselves, "instant expertise", which is really "I am just good enough, probably".  Good things take time, see the 10 years comment there...

Sunday, October 08, 2006

Something new I learned this week...

I like to say from time to time "I learn something new about Oracle every day".  That is what is known as "hyperbole", but it really isn't that far from the truth.

Last week, I learned something about PL/SQL I was not aware of.  I was not aware of it because

  • I avoid global variables as much as possible
  • I would not be likely to have a construct such as the following example in my code

But, I am glad I know it now.  I can use this to develop "safer code" in the future having this knowledge.

Watch what happens to my parameter value in "private" below!

ops$tkyte%ORA9IR2> create or replace package my_pkg
2 as
3 procedure p;
4 end;
5 /
Package created.

ops$tkyte%ORA9IR2> create or replace package body my_pkg
2 as
3 g_global number;
5 procedure private( l_parameter in number )
6 is
7 begin
8 dbms_output.put_line( 'My Parameter value was ' || l_parameter );
9 g_global := 42;
10 dbms_output.put_line( 'My Parameter value is now ' || l_parameter );
11 end;
13 procedure p
14 is
15 begin
16 g_global := 55;
17 private(g_global);
18 end;
20 end;
21 /

Package body created.

ops$tkyte%ORA9IR2> exec my_pkg.p
My Parameter value was 55
My Parameter value is now 42

PL/SQL procedure successfully completed.

Neat eh?  It comes from the fact that IN parameters are passed by reference (as a pointer).  So, how can I defend from this?  Well, one approach is to never use globals (yah!  go for it, do it, you will never be sorry!!! truly, honestly, I assure you this is true).

The other approach, when FORCED to use globals, assign them to another variable OR cause a temporary to be created (|| '' for strings, +0 for dates, numbers...)

 13  procedure p
14 is
15 begin
16 g_global := 55;
17 private(g_global+0);
18 end;
20 end;
21 /

Package body created.

ops$tkyte%ORA9IR2> exec my_pkg.p
My Parameter value was 55
My Parameter value is now 55

PL/SQL procedure successfully completed.

But, if you just never use globals in any sense of the word you shall be immune from this.

I've been thinking of starting a "what I learned this week" sort of thread, maybe this will be the genesis of it all.

Needs a fact checker...

This article needs a fact checker!

A determined bidder has paid $576,000 (£307,857) for a model of the Starship Enterprise, legendary home of Captain Kirk and Mr Spock.


The six foot model of the Starship Enterprise, used extensively in the Star Trek: The Next Generation television series, was bought by an unidentified private US collector.

Everyone knows that Enterprise was the fictional (not sure legendary applies in the classic sense) home to Jean-Luc Picard and company!

Now, I like the show as much as anyone else - but to spend that much for a model, well, you must have way too much money to begin with :)

Saturday, October 07, 2006

This seems backwards...

For a browser anyway:

These efforts have been ongoing since last year and have been extremely successful but we can’t ensure 100% compatibility without your help. We need you to test and ensure your sites, extensions, and applications are ready for IE7. We strongly encourage you to do the following ASAP... (emphasis was original)

Not sure about that (also, I doubt they could ensure 100% compatibility even with our help - which they seem to imply they could... but I digress).

Be nice to let IE6 and IE7 run on the same computer (I know there are hacks to make it sometimes work - but the official answer is virtual PC, not reasonable for most end users). It would be nice if they had a "IE6 mode" (sort of like this Firefox extension gives Firefox an IE6 mode, hmm, wonder if that'll turn into an IE7 mode soon).

Speaking of firebox extensions, Lifehacker pointed me to this one. Very nice, I hit F2 now and I'm editing my asktom answers in gvim instead of a text area, I like that. Very useful.

No, I haven't tested asktom against IE7, no, I probably won't either. We'll just see what happens when this "upgrade" is unleashed against us all "very soon"

Thursday, October 05, 2006

Real Flying...

Yesterday was long - I did four sessions at the NOUG and by the time I was done, I was fairly tired.  It is amazing how hard on the feet standing that long and talking can be.

So, I got in my rented PT Cruiser and headed for Boston's Logan airport.  I got there to find my flight was delayed (big surprise) but only by 45 minutes.  And then by 1:15, then 1:45, then 2:15, then 2:30, then 3:00 hours.  Finally, after being in the airport for about 5 hours (I got there early, thought I'd grab a bite to eat at the legal seafood before my flight...) we boarded.

And this was the view:

Real Flying...

Great seats - every seat is a window seat, every seat is an aisle seat as well.  No bad seats (the bad seats are right by the toilet with the good smelling blue water) - since there were no toilets.  It is almost like you are flying the plane yourself as you lean out into the aisle there - nice view out the front of the plane.

Service was good, the same guys that checked the seatbelts, did the "here are the exits", flew the plane and helped with the luggage at each end.

The Augusta Maine airport is not very large, if you could not gather that from the above.

The neat thing about this flight (I was expecting all of this, the delay, the small plane and all - been there, done that) is the fact it is not a direct flight.  It "connects" through Rockland (to drop off a couple of people and deliver packages).  The Rockland airport is a single strip in the middle of a marsh, the terminal is a double wide trailer.  When you land (landing in one of these planes is "real flying", you get the full experience of motion), you do not pull off onto a siding and taxi back, they just spin the plane around and drive back down the runway (as there is nothing else there).

Oh well, after todays session - drive to Portland Maine and fly back to Washington and home.  Looking forward to it.

Wednesday, October 04, 2006

Almost making sense...

Dilbert is really good this morning. 

"They almost make sense!!!". 

Too true :)  If you don't read Scott Adams blog, you might give it a try.  Completely different from what you might expect.  I usually find the comments as interesting (if not more so) than the original article.

Tuesday, October 03, 2006

This hurts my head...

A negative database.  The "anti-matter" of databases.  To find out if some record exists, you have to find it out does not exist, if it does not exist in the negative database, it exists!

Not sure about that one yet.  Too many people having problems still with the positive databases out there :)


And as a side note, maybe I'll have to rethink that whole "no ad" concept I have.  Wow, that is a lot of cash.

Writing is harder than Coding

I loved this quote:

"So programming has the same relaxing quality as building stuff out of Lego. You know you're going to win in the end. Succeeding is simply a matter of defining what winning is, and possibly spending a lot of time getting there. Those can be hard, but not frightening.

Whereas writing is like painting. You don't have the same total control over the medium. In fact, you probably wouldn't want it."

I think I agree, I'd much rather write a nice programmatic solution to some problem - than write about doing it...


I'll be speaking that the Northeast Oracle Users Group in Waltham MA. Ahmed Alomari won't be able to make it so I'm picking up an extra session - will be adding "DML Error Logging" for an hour long talk in the early afternoon. 

I just finished driving down from Hartford CT to Waltham in my spiffy rental car:


Yes, that is a cherry red PT Cruiser.  Not exactly the car I would choose myself.  In fact at Hertz I was standing there looking at the car, looking at the sign that said it was my car, looking back at the car, looking at the sign - trying to decide if I wanted to try and change vehicles.  I ended up driving it away...  The security guy laughed as I pulled up - but only because I was the first person to be able to get the window down and not have to open the door to give him my license.  If you look at a picture of the dashboard you might understand why.  The window controls are way up there, under the clock.  Not a very standard location.

Anyway, it came with Sirius satellite radio - and I found channel 98.  An entire channel dedicated to the Rolling Stones.  Nothing but the Stones - old stuff.  It was sort of fun driving down in the funky car with the old Stones music blasting.

Small pleasures, doesn't take much...

Monday, October 02, 2006

Maybe they could use a database...

United just sent me an email, it started with:

Dear Mr Thomas J Kyte, 

Here's a special opportunity for you to earn or retain elite status
or even achieve a higher elite level for 2007!

Simply register, pay US$499 and earn double Elite Qualifying
Miles/Segments every time you fly a qualifying flight between
October 24 and December 16, 2006.

I found it funny for two reasons:

  • They should know I have attained their highest documented status for 2007 already.  Hence, this email doesn't really apply to me.  Maybe a database would help them out here?
  • "Simply register, pay US$499" - that just made me chuckle for some reason.  As if paying $499 is part of "simply registering" in all walks of life.

well, maybe for three reasons.  "Here is a special opportunity for you to spend just about a half of a thousand dollars for us to treat you better".  That opening paragraph was pretty eye catching after you read the second.

I guess it would be appealing to the people that otherwise would buy a round trip ticket to Hong Kong or somewhere far away (from here, the US) to keep their status.  Guess United read articles like that and said "hey, we can save the gas and still get the money" :)

Sunday, October 01, 2006

Bits and Bytes

I am back from 16 days abroad.  It is good to be back, even if it is for a short while.  While I was away, I collected a couple of links and here they are...

Photographing buildings and other things

I was surprised to learn that taking a photo of the Eiffel Tower at night, when lit up - would technically require a royalty if I published it.  So, I looked around and found this link.  Now obviously that only applies in the USA, but it was interesting none the less.  I can photograph buildings to my hearts content.

Teach Yourself Programming in 10 years

I don't know if it takes ten years, but it certainly will take more than "a week", or "24 hours".  Now, in defense of some of these books - like a "Learn Pascal in Three Days" - if you were a seasoned programmer, you could probably learn much of Pascal in three days and be useful with it.

But  then again, since when do seasoned programmers buy "Learn in three days" :)  They just dive in.

I definitely agree with the sentiment espoused there however.  It takes time to become really experienced at something, at anything.  TIME.  It really does.


This is almost certainly a joke.  But a pretty funny one!

Things we think we know...

I give a short keynote-ish type of talk "Things we think we know".  I'll have to verify these are all correct first, but they might make a nice addition.  Hey - this is going to be nice, by linking to it, people will read it and tell me if they are wrong :)  How easy is that...