Thursday, June 30, 2005

Vulgarity

Yes, I've deleted a comment on my blog. It used a very inappropriate analogy. It is gone and others like it will go as well. It just isn’t needed.

Some people might say “well, it isn’t like kids are coming to read this”.  Well, they would be wrong.  I have two kids, a 12 year old boy and a 9 year old girl. They don’t need to see it. Also, my wife glances at this from time to time and I don’t think there is a female out there that wouldn’t have been offended on some level by the comment.

Worst of all – my mom reads this. I really don’t need that.

You may have noticed or not – but I don’t use what some people term ‘colorful’ language.  I never have really, and I doubt I will. You can ask those that know me, but that kind of stuff just isn’t in my vocabulary. I cringe when I hear it, it totally turns me off. 

So, maybe someone thinks it prudish, I don’t think so. If you have to use crude analogies or foul language to make your point – that is something you need to work on.

 

Instrumentation

Talking about instrumentation of code and introducing two more blogs I've been reading on a regular basis. One of them describes a really nice utopia today.

Code instrumentation, what is it? To me, it is the fine art of making approximately every other line of your developed code “debug” of some sort.  Trace information.  With timestamps.  And meaningful information.

Code instrumentation, why is it? Because poor performance is not always a “database problem”.  It is many times an application issue and when the application is spread over 14 tiers of complexity, tracking down the bottleneck is grievously hard.  If you just whip together an application and throw it out there without any thought to monitoring it over time, be prepared to have poor performance and no clue as to why or where.

Commonly requested information – Tom, can you tell me what my average transaction response time is?  Answer: nope, no clue, not a single clue.  The only thing I can tell you from the database is on average how long individual bits of SQL might have taken.  I don’t know what a transaction is to you and besides, I would tell you only about the database component – no network, no application time, just the database.

And you know what, the end users are the ones that care and they need to have all of the time accounted for.  You know what the only thing is that can really give you good transaction response times over time?  The application.  Why?  Because it is the thing that knows what a transaction is, what a transaction does.

I’ve met many a developer that refuses to put this into their code.  “It’ll make it run slower”, “This is extra stuff I don’t need”, “It takes me longer to write”.  I have yet in 18 years to hear a valid reason why instrumentation should not be done.  I have only heard extremely compelling reasons why it must be done.

End users want to know, is the system going slower over time, if so, by how much.  Management wants to know, what are my transaction response times, how many transactions do we do, when is the busiest time, and so on.  People responsible to administering the system need to be able to identify where bottlenecks are, who needs to be brought in to look at something, who is responsible.

Without code instrumentation, you cannot answer any of those questions – not a single one.  Not accurately anyway.  (Well, maybe you can if you live in utopia!)

To the developers that say “this is extra code that will just make my code run slower” I respond “well fine, we will take away V$ views, there will be no SQL_TRACE, no 10046 level 12 traces, in fact – that entire events subsystem in Oracle, it is gone”.  Would Oracle run faster without this stuff?  Undoubtedly not.  It would run many times slower, perhaps hundreds of times slower.  Why?  Because you would have no clue where to look to find performance related issues.  You would have nothing to go on.  Without this “overhead” (air quotes intentionally used to denote sarcasm there), Oracle would not have a chance of performing as well as it does.  Because you would not have a change to make it perform well.  Because you would not know where even to begin.

So, a plea to all developers, get on the instrumentation bandwagon.  You’ll find your code easier to debug (note how Oracle doesn’t fly a developer to your site to debug the kernel, there is enough instrumentation to do it remotely).  You’ll find your code easier to tune.  You’ll find your code easier to maintain over time.  Also, make this instrumentation part of the production code, don’t leave it out!  Why?  Because, funny thing about production – you are not allowed to drop in “debug” code at the drop of a hat, but you are allowed to update a row in a configuration table, or in a configuration file!  Your trace code, like Oracle’s should always be there, just waiting to be enabled.

Tuesday, June 28, 2005

What wows you.

Someone wrote me: Had a suggestions for blog topic (if you are interested). The systems/applications that amaze/impress you the most, details and architecture (if possible). For example: At one of the Oracle events, Larry Ellison talked about the global credit system...a person buying a watch in another country and the merchant knowing in seconds if they should get the credit... What systems wow you the most...

That is easy – google.com.  Just look at this page, at the bottom:

Passionate about these topics? You should work at Google.

Not only does the technology impress me, the culture does too.  Not many companies would state it the way they just did.  What do I use of googles?  Well, I do most of my online shopping via froogle.google.com.  I typically find what I’m looking for – across many stores.  Then I use just good old www.google.com to research what I found.  I use http://maps.google.com/ more and more now (still use yahoo maps to find hotels though, need to convince myself that google has them all).  I use their http://www.google.com/alerts to scan the news for me.  I use http://images.google.com/ to search for images.  http://groups-beta.google.com/ to search the newsgroups.

The best news page for me on the web? http://news.google.com/ by far.  I personalized that with an Oracle news section.  Now that is cool.  And truly useful to boot. 

This blog you are reading – google owns the site. 

Their interface to me is a thing of joy.  Only thing I would change would be to use courier fonts :)  Seriously, they are not overdone at all.  Very plain, very simple, very usable, very easy.  Very smart.  I used to use yahoo news http://news.yahoo.com/ but they changed the interface – pop up little boxes (always getting in my way, they just appear – how annoying).  The layout got really busy.  Google news — very simple, very plain, very smart (in my opinion).

You should read about how they do lots of this.  A 15,000 node cluster — now that is cool (actually, it is probably very hot, they discuss cooling and other serious issues).  If I were just starting out again, that would be a place I’d be very interested in.

On a side note, I’d be interested myself in hearing what people think about this announcement that JDEV is free.  If you haven’t looked at it before and  you debug PLSQL, time to give it a look see.  I know it says “J”, but it does “P” as well.

Monday, June 27, 2005

No Silver Bullet, April 1987

No Silver Bullet: Essence and Accidents of Software Engineering by Frederick Brooks was published in Computer magazine in April 1987, just as I was graduating from college. I stumbled upon this paper recently and read it again. It is interesting to see how little has changed in the intervening 18 years.

It was fun to read a paper written in 1987 about the future of programming/software development. It is amazing how accurate/applicable it is today still.

I believe the hard part of building software to be the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation. We still make syntax errors, to be sure; but they are fuzz compared with the conceptual errors in most systems.

If this is true, building software will always be hard. There is inherently no silver bullet.

Isn’t that the case – we can make programming inexpensive, but software development is always hard.  Not because writing software is hard (it takes training, time, skilled labor) but because specifying what you want unambiguously, clearly, concisely is really hard.  And as the complexity, the scope of the systems grow beyond what a single individual can hold in their head – it gets nightmarishly hard.

In the section on “Hopes for the Silver”, I laughed at this quote:

Nevertheless, Ada will not prove to be the silver bullet that slays the software productivity monster. It is, after all, just another high-level language, and the biggest payoff from such languages came from the first transition  the transition up from the accidental complexities of the machine into the more abstract statement of step-by-step solutions.

Now, I wasn’t laughing at the fact that people thought Ada would be a silver bullet (they really did).  I wasn’t laughing at the Ada language (it was quite good actually – PL/SQL looks a ton like Ada).  I was laughing at the fact that if you replace Ada with a somewhat popular language of today – the statement still stands!

Object-oriented programming. Many students of the art hold out more hope for object-oriented programming than for any of the other technical fads of the day…. Nevertheless, such advances can do no more than to remove all the accidental difficulties from the expression of the design. The complexity of the design itself is essential, and such attacks make no change whatever in that. An order-of-magnitude gain can be made by object-oriented programming only if the unnecessary type-specification underbrush still in our programming language is itself nine-tenths of the work involved in designing a program product. I doubt it.

I doubt it too.  I remember in 1987 – people were thinking that software development would not exist as we know it in the 2000’s.  All of the software that ever needed to be developed would have been developed and we’d cobble together applications by assembling components.  We wouldn’t have programmers, but more of an army of assemblers, tying together all of these pre-existing bits and pieces into applications on the fly.  It didn’t really happen.  In fact, I see little real world reuse of software.  Sure, we have class libraries in the millions, but they are little more than the utility packages I used to develop in the past (we called it modular coding back then).  They solve bits and pieces of a problem but are not major components.  Maybe it is the environment I work in, but I don’t see huge amounts of reuse happening, not with business components anyway.

Artificial intelligence. Many people expect advances in artificial intelligence to provide the revolutionary breakthrough that will give order-of-magnitude gains in software productivity and quality. I do not. To see why, we must dissect what is meant by "artificial intelligence."

Ah, AI, it was going to save the day.  It along with Expert Systems and Natural Language Processing.  Any software worth its bits and bytes had the AI or Expert System tag associated with it.  Now, like CASE, people distance themselves from those terms, as the end product was so far removed from the promise.  Expert Systems actually worked though, they were just oversold.  They still exist today, you might even say there is an expert system in the database – it applies the ROT, rules of thumb, to the metrics and making sometimes reasonable suggestions based on it.

Graphical programming. A favorite subject for PhD dissertations in software engineering is graphical, or visual, programming the application of computer graphics to software design. Sometimes the promise held out by such an approach is postulated by analogy with VLSI chip design, in which computer graphics plays so fruitful a role. Sometimes the theorist justifies the approach by considering flowcharts as the ideal program-design medium and by providing powerful facilities for constructing them.

Nothing even convincing, much less exciting, has yet emerged from such efforts. I am persuaded that nothing will.

He got that right.  Back then, it was all about the exciting IDE’s that were coming out.  The integration of CASE with the programming environment.  Boxes, arrows, flows, automatic documentation, and so on.  Problem was, we couldn’t describe the problem we were trying to solve and it didn’t matter how pretty of an environment you had.  If you don’t understand the problem, all of the pictures in the world won’t help you.

Buy versus build. The most radical possible solution for constructing software is not to construct it at all.

That guy was pretty forward looking for his time.  Not many of the application vendors you know of today even existed back then.  The stuff we take for granted today, didn’t exist.  It was just being started, just being formed.  I think he got that one right, dead on.  There is the real code reuse, forget OO, just buy the stuff.

Anyway, it is an interesting read if you have the time.  If you were in the industry back then, it is a good “time travel” paper (see table 1, “Exciting vs. useful but unexciting software products”).  The main gist is at the bottom:

My first proposal is that each software organization must determine and proclaim that great designers are as important to its success as great managers are, and that they can be expected to be similarly nurtured and rewarded. Not only salary, but the perquisites of recognition office size, furnishings, personal technical equipment, travel funds, staff support must be fully equivalent.

Great designers, not coders.  People who can put it all together.  I think he got that right (but we still aren’t there yet).

Saturday, June 25, 2005

Asktom is going to be unavailable

On and off this weekend, there is a software upgrade of the firewall taking place. Just thought people trying to get there might come here to tell me about it.

Where in the world part II

A talk about talks and an opportunity to guess where in the world I was last Friday.

First for the guessing:

Where in the world

You can click on that to see larger images if you like, but can you guess where that windowless building is and what it is used for?  Talk about a special purpose building.  I thought it was interesting.  I had heard of it before I went to this location, and the sales rep that was with me thought I was really smart when I looked at it and said “oh, is that the such and such building that they use to do …”.  He said most people just look at it and say “what the heck is that for, must be the NSA or CIA or something and they don’t want us to see them”.

Anyway, I did a mini seminar yesterday with three of my favorite topics.

Topic 1, Things you know.  I need to update this one and have lots of good ideas for the future.  The main themes of the presentation are

  • Question Authority, especially ones like me that say “I have 17 years of Oracle experience”.  That generally means we still remember how it used to work in version 5.  Not relevant in the year 2005.  Be wary of the “I have decades of experience, just trust me”.  Make us show you.

  • It ain’t so much what you don’t know that hurts you, it is what you know that just ain’t so.  I add to that, it is what you know that just ain’t so, just ain’t always so, or just ain’t so anymore. 

It is sort of a fun presentation, hopefully for the audience as well as me.  The main goal – to make you think, not so much to teach you anything about Oracle, although I do cover a couple of myths, things we know that just ain’t so, ain’t so anymore or ain’t so all of the time.  That is the problem I have with rules of thumb, they just ain’t always so.  And you cannot apply them to a broad category of similar problems.

Consider this rule of thumb: Before you go grocery shopping, you should fill up, eat something.  That will prevent impulse buying of cookies and such.  Sounds like a great rule of thumb.  Let’s generalize that – to the liquor store.  Uh oh.  Not so sure you want to fill up on liquor before going to the liquor store. 

Topic 2, Efficient Schemas.  This one is based on chapter 7 of Effective Oracle by Design.  What I’d like to do someday soon is some a session for each chapter in that book — Effective SQL, Effective PL/SQL, and so on.  Anyway, Efficient Schemas walks through some of the overlooked features of the Oracle database from a physical implementation perspective.  I talk about simple things like using the right data type and why using a string or number to store a date is a horribly bad idea – the optimizer knows that between the DATES 31–Dec-2004 and 01–Jan-2005, there is just “one date”.  But between the string/numbers 20041231 and 20050101 there are lots of other strings or numbers.  It can get very confused.  There are lots of other reasons to use the right types and I talk about them as well.  Data integrity and where it belongs is a focus here as well.  When we get into the physical structures, I don’t hit the obvious like partitioning – but rather the not so used physical structures like hash clusters, index organized tables, clusters in general and the like.  We move on to indexing and in particular function based indexes and some unique uses of them such as selective uniqueness in a table (these columns must be unique when this is true) and indexing a where clause.  Lastly, we take a look compression — index key compression and table compression.

Topic 3, All about Binds (really, I call it “IT’S all about binds”).  Everything you wanted to know about binding.  Why it kills performance not to, uses gobs of memory not to, how your applications stand no chance of scaling without them.  How you can quintuple your throughput by using them in one case (5x the work using the same resources in the data load example I use — 10 users use as much CPU to insert 250,000 rows as 2 users not using bind variables do to insert 50,000 rows).  From there, I move onto the security aspects.  It still surprises me that so many people are not aware of SQL Injection!  It is a huge problem.  Then we look at bind variable peeking, cursor sharing and explore the differences between exact, force and similar.  One of my favorite topics.  I even discuss when not to use binds.  Believe it or not.

Anyway, I gave this session to the developers at ESPN.  Afterwards, they took me on a studio tour.  That was pretty cool.  This is what I would look like as a sportscaster:

Me as a sportscaster

Didn’t see any celebrities – but did get to see the first all digital, totally electronic studio.  No tapes, just bits and bytes.  Gave me some ideas for my desk at home.  Now, if I can just figure out how to get 4 monitors attached to my computer….

Thursday, June 23, 2005

Ok, could YOU do this

Very much off topic. One word, wow - Grandfather kills leopard with his hands

But in a similar thought, this struck home earlier this week, I have a 12 year old boy scout son and cannot imagine what they felt during the multi day search.

How to give an answer

In a recent blog we discussed how to ask a question, this time I would like to look at how to answer a question.

About 3 weeks ago, I talked about how to ask a question.  This time, I’d like to turn it around — how to answer a question.

Question: How can I let a developer see a package body for any package they are allowed to execute.  ALL_SOURCE won’t let them see it.

Potential answer: Grant them EXECUTE ANY PROCEDURE or CREATE ANY PROCEDURE.  (period)

Question asked, answer given. Perfect right?  That is the way it is supposed to work.  Someone asks and you just answer.  Problem is, the answer is totally dangerous.

Question: How do I create a table in a stored procedure?

Potential answer: Use EXECUTE IMMEDIATE ‘create table….’.  Remember you need to have CREATE TABLE granted directly to you in order to be able to create a table in a definers rights stored procedure

Sounds great, the person answering has thought of everything.  They even thought of the most commonly asked question with regards to execute immediate.

Or have they.  EXECUTE/CREATE ANY PROCEDURE certainly does allow you to see the package body in ALL_SOURCE.  Absolutely.  It answers the question.  It is 100% accurate.  It is true. 

It is really bad advice.

Really really bad.  Not just a little bad – big time bad.

Any privilege that has ANY in it is dangerous.  (really, think 500 times before granting it.  Here is a promise – if you are a DBA asked to grant an ANY privilege, you can pick any page on asktom and ask me “why might I think twice before granting this.  I don’t care what page it is, I’ll answer it). 

Give me EXECUTE ANY PROCEDURE (please!).  I’ll wreak havoc on your database.  Give me CREATE ANY PROCEDURE and I’ll be really dangerous (can you spell Trojan Horse – or worse?).

Creating a table in a stored procedure?  One needs to ask why first.  If the answer is “we did it like this in sqlserver”, then the answer is — Ok, tell me what you need to do and I’ll then tell you how to do that.  And you know what, the answer will be “we did it like this in sqlserver”. 

Point is – blindly answer a question with a technically correct, valid, true answer and you might just have really done more harm than good.  You have to think about the person on the other end of the communication link.

How much do they know?  If you say “but consider the implications”.  For example “grant them EXECUTE ANY PROCEDURE, but consider the implications” – are you off the hook?  I think not.  In order for someone to consider the implications they must know what the implications are.  You cannot assume that.  You need more information before answering OR you need to spell out the implications (I prefer the latter in all cases).

“Use execute immediate and get yourself CREATE TABLE to create tables in stored procedures.  But – consider the implications”.  If you are a sqlserver programmer, the implications are (as far as YOU know) “I’ll be able to create a table, cool”.  But to an Oracle programmer the implications are “DDL is hugely expensive”, “I have to drop the table and what happens when my procedure fails”, “DDL commits”, “I cannot use static SQL”, “This will hard parse like mad”, and so on.  The implications are profound and without exception bad, negative, disastrous. 

This was prompted by a recent Q&A on my site.  I don’t want to point to the exact example, it wasn’t that serious, the person was truly trying to be helpful.  I jumped on it, but that particular question is not the issue, just the catalyst.  It made me think.  It reminded me of this blog entry.  But with a twist.  It is not just about asking “why do you want to do that”, it is about answering with “here is an approach, BUT”.  Always “BUT”. 

About never assuming.  We cannot assume anything about the people reading our answers.  Ever. 

I guess it comes back to “I’ll speak pages where others would use paragraphs”.  Caveat Emptor?  I might end an answer with that, but it’ll be after explaining what the caveats are. 

I guess my point is, when we answer a question, we must assume the person on the other end doesn’t know the implications.  We should point them out.  Terseness is not good, details are.  If they skip the details – fine, but we should provide them.

Heck, the person that says “understand the implications” might not themselves understand them all.  At least by stating them, we can build on them, add to them.

Maybe this will help break down the DBA / Developer wall that exists.  Think about it – the DBA instead of saying “no” (arms folded of course) says “no, for the following reason”.  Developer instead of saying “I need this”, says “I need this because…”.  What we need is well thought out, thoughtful, complete, ideas.

Tuesday, June 21, 2005

Blink, Kites, Technology and RSS Feeds

I would like to talk about two books Blink and the Kite Runner as well a brief bit on technology of today and a cab ride and finish up the discussion on the RSS feed. From now on, I am going to make the title and the first sentence or two mean something in my blogs as that is what blogspot seems to put out, that will help you judge if you are interested enough to read the entire thing.

Just got back from ODTUG in New Orleans, first time on this most famous of streets
bourbon street sign I
I was impressed with the way that picture turned out, check it out.

Blink

A couple of weeks ago, someone suggested the book Blink by Malcolm Gladwell when I was talking about the excellent book Crimes against Logic.  Well, this Sunday I found myself in the airport having forgot to pack the book I meant to read – so I picked it up.  It is a very fast read (you can finish it over a round trip flight from Washington Dulles to New Orleans).  I found it to be a pretty interesting book. 

The premise is “thin slicing” as the author calls it to make snap decisions.  How do you in the first minute of meeting someone figure out if you are going to like them or not.  How do we make these snap decisions – and can we explain it.  I read it from the perspective of the skeptic, but didn’t really need to.  The thoughts in this book back up further the “there is a reason why”, that we can explain the cause and effects we see.  The hunches we have can be explained in mostly clinical terms.  There are reasons for things.

But it goes onto say there are times to stop and have discussions, analyze the information and there are times to make snap decisions.  The snap decisions come into play in life and death situations.  When you step off of the curb and the number five bus is bearing down on you, that is not the time to think about “well, if I continue forward – I might make it, if I jump back –  I probably make it out alive, if I do nothing and freeze, there is still a small chance that I’ll survive”.  You just jump, you act.  Most of the snap decisions in the book are those life and death situations.

I found it interesting that people are not very good at explaining how they make these snap decisions, after the fact – they have no idea how it actually happened, it just does. 

One of my favorite examples in the book involved Jam.  The premise being tested was “if setting up a stand with 6 types of Jam is good, doing it with 24 types of Jam will be even better since people like choice”.  What they discovered was 30% of the people bought something at the stand with 6 Jams, 3% at the stand with 24 Jams (all other things held constant).  Their conclusion – sure people profess to like lots of choice, but when faced with lots of choice we cannot decide.  How true is that.  Not long ago I was going to buy a new TV.  There were so many choices, High Def this, Something that, Flat screen, Square Tube, This technology and so on.  I ended up basically buying the cheapest one I could find.  I couldn’t commit to any of the more expensive ones, just too many things to choose from and I didn’t know what to pick.

I think you’ll like what he has to say about “Experts” and how their expertise clouds their vision; especially as things change.  The examples in the book are really clear – and I could relate to almost all of them.  I liked the Aeron chair example, how it flew in the face of conventional wisdom (I have one of those at home, they are excellent). 

All in all I would recommend this book to get a different perspective on things.

Kite Runner

This was recommended to me by Rachel Carmichael (frequent commenter on this blog).  I ordered it and read it on the flight to Las Vegas last week (another fairly quick read).  If you are looking for a recreational read, this is pretty good.  It was strange, usually you want to like the main character, but this main character is sort of pathetic.  You end up liking the book, but not liking the main character at all.  Only once in the entire book did he make the read, good decision without being forced to.  Too many good things happen to him, even though he doesn’t deserve it.  It was strange to enjoy the story, but really not like the guy the story was about.

Technology

I just got out of a cab from Boston's Logan Airport to the Oracle Burlington office.  When you get into a cab, you expect the cab driver will know how to get you there  – this guy didn’t and I didn’t have a clue either.  I didn’t have the number of anyone here either. 

30 years ago, 1975, what would you have done.  No cell phones, no nothing.  I don’t know what we would have done.

2005 however, I just pulled out my laptop and as we are driving in the general direction of Burlington MA, I fired up the aircard, got on the internet, went to Yahoo and got the exact directions. 

Technology, have to  love it.  Just building on the Sunday thoughts about how much has changed in the last 30 years.  In 1975, try telling someone “you’ll be in a car, going down the highway at 65 miles an hour, using a computer (computer?  what is that) on the internet (what – a world wide network? What is a network?) to get directions”. 

It’ll be even nicer when cabs come equipped with navigation systems to help them out. 

RSS Feeds

Philip Douglass had what I thought was an insightful comment on the RSS feeds.  The thrust was “hey, if you are going to just tease us – do it good, make the tease worth the bytes of bandwidth it consumes”.

That I can agree with 100%, so therefore….

From now on, I am going to make the title and the first sentence mean something in my blogs as that is what blogspot seems to put out, that will help you judge if you are interested enough to read the entire thing.

Sunday, June 19, 2005

30 years of technology

I just arrived at ODTUG, and the hotel room has a floor to ceiling window which I thought was pretty neat.  The view looks like this (click on the thumbnail to see the whole thing)
ODTUG

While travelling this morning, I was thinking about all of the technology changes that have taken place in the last 30 years.  The reason this came to mind was due to how I spent the day yesterday.  My 9 year old daughter Megan was in a soccer tournament (they are sweeping the tournament, they are 3 and 0 right now).  She called me to say she scored the only and winning goal in their last game.  Anyway, yesterday was filled with technology, stuff that didn’t exist when I was her age some 30 years ago.

The morning started by entering the destination into the navigation system.  When the kids asked “are we almost there”, we were able to answer “it is 7.1 more miles, estimated time to destination is 11 minutes”.  That is a far cry from when I would ask that question – then the answer was typically “if you ask that one more time, grrrr”.

So, we arrive at the soccer field and I check my email quick on the phone.  Had a couple of followups to the blog but that was about it. So we find out where we are supposed to go and get setup.  My wife had her camera,  my son Alan was doing the video

Alan taking video

and I was using my new camera.  Now – when I was a kid, pictures were a big deal.  You had a 110 camera, with a flash cube (4 flashes, throw out the cube, get a new one).  You had 12 or 24 pictures, each of which was going to cost money to develop and print.  You did not waste a shot.  I’m sitting there with 512meg of ram in the camera, about 250 hi-res pictures or 5,000 lo-res pictures.  And the cost per shot?  Nothing, free.  Take a bad picture?  So what, either ignore it or erase it.  So I was taking pictures left and right.  Very different from when I was a kid, when you might have 10 shots from an event.  I got some good ones – my favorite one from yesterday was this corner kick by Megan:

Megan Corner Kick

Now, in between games, we had some down time — over lunch.  We were not in any location we knew, no idea what fast food restaurants were there, what was available.  But I had my phone.  Quick search on Yahoo and we saw there were lots of Subway sandwich shops nearby.  It was decided we’d eat Subway for lunch.  Megan and my wife Lori wanted to stay and watch some of the other matches — Alan and I went for the food (just like the caveman days, right…). 

Anyway, we knew there was a Subway nearby, but didn’t know where it was or how to get there.  No problem, punch up fast food restaurants on the navigation system and choose the closest ones.  Turned on the satellite radio and away we go.  While getting the sandwiches, my phone rings.  In 2005, that is so normal – where ever you are, there you are with the phone (and now the internet on the phones and so on).  Well, in 1975 – if you were not at home, you were not getting a phone call. 

Imagine in 1975 being in the same situation, you are on a soccer field (it would have been baseball back then), with no idea of what is around you.  I forget what we used to do to find stuff back then!  Probably asked someone for an idea and directions.  So, anyway the phone rang, it was Lori calling from the soccer field (imagine, calling from the baseball field in 1975, people would have laughed at the very idea).  She wanted me to bring the camera bag when we returned.

After Megan and her team won the second game of the day, we got ready to leave.  We needed some money so we pulled up to the automated teller machine (ATM) and got some out.  There we go again.  In 1975, if you wanted money out of the bank, you actually went to the bank when it was open and used a human being to withdraw money.  ATM’s were just coming into vogue in the late late 70’s and early 80’s.  I remember going to college in Pittsburgh – and they were not connected into the national network yet, meaning, I could not use my bank card there and this was 1983.

Anyway, put it all together and we had

  • The navigation system in a car with more computing power than my first 3 or 4 computers put together
  • Digital cameras/video
  • Satellite Radio (listen to the same stations everywhere)
  • Cell Phones
  • Internet Access everywhere, anywhere
  • ATM’s for instant access

And more.  None of this was here 30 years ago, makes me curious to see what the next 30 will bring. (I did have to tell Alan he could not bring the laptop to the games.  He is teaching himself Macromedia Flash and wanted to program on the sidelines, sometimes it is best to leave it behind…)

And thanks to Richard Byrom for suggesting flickr.  That seems to work very well.  I like the thumbnails and you can pick the size picture you want to see.  Suggest the big size for that last shot above.

Saturday, June 18, 2005

Quicky update on RSS

It might be catching on.  Pete Finnigan writes…  If you are into security (and who shouldn’t be), this is a blog to check out as well.

Friday, June 17, 2005

Back to the beginning

My first entry here was about “toying with blogging”.  In that entry, I was thinking about doing some real debunking – finding the myths out there and bringing them to light.  I referenced the database debunkings site, another site I frequent.  Much to my surprise, Fabian Pascal actually contacted me about that.  That was sort of scary getting that email – at first I was thinking “uh-oh, what did I say wrong :)”.  But it turned out to be a good exchange and part of it has been posted on his site.

In the end, as you know if you’ve been following this blog, I decided not to go down that path.  I will continue to debunk on asktom when the question demands it, but I’m not out there looking.  Although, you don’t have to look too hard to find something not quite “right”.

But anyway, I thought it was pretty cool someone like that got in touch with me, and that he felt is relevant enough to put on his site.

Another update on a past blog.  I think I have beaten them.  The squirrels that is.  Here is a picture of the new bird feeder (I made the pictures small — 21k each — at the expense of quality). 

The neat thing is the wire cage on the outside — it is on springs:



When something heavy, like oh say – a squirrel, gets on it, the cage slides down the the metal flowers cover the holes above each perch:



It took the squirrels about a week to learn “no food here” and I haven’t see them since.  “I win”.  That and this bird feeder seems to attrack a better class of birds too, or maybe that is because the squirrels don’t come around as much (could be false causality, better be careful or someone will start debunking my bird feeder).

Thursday, June 16, 2005

Miscellaneous

Just some random stuff today.  On the RSS front, it seems about half of you use RSS news feeds and of that, about half like the teaser concept (keep it small) and 30% want the entire thing (22% don’t really care :)  Based on that, I’m going to keep the feed as it is.  My reasoning is

  • I don’t want to hog pages like orablogs, besides – it looks really “ugly” I think with just text after text after text.
  • The latency concept someone said doesn’t do it for me.  You want to talk latency, use a satellite like I do.  I myself want short teasers that I shift click on to open in new tabs when they grab me.
  • I use an aircard, sort of like ISDN on the road, a lot.  Big pages are slow to load, I’d rather have small.
  • I want to know who is interested.  Just counting how many RSS pulls I’ve had doesn’t give me that information.  So what — your RSS new aggregator pulled my article 15 times today, did you actually read it?  I want to know. 

So, for now, the teaser stays in place.  Same for asktom, the top 10, hot and new — they are all teasers.  You know how big those pages could get…

A followup I got in email regarding the“Where in the world” blog reads as follows:

 and nothing better be happening in vegas that NEEDS to stay in vegas!  lol  should i add that myself for everyone to read?????

Any guesses as to who wrote that one to me…  Guess that means my wife Lori reads this too (hi!).  She can get away with the instant message speak in email.  Actually, the saying should be “whatever money you bring to vegas, stays in vegas”.  That would be how I feel today….  At least it took 5 hours to lose it all last night :)

One a side note,    Imagine a toot-toot sound here, that would be the sound of my own horn blowing. You are now looking at the award winning asktom feature of Oracle Magazine. The American Society of Business Publication Editors picked my column for a Silver.  Makes me wish I could visit my high school English teachers, I’m pretty sure you could knock them over with a feather upon hearing that I wrote a couple of books – and have a regular column like that.  I was not the best of students in that particular line of study.  That probably explains why I have a really hard time with the words “then” and “than” (I’m trying – every time I write one or the other, I stop and stare at it for a while).

Today is the last day in Vegas, taking the red eye home tonight – just so I can spend two days at home before I leave again.  I’ll be at ODTUG on Sunday.  My flight leaves at 8:07am.  Appears I can only get to New Orleans early in the morning or late at night and since they have me talking from 5:30 to 7pm Sunday, early morning it is. 

Wednesday, June 15, 2005

RSS

RSS is really simple syndication, a way to “publish” new or modified content out.  Asktom has had RSS for quite a while and I’ve had it enabled on this blog since the very beginning.  I’m curious though as to how many people use RSS day to day?

 

Do you use RSS newsfeeds?
Current results

So vote and let’s see what we see.  I had a question on another blog:

 any chance you can give us full text RSS feeds?

This is in regards to the fact that I publish only a bit of the beginning of the blog — not the entire entry via RSS.  I did this for two reasons:

  • I’m curious as to how many people read it – unless the come to the page itself, I cannot get an accurate hit count.  The RSS feed doesn’t have the ability to be counted on blogspot.
  • Other sites aggregate blog entries.  I think it is nicer when there is just a teaser there, with a link to the real page.

So, another poll!  For those of you using RSS new aggregators, would you prefer it if I pumped out the entire page in the feed, or just a teaser?

 

Should the entire blog entry be published in the RSS feed?
Current results

And yes, everyone was right — it was Las Vegas in answer to the “Where in the World”.  My favorite followup was this one.  Got it down to the very hotel I was in first.  Very nice!

Tuesday, June 14, 2005

Where in the World

Just playing with the new camera, so, guess where I am this week.  That is the view out the window.  It is only 100F (40C), on the way up for the rest of the week. 

I’m here for the week to attend our sales kickoff for FY2006.  This morning we had retired General Tommy Franks talk.  It was pretty cool, he had a very nice presentation style.  He had a point, a message and delivered it in a very natural, conversational style.  Many laughs, I think it is important to incorporate some humor in the show.  If I’m talking for a while and haven’t gotten a laugh — I’m not doing so well. 

I enjoy watching others present and this week I’ll be taking it in for a change.  I try to pick up a tip or two from each one.  Sometimes the tip is “note to self: NEVER do ‘x’”.  Sometimes the tip is a good one.  Two people whom I’ve seen present and always enjoy are Jonathan Lewis and Cary Millsap.  They are similar but very different.  I’d be “not telling the truth” if I said I haven’t stolen a line or two from them.

The best line I’d love to steal was from Mogens Norgaard, but I won’t because it would be too blatant (it is so good, I could not take credit for it).  His last slide in a presentation was simply

ORA-03113

Too cool (wish I would have thought of it).  Anyway, on the flight out here I got a “minimeal” (airline speak for “we’ll sell you cheese and crackers for $5”).  In it was a wet-wipe.  Bored, I read the package.  Check out the directions.  The word “duh” comes to mind.  I looked at the package of nuts they gave me, it actually said “warning: this is packed in a factory that processes nuts” — no kidding.  Well, it was good for a laugh anyway.

Sunday, June 12, 2005

Guessing the Google

Google is perhaps my most “revered” site on the internet.  Their technology for the most part “just works”. 

And now someone has made a game of it!

If enough people read this and play the "guess the google" game, I expect I’ll be responsible for billions of dollars of lost productivity!  I stumbled on it last night and my son and I played for quite a while.  The concept is simple – they run a one word keyword search against images.google.com and create a montage out of the first 20 images.  You then have to beat the clock trying to guess what keyword they used.  You get points for guessing right and guessing fast.  You get 10 sets of montages and if you have one of the top ten high scores, your name goes on display.

Warning, you probably won’t be able to play it just once.

Saturday, June 11, 2005

VNC

VNC, a pretty simple piece of software but one that I use a lot.  VNC stands for virtual network computing.  I use it heavily at home and at work.

At home we have 8 computers together on the wireless network (with 5 people living here, you need that many at least, don’t you?). 

One of them is a cheap windows box, it has two purposes in life.  One is to be printer server to the family and the other is to accept the USB connection from the satellite and bridge that USB network device with a real NIC that is hooked into a wireless box.  It is that way because if I used a “real computer” (as I used to) that someone else used as a machine — it would become infested with spyware/viruses/whatever and bring the entire network down.  So, I’ve isolated this off and mange it myself so we stay connected and can print reliably.  It is a machine without a keyboard, mouse or monitor though, just sits in the corner and has blinking lights.  It starts the VNC server upon bootup and I use the VNC client to view the screen, move the mouse.  And I can do that from any of the computers in the house.  So, VNC lets me admin this box without having yet another monitor, keyboard, mouse, etc.  And without having to get up from the comfort of my office to do so.

Down in the basement, I have two ‘headless linux machines’ — one is a big Dell PowerEdge (multi Xeon cpu, lots of disk, plenty of ram).  The other is a nice big single CPU machine with a regular Intel P4.  Neither of these boxes have monitors or keyboards or mice, they just sit there.  (and they sit in the basement because the fans are, well, a tad noisy).  They are actually conventionally cabled together into a gig hub, which my computer upstairs in my office is likewise wired into.  The hub itself uploads to the wireless network.  This lets me move big files between these machines nicely — and have access to the wireless and internet whenever I need it.  These machines both start the VNC server as well.

On the big poweredge and the p4 – I run some VMWARE instances as well.  A RAC setup and a Windows setup (I might have 8 computers but there are generally 7 to 10 instances of Oracle running in my house at any given time).  The windows VM has my 8i, 9ir2 and 10gr1 instances for windows testing.  The RAC VM — well, has 10g RAC with ASM and OCFS on it.  The way I get to all of these “virtual machines” — VNC again.  So, my laptop screen is generally “some other system” (my laptop appears to be one of the linux boxes, or the RAC VM or the Windows VM).  The big monitor off to the side of my laptop is actually my laptop screen.  So, from one machine, I have full access to everything on many machines.  When I’m asked a question specific to Windows — and 8i, I connect to that VM downstairs and work out the solution.  I can cut and paste from the Windows VM directly into my browser running on the laptop. (the kids love to watch me drag a window from screen to screen too).  If you want, you can see what my desk setup actually looks like (I bought myself a real camera, the fidelity of this picture is much better than the last).  In that shot, the left screen is a linux desktop from the basement, the right screen is my local machine — where I was writing this.

The other thing we are using VNC for into the future is “monitoring”.  My son Alan is dying to have his computer in his room.  We have tentatively agreed to this arrangement after reports cards come out.  The rule will be however that he will run VNC on his machine and we will be peeking at his screen from time to time.  Just not knowing when we might peek (as we do as we walk through the room the computers are in now) will be motivation enough to not go/do things he knows he shouldn’t.

VNC, VMWARE, two things that have made life a bit better.  I use VNC at work too – very cool to start an install in a VNC window, close it up, drive home and reconnect to it.  That is another thing about VNC, you can just close the window (the VNC client window) and open it again later — everything is perfectly preserved.  I hate icon clutter so at most there will be one or two VNC clients running, I just close them and open them as needed.  An extremely handy way to do everything. 

If you use more than one computer regularly — or would like to, highly recommended.

Thursday, June 09, 2005

We Need Transporters

It is 7:41pm.  I’ve been here since 3:30pm.  I’ll be here for probably at least another hour.

Here is they lovely LaGuardia airport in New York.  I thought I had it made today — had an evening flight scheduled, but there was a 4:30 I could catch if I got there on time.  The cab driver was kind enough to oblige (I think I left my kidney on the highway on the way here, nothing like “get me to the airport as soon as you can” to suspend all care about suspension.  It was “bouncy”). 

Got to the airport, got my standby, made the list – get in the plane and into the very last row (well, it is near the toilet anyway) and settle in.  One hour later, after sitting on the plane – “so sorry folks, but the guy putting the bags in accidently went forward instead of reverse and sort of bent the frame of the plane.  We actually are not going to take you to Washington today”.  So, get booked on a later flight, which of course is delayed.  I’ll be working at home tomorrow I’ve decided.

LaGuardia is a neat airport.  What I found most fascinating about it is that the airport monitors play commercials showing the excellent shops and eateries, located conveniently just before you get to security!  What are they thinking, we are trapped on this side of “the search” with a ‘really good sandwich shop’ (I believe they make them a week in advance, to make sure they have them).  Just on the other side of security though are some apparently really good restaurants - but of course you cannot actually go there as it takes forever to come back and you “never know when the flight will be called, so stay in the boarding area”.

But I’m not bitter :)  I’m totally caught up on email, questions, the news, everything.  So, a silver lining there.  Oh goody — I just hit refresh on the Flight Status page, it is now a 9:50pm departure.  Definitely working at home tomorrow.

Just finished the NYC OUG, it was really good.  Part of the day was a Q&A panel, I always enjoy those.  Sometimes I feel like I delivered a good talk and this was one of them.  The audience was engaged, got a couple of laughs.  That always feels good.

Now I’m just wishing I stayed overnight (might get my wish if I’m not lucky though!).

We really do need transporters like Star Trek. 

Update, 9:51pm….

I got my wish, I’m back at the Hilton NYC for the night.  Everything got shutdown – bad weather back home.   Oh well, that’s travel.  Glad I had a very light day tomorrow, work from the hotel until my afternoon flight (nothing in the morning even).

Anger Management

This is something that always amuses and then irritates me.  The anger people exhibit during travel.  Sure, there are times to boil over and melt down, but when I see a business traveller just get out of control — that irks me.  We (business travellers) know — it is a fact, planes will be delayed, cancelled, whatever.  The people on the other side of the counter, they are not doing this to us, they would really rather we weren’t there (that the plane did land and did take off)

But the funny thing is - they do have power.  If you are nice to them, it’ll definitely come back to you 1000%.  There were some people today, well, enough said. 

I go into what I call travel mode.  I will get to where I’m getting when I get there and maybe I’ll have a conversation or two on the way there.   

Wednesday, June 08, 2005

The Straight Dope

The firefox extension “Stumble” is great for when you have a need to be distracted.  Last night I hit it and stumbled upon The Straight Dope by Cecil Adams.  Looks like he’s been doing the question and answer thing for considerably longer than I.  I read some of his classics.  Maybe I’ll pick up his method of answering (some might say — I already have from time to time!)

From the sound of one hand clapping we pick up on the great two part approach to answering a question.  That of, you are either a) an idiot and if so, here is the answer or b) you are a person of exceeding wit and ingenuity and if so, here is the answer.

You can move onto the question If all Chinese jumped at once, would cataclysm result?  The opening phrase says it all Amazing as it may seem, I am actually going to answer this incredibly retarded question. But first Uncle Cecil wishes to have a word with his devoted readers. “.  It gets better from there (me thinks that Cecil sometimes gets up on the wrong side of the bed!).  But he did actually attempt to answer the question at the end.

Be careful though, if you read this in a public place, people will wonder why you occasionally laugh out loud.  Take the question Why does Heinz ketchup say "57 varieties"? I only see one variety.   He begins “Fifty-seven varieties doesn't mean 57 varieties of ketchup, you dope, it means….”  You might enjoy the comment that ties the Illuminati in with Ketchup (way before Dan Brown).  I have noticed however that Cecil seems to not think too highly of Baltimore MD natives (my birthplace)!  Recurring theme of his.

Anyway, thought his stories were funny and the next time someone accuses me of being rude in an answer (most of it goes back to communication, but some days — I might be “terse”) I’m going to point them right to that site.  Ok, one more, the question Why is there no Channel One on Television?  He answers with “I'm glad we're finally getting around to the Fundamental Mysteries, Sandy. With some of the questions I get I have to ask, where are these people's PRIORITIES?” Ouch :)

I’d just like to say though — I get no dumb questions, I do not answer like that (really!).  I’m not comparing the questions I get to these questions.  I just found his site incredibly amusing!  I enjoy receiving and answering the questions on asktom.

Well, time about time to get in the plane to go to NYC.  Speaking tomorrow at the New York OUG.  Getting to do the “Things we know” talk.  It is one I enjoy doing every now and then — a bit funny (he hopes) and a bit technical.  And I get to involve the audience on stage.  Meeting some friends for dinner tonight – should be a good trip.

Tuesday, June 07, 2005

Creating Passionate Users

A blog about a blog, very recursive.  Cannot help it today. 

A couple of entries ago, I talked about the blogs I read and others suggested some.   I checked them out and one that I really like now is Creating Passionate Users.  Not just for the slam on the MS “passion” marketing campaign either (although I hadn’t thought about it the way they did, and am now in total agreement with them, you can read about it here).

Today though – I read their entry and was just saying “yes, yes, yes”.  The quotes in bold/italic are theirs from todays posting.

The better you get at something, the better it feels.

I know that feeling.  It is a two edge sword, sometimes if I cannot pick something up fast – I might drop it.  But, when you pick up something and get really good at it, it does feel better. 

The more knowledge and skill someone has, the more passionate they become, and the more passionate they become, the more they try to improve their knowledge and skills.

That is so true.  I think I’m fairly passionate about what I do – if you’ve seen me talk about the database and how to do things with it, you’ll know my arms move a lot, I walk around the front of the room, I get into it.

It's not what you sell, it's what you teach that matters. Or rather, what you help someone learn.

I like these guys.  Their articles are well written and they just grab you.  It seems so topical to me as well, just a couple of days ago – they wrote about writing, and books.  I immediately recognized the McGraw Hill page there – that is Oracle Press format.  One of the best comments I got from a reviewer on Expert One on One Oracle was from a guy who didn’t realize I was writing the book.  His comment was “this author better be careful because he is stealing a well know and very identifiable format — that of Tom Kytes on asktom.  It is a good style, but people will notice the similarity”.  That was perhaps the best comment I ever received, the style was identifiable enough that without knowing it was me, he recognized it.  I hope it carries through in the book.  I’m having Apress use a non-standard format (for them), in order to keep the original look and feel of Expert One on One.

It's more fun to know more. It's more fun to be able to do more. It's more fun to be able to help others do more.

That is how I feel about this Oracle stuff – when I see the light bulbs go on, when the connection between what you want to do and what you can do and how you can do it is made, that is perfection.

So... how are you helping your users/ customers/ students/ guests/ visitors/ clients/ members/ readers kick ass? What are you teaching them? How are you helping them get past the painful parts and into the better-than-drugs flow state?

There is my goal for the year, perfect… 

I suggest you check out that blog, set aside some amount of time though.  The articles are great, I really like their use of graphics here and there.  That is something I need to work on (I’m considered “graphically challenged”). 

Monday, June 06, 2005

Some Quick Plugs

My friend Sergio Leunissen has restarted his HTML DB blog and promises to keep it up to date.  Sergio has been working on HTML DB since it’s inception years ago.  If you are interested in HTML DB, that’ll be one to check out from time to time.

I’ve been using blogjet to write these articles with.  It works very well — it was a bit pricier than some of the other alternatives, but it does let you evaluate for 30 days with all features enabled (why why why do some products have evaluations with limited features?  How do I know if I like it if the most important features are disabled).  So for me, blogjet won (I tried a couple). 

Picked up firetune based on HJR’s advice.  It did speed things up for me simply by enabling caching of SSL pages.  My satellite proxy cannot/does not speed up SSL and for me that really helped. 

I changed from tabbrowser extensions to tab mix.  It is a safer plugin.  Added IEView  as well, very handy for making sure the pages look OK in that legacy browser.

And if you use yahoo mail, you might be very interested in ypops!  It is a http ‘proxy’ that pretends to be a POP3 email server running on your local pc, it takes POP, turns it into HTTP and gets the mail from yahoo.  Really neat.  I’m using it so that Thunderbird is my email client for all email now.  I don’t have to check in on Yahoo to pick up my Yahoo mail.  And since it works with proxy servers, I can use it inside or outside of a firewall.

Saturday, June 04, 2005

How to ask questions

Communication, it all comes back to plain old communication.  So many questions I receive assume way too much.  So, I thought I’d write about what needs to be said when you ask questions in any sort of forum.  And what needs to be provided.  That is — what you can do to make it easier and faster to

  • Get an answer. The questions with more left unsaid than said go ignored.
  • Get people interested in answering your question . It is almost like you are making a sale here!  “Hey, look at my question, I’m obviously interested in helping you give me an answer so pay attention to me”.
  • Not get frustrated.  Miscommunication leads to frustration, 100% of the time.

Remember, the internet seems speedy, and it is, but it is very much like a satellite connection.  I have virtually unlimited download bandwidth at home, but it is accompanied by extremely high latencies (turn around time)!  Forums are just like that.  If you don’t supply the needed information up front, you won’t get anything back other than requests for more information!  And then the issue of “context” creeps into play.  We’ll get into all of this in a moment.  So, here is what you need to do (in my opinion).

Provide the Setup data in a useful format

When asking a question on a forum, don’t do this:

ops$tkyte@ORA9IR2> desc orders_temp
 Name                    Null? Type
 ----------------------- ----- ---------- 
 ORDD_ORDER_NUMBER             NUMBER
 ORDD_GROSS_DOLLAR_EXT         NUMBER
 ORDD_PRD_KEY                  NUMBER
 ORDD_CAME_FROM_PRD_KEY        NUMBER
 ORDD_MASTER_RECORD            VARCHAR2(1)
 ORDD_PREPACK                  VARCHAR2(1)

 
ops$tkyte@ORA9IR2> select * from orders_temp;
 
ORDD_OR ORDD_GRO ORDD_PRD_KEY PRD_K O O
------- -------- ------------ ----- - -
7490000    84.24        58709       M Y

 206338 -3359.79              54582 N N

8 rows selected.

Because now someone interested in answering your question will have to turn that into a CREATE TABLE and INSERTS.  You need to take the time to do that.  (Cursed NULLS in there make it especially hard).  And if you have DATES in your data — by all means, to_date them with a DATE FORMAT!!!  Not everyone agrees with you on the default date mask!  And trying to figure out if that number of mmddyyyy or ddmmyyyy can drive you nuts.

create table orders_temp (
ordd_order_number number,
ordd_gross_dollar_ext number,
ordd_prd_key number,
ordd_came_from_prd_key number,
ordd_master_record varchar2(1),
ordd_prepack       varchar2(1))
/

INSERT INTO orders_temp
(ORDD_ … PREPACK)
VALUES
(7490000,84.24,58709,NULL,'M','Y')
/
That is how you need to pose this question  — the create table and the insert intos. And make sure it runs, really — don’t just type it in, actually RUN IT on your system.  Nothing more frustrating than a test case that needs debugging before the debugging of the actual problem can happen!

Provide everything you need

Remember, the person asking the question doesn’t have your comprehensive library of utility functions and everything.  In fact, they likely have nothing you have!  Make it self contained, make it stand alone.  The people reading your questions are not compilers!  If you post 50 lines of code and say ‘it fails’ — but we cannot actually run it on our systems, you will be out of luck.  This leads into the next concept, that of less is more.

Less is More

Really, this is 100% true.  Make the example small enough to fit on the back of a cocktail napkin.  Ask someone to debug 500 lines of your code and you’ll get no takers.  Trim the example down and two things will happen.  First, you’ll probably find your mistake yourself, I usually do!  Yes, it is true, if you pare the example way down, you many times will diagnose your own issues.  Before the internet and forums, this was called “debugging”.  First, we wrote really small routines (easy to digest) and second when something wasn’t working — we had to make it small to understand and be read by others.  When I first started developing, I had a 80x24 screen — 80 characters wide, 24 lines long.  The really senior people had 80x32 screens (and they thought they were really hot because of that).  Things had to be concise.  Second, once you do make it small and still don’t see the issue, the odds that someone will actually be interested enough to take a look go way up

But Be verbose

In your explanation of what is wrong.  If you say “I did this and it didn’t work, why”, you’ll probably just get a response along the lines of “my car won’t start, why?” – IF you get a response at all.  Remember, from where we are sitting — your monitor is very far away from us and crystal balls only work in movies.  You are very close to the problem, it has probably been consuming your attention for hours if not days.  To the people looking at your question however, it is a brand new thing.  They don’t have your insights and wealth of knowledge surrounding the problem.

Provide the Goal

Don’t post your code, your (failed) attempt and say “how can I do this”.  I get those all of the time.  The question goes along the lines of — I’m trying to get a report that looks like this [example here…] from data that looks like this [output of selects here].  I’m using this query [select ….] but it isn’t working.  Help!

There is a lot wrong with that.  First — make sure to provide the SCRIPT to create the table and data.  Second, when you show the outputs — explain “why they are the way they are”.  Don’t expect the person on the other end to be able to deduce it.  Remember, as just stated, you have been consumed by this problem for a while.  We have not.  What is obvious to you is “way out there” to us.  The assumptions you make, we don’t see them.  Understanding the model (the data model — primary, foreign, nullable, etc) and understanding the desired output is key.  Looking at your attempt that doesn’t work — only confuses us mostly!  It is hard to figure out what you might have been thinking as you wrote it — what assumptions about the SQL or PLSQL language for example you made that were wrong (and we don’t share).  That makes it impossible for us to read your failed attempt and figure out what is was meant to do.

And remember, if you cannot phrase your requirements, state your problem, in text – then you have not thought it through yet; you do not know what it is you have to accomplish!  So, if you say “it is really hard to explain”, that means you don’t understand the problem yourself — time to go back to the drawing board and think about it.  You need to be able to document what this thing is doing.

Context

I’m saying this for the third time.  You have been consumed by this problem for hours, days or weeks.  We have not.  When you followup in a threaded discussion, make sure to keep SOME of the context.  For example, on asktom when I get a question that needs more information — the system sends the person asking the question an email with a link back to the site.  The email says “use this link, I need more detail about <whatever>”.  Well, about one in ten people don’t just add additional information — they replace what WAS there with the new information.  Now I have to send them another email asking for the old material back!  I have no idea what the question was.  (that just made me think, maybe the email should say that and now it does, I just updated the template)

This is especially true in an email trail.  I get lots of email as I’m sure we all do.  When I get an email like “I tried what you said, but it did not work.”  — the only thing I can do is reply with “huh?”.  Leave some context, some bread crumbs in there. 

Less is More

This is not a cut and paste mistake, it is here twice.  People who have read my stuff before will understand this analogy — What bind variables are to application development, Less is More is to providing an example to be looked at. 

Make the example 500 lines long — chances are very slim anyone will look at it.  Make it 10 lines long and everyone will.  Do you really need a table with 300 columns to reproduce the issue?  Or would 5 columns do it.  Do these columns need to have insanely long mangled names (you have to love column names from SAP, they are the best).  Or could short — yet meaningful names be used?

Oh and make sure the example output matches the test case, nothing more frustrating then debugging a debugging session! 

Don’t Assume

Don’t assume the person on the other end of the network connection thinks, feels, defaults things, does things — the way you do.  They probably don’t.  State your assumptions.  Examples should be small.  Explanations big.

And don’t get bent out of shape if the person on the other end asks “WHY”.  Why means “you didn’t provide enough information” many times.  Other times Why means “I’ve been doing this stuff for a while, are you really sure you want to make this mistake”.  Don’t get upset of the person trying to help gives you a piece of advice you think was insulting.  It probably wasn’t.  They don’t know you, you don’t know them.  They have no idea how experienced you are (or aren’t).  They don’t know what you tried (or haven’t tried).  Their suggestion might have been obvious to you (and hence ‘insulting’), but not so obvious to them.  Don’t get offended, until both people know who they are talking to — no assumptions about level of knowledge can be made.  And remember, we all overlook the obvious sometimes – I do, you do, we all do – so sometimes stating the obvious is the solution.  So, don’t be insulted.
 

Friday, June 03, 2005

15 minutes

Perhaps the easiest installation I ever did.  15 minutes, not a single issue.

[tkyte@desktop tkyte]$ sqlplus /

SQL*Plus: Release 10.2.0.0.0 - Beta on Fri Jun 3 09:38:53 2005
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
 
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.0.0 - Beta
With the Partitioning, OLAP and Data Mining options
 
ops$tkyte@ORA10GR2> select * from v$version;
 
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.0.0 - Beta
PL/SQL Release 10.2.0.0.0 - Beta
CORE    10.2.0.0.0      Beta
TNS for Linux: Version 10.2.0.0.0 - Beta
NLSRTL Version 10.2.0.0.0 - Beta
 

Thursday, June 02, 2005

To Do

Ever feel like there is too much to do and not enough time?  That defines this week.  Yesterday was a very long day — started at 6am and finished at midnight.  Did the GROUG (Greater Richmond OUG) in Richmond VA last night.  Got out at 9pm, got home at midnight.  It was a good visit though, excellent turnout for a new user group.

Still left to do tomorow…

  • install 10g R2, it has been sitting on my desktop for two days now…
  • write magazine column that is due June 3rd (that would be — now)
  • finish chapter 12 (new chapter that didn’t exist before on datatypes – who would have thought there is so much to say about datatypes..)
  • edit chapter 6 (well, that’ll be this weekend)…
  • Morning interview with DBAZine (will be having a “podcast” in the near future)
  • check out the comments on the blog for the last two days that I’ve been ignoring

that is in addition to the long term tasks of

  • do chapters 13, 14, 15 (that’ll be the end of volume I,  new stuff for data unload/load, new stuff for parallel chapter that never exists and update partitioning to 2005)
  • update seminar material
  • and lots of travel this month.

Anyway, the book volume I is nearing the first round of drafts, it turned out like this (somewhere around 500–600 pages, although it might go higher):

Chapter 1: (general) Being Successful with Databases
Chapter 2: Architecture Introduction
Chapter 3: (architecture) Files Files Everywhere
Chapter 4: (architecture) Memory Structures
Chapter 5: (architecture) Oracle Processes
Chapter 6: (architecture) Locking and Latching
Chapter 7: (architecture) Concurrency Control
Chapter 8: Transactions
Chapter 9: (architecture) Redo and Undo
Chapter 10: (data) Tables
Chapter 11 (data) Indexes
Chapter 12 (data) Datatypes
Chapter 13 (data) Partitioning
Chapter 14 (architecture) Parallelism
Chapter 15 (tools) data loading/unloading

and it’ll come with a CD of the first version.  We do want to index it online, need to investigate the best way to accomplish that.  YAP — Yet another project to add to the list.